+require_once('include/bb2diaspora.php');
+require_once('include/contact_selectors.php');
+
+
+function diaspora_dispatch_public($msg) {
+
+ $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN ( SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s' ) AND `account_expired` = 0 ",
+ dbesc(NETWORK_DIASPORA),
+ dbesc($msg['author'])
+ );
+ if(count($r)) {
+ foreach($r as $rr) {
+ logger('diaspora_public: delivering to: ' . $rr['username']);
+ diaspora_dispatch($rr,$msg);
+ }
+ }
+ else
+ logger('diaspora_public: no subscribers');
+}
+
+
+
+function diaspora_dispatch($importer,$msg) {
+
+ $ret = 0;
+
+ $parsed_xml = parse_xml_string($msg['message'],false);
+
+ $xmlbase = $parsed_xml->post;
+
+ if($xmlbase->request) {
+ $ret = diaspora_request($importer,$xmlbase->request);
+ }
+ elseif($xmlbase->status_message) {
+ $ret = diaspora_post($importer,$xmlbase->status_message);
+ }
+ elseif($xmlbase->comment) {
+ $ret = diaspora_comment($importer,$xmlbase->comment,$msg);
+ }
+ elseif($xmlbase->like) {
+ $ret = diaspora_like($importer,$xmlbase->like,$msg);
+ }
+ elseif($xmlbase->retraction) {
+ $ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
+ }
+ elseif($xmlbase->photo) {
+ $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
+ }
+ else {
+ logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true));
+ }
+ return $ret;
+}
+
+function diaspora_get_contact_by_handle($uid,$handle) {
+ $r = q("SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `addr` = '%s' LIMIT 1",
+ dbesc(NETWORK_DIASPORA),
+ intval($uid),
+ dbesc($handle)
+ );
+ if($r && count($r))
+ return $r[0];
+ return false;
+}
+
+function find_diaspora_person_by_handle($handle) {
+ $update = false;
+ $r = q("select * from fcontact where network = '%s' and addr = '%s' limit 1",
+ dbesc(NETWORK_DIASPORA),
+ dbesc($handle)
+ );
+ if(count($r)) {
+ // update record occasionally so it doesn't get stale
+ $d = strtotime($r[0]['updated'] . ' +00:00');
+ if($d > strtotime('now - 14 days'))
+ return $r[0];
+ $update = true;
+ }
+ require_once('include/Scrape.php');
+ $r = probe_url($handle, PROBE_DIASPORA);
+ if((count($r)) && ($r['network'] === NETWORK_DIASPORA)) {
+ add_fcontact($r,$update);
+ return ($r);
+ }
+ return false;
+}
+