return;
}
- $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 AND `account_removed` = 0 ",
+ $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 AND `account_removed` = 0 ",
dbesc(NETWORK_DIASPORA),
dbesc($msg['author'])
);
-function diaspora_dispatch($importer,$msg) {
+function diaspora_dispatch($importer,$msg,$attempt=1) {
$ret = 0;
$ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
}
elseif($xmlbase->photo) {
- $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
+ $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
}
elseif($xmlbase->conversation) {
$ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
}
-
+
function diaspora_request($importer,$xml) {
$a = get_app();
if(! $sender_handle || ! $recipient_handle)
return;
-
+
$contact = diaspora_get_contact_by_handle($importer['uid'],$sender_handle);
if($contact) {
return;
}
-
+
$ret = find_diaspora_person_by_handle($sender_handle);
}
function diaspora_post_allow($importer,$contact) {
- if(($contact['blocked']) || ($contact['readonly']))
+
+ // perhaps we were already sharing with this person. Now they're sharing with us.
+ // That makes us friends.
+ // Normally this should have handled by getting a request - but this could get lost
+ if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
+ q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval(CONTACT_IS_FRIEND),
+ intval($contact['id']),
+ intval($importer['uid'])
+ );
+ $contact['rel'] = CONTACT_IS_FRIEND;
+ logger('diaspora_post_allow: defining user '.$contact["nick"].' as friend');
+ }
+
+ if(($contact['blocked']) || ($contact['readonly']) || ($contact['archive']))
return false;
if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND)
return true;
foreach($matches as $mtch) {
if(strlen($str_tags))
$str_tags .= ',';
- $str_tags .= '@[url=' . $mtch[1] . '[/url]';
+ $str_tags .= '@[url=' . $mtch[1] . '[/url]';
}
}
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
$datarray['wall'] = 0;
+ $datarray['network'] = NETWORK_DIASPORA;
$datarray['guid'] = $guid;
$datarray['uri'] = $datarray['parent-uri'] = $message_id;
$datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
$datarray['private'] = $private;
$datarray['parent'] = 0;
+ $datarray['plink'] = $plink;
$datarray['owner-name'] = $contact['name'];
$datarray['owner-link'] = $contact['url'];
//$datarray['owner-avatar'] = $contact['thumb'];
$message_id = item_store($datarray);
- if($message_id) {
- q("update item set plink = '%s' where id = %d limit 1",
- dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
- intval($message_id)
- );
- }
+ //if($message_id) {
+ // q("update item set plink = '%s' where id = %d limit 1",
+ // dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
+ // intval($message_id)
+ // );
+ //}
return;
}
}
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
$datarray['wall'] = 0;
+ $datarray['network'] = NETWORK_DIASPORA;
$datarray['guid'] = $guid;
$datarray['uri'] = $datarray['parent-uri'] = $message_id;
$datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
$datarray['private'] = $private;
$datarray['parent'] = 0;
+ $datarray['plink'] = $plink;
$datarray['owner-name'] = $contact['name'];
$datarray['owner-link'] = $contact['url'];
$datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']);
- if (intval(get_config('system','new_share'))) {
- $prefix = "[share author='".str_replace("'", "'",$person['name']).
+ if (!intval(get_config('system','wall-to-wall_share'))) {
+ $prefix = "[share author='".str_replace(array("'", "[", "]"), array("'", "[", "]"),$person['name']).
"' profile='".$person['url'].
"' avatar='".((x($person,'thumb')) ? $person['thumb'] : $person['photo']).
- "' link='".$orig_url."']";
+ "' link='".str_replace(array("'", "[", "]"), array("'", "[", "]"),$orig_url)."']";
$datarray['author-name'] = $contact['name'];
$datarray['author-link'] = $contact['url'];
$datarray['author-avatar'] = $contact['thumb'];
$message_id = item_store($datarray);
- if($message_id) {
- q("update item set plink = '%s' where id = %d limit 1",
- dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
- intval($message_id)
- );
- }
+ //if($message_id) {
+ // q("update item set plink = '%s' where id = %d limit 1",
+ // dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
+ // intval($message_id)
+ // );
+ //}
return;
return;
}
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
$datarray = array();
-
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
$datarray['wall'] = 0;
+ $datarray['network'] = NETWORK_DIASPORA;
$datarray['guid'] = $guid;
$datarray['uri'] = $datarray['parent-uri'] = $message_id;
$datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
$datarray['private'] = $private;
$datarray['parent'] = 0;
+ $datarray['plink'] = $plink;
$datarray['owner-name'] = $contact['name'];
$datarray['owner-link'] = $contact['url'];
//$datarray['owner-avatar'] = $contact['thumb'];
$datarray['author-link'] = $contact['url'];
$datarray['author-avatar'] = $contact['thumb'];
$datarray['body'] = $body;
-
+
$datarray['app'] = 'Diaspora/Cubbi.es';
$message_id = item_store($datarray);
- if($message_id) {
- q("update item set plink = '%s' where id = %d limit 1",
- dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
- intval($message_id)
- );
- }
+ //if($message_id) {
+ // q("update item set plink = '%s' where id = %d limit 1",
+ // dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
+ // intval($message_id)
+ // );
+ //}
return;
$datarray['contact-id'] = $contact['id'];
$datarray['type'] = 'remote-comment';
$datarray['wall'] = $parent_item['wall'];
+ $datarray['network'] = NETWORK_DIASPORA;
$datarray['gravity'] = GRAVITY_COMMENT;
$datarray['guid'] = $guid;
$datarray['uri'] = $message_id;
$datarray['tag'] = $str_tags;
// We can't be certain what the original app is if the message is relayed.
- if(($parent_item['origin']) && (! $parent_author_signature))
+ if(($parent_item['origin']) && (! $parent_author_signature))
$datarray['app'] = 'Diaspora';
$message_id = item_store($datarray);
}
-function diaspora_photo($importer,$xml,$msg) {
+function diaspora_photo($importer,$xml,$msg,$attempt=1) {
$a = get_app();
dbesc($status_message_guid)
);
if(! count($r)) {
- logger('diaspora_photo: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
+ if($attempt <= 3) {
+ q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
+ intval($importer['uid']),
+ dbesc(serialize($msg)),
+ intval($attempt + 1)
+ );
+ }
+ logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
return;
}
$arr['uri'] = $uri;
$arr['uid'] = $importer['uid'];
$arr['guid'] = $guid;
+ $arr['network'] = NETWORK_DIASPORA;
$arr['contact-id'] = $contact['id'];
$arr['type'] = 'activity';
$arr['wall'] = $parent_item['wall'];
$arr['author-name'] = $person['name'];
$arr['author-link'] = $person['url'];
$arr['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
-
+
$ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
$alink = '[url=' . $parent_item['author-link'] . ']' . $parent_item['author-name'] . '[/url]';
$plink = '[url=' . $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $parent_item['id'] . ']' . $post_type . '[/url]';
if($name === '') {
$name = $handle_parts[0];
}
- if(strpos($image_url, $handle_parts[1]) === false) {
+
+
+ if( preg_match("|^https?://|", $image_url) === 0) {
$image_url = "http://" . $handle_parts[1] . $image_url;
}
$myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
// $theiraddr = $contact['addr'];
- // Diaspora doesn't support threaded comments
- /*if($item['thr-parent']) {
+ // Diaspora doesn't support threaded comments, but some
+ // versions of Diaspora (i.e. Diaspora-pistos) support
+ // likes on comments
+ if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
dbesc($item['thr-parent'])
);
}
- else {*/
+ else {
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
intval($item['parent']),
intval($item['parent'])
);
- //}
+ }
if(count($p))
$parent = $p[0];
else
$body = $item['body'];
$text = html_entity_decode(bb2diaspora($body));
- // Diaspora doesn't support threaded comments
- /*if($item['thr-parent']) {
+ // Diaspora doesn't support threaded comments, but some
+ // versions of Diaspora (i.e. Diaspora-pistos) support
+ // likes on comments
+ if($item['verb'] === ACTIVITY_LIKE && $item['thr-parent']) {
$p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1",
dbesc($item['thr-parent'])
);
}
- else {*/
+ else {
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
// The only item with `parent` and `id` as the parent id is the parent item.
intval($item['parent']),
intval($item['parent'])
);
- //}
+ }
if(count($p))
$parent = $p[0];
else
$return_code = 0;
}
else {
- if(! intval(get_config('system','diaspora_test'))) {
+ if (!intval(get_config('system','diaspora_test'))) {
post_url($dest_url . '/', $slap);
$return_code = $a->get_curl_code();
- }
- else {
+ } else {
logger('diaspora_transmit: test_mode');
return 200;
}
}
-
+
logger('diaspora_transmit: ' . $logid . ' returns: ' . $return_code);
if((! $return_code) || (($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {