revise the photo activity a bit so that we always have a valid activity body. Several network connectors can get empty posts or posts that don't contain any reference whatsoever to the actual photo. Since this can cause duplicate images on our own site, just provide the activity summary and any included body text to the activity by default. Provide a function to enhance this activity with an actual photo which can be applied on demand for any network connectors that desire it. Otherwise they'll just get a link to the photo in the activity statement - which is better than an empty post. Have applied this "add actual photo to the post" function to both Diaspora and RSS feeds. Also provide the album as the activity target.
This commit is contained in:
parent
ba463afbdc
commit
2924b9182e
@ -305,15 +305,6 @@ function bb2diaspora_itembody($item, $force_update = false) {
|
||||
|
||||
$matches = array();
|
||||
|
||||
//if we have a photo item just prepend the photo bbcode to item['body']
|
||||
$is_photo = (($item['obj_type'] == ACTIVITY_OBJ_PHOTO) ? true : false);
|
||||
if($is_photo) {
|
||||
$object = json_decode($item['object'],true);
|
||||
if($object['bbcode']) {
|
||||
$item['body'] = (($item['body']) ? $object['bbcode'] . "\r\n" . $item['body'] : $object['bbcode']);
|
||||
}
|
||||
}
|
||||
|
||||
if(($item['diaspora_meta']) && (! $force_update)) {
|
||||
$diaspora_meta = json_decode($item['diaspora_meta'],true);
|
||||
if($diaspora_meta) {
|
||||
@ -333,16 +324,7 @@ function bb2diaspora_itembody($item, $force_update = false) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// since November 2015 linked photo items don't or at least may not have a body. Recreate one.
|
||||
|
||||
if(($item['verb'] === ACTIVITY_POST) && ($item['obj_type'] === ACTIVITY_OBJ_PHOTO) && (! trim($item['body']))) {
|
||||
$j = json_decode($item['object'],true);
|
||||
if($j) {
|
||||
$item['body'] = $j['bbcode'];
|
||||
$item['sig'] = '';
|
||||
}
|
||||
}
|
||||
create_export_photo_body($item);
|
||||
|
||||
$newitem = $item;
|
||||
|
||||
|
@ -3950,15 +3950,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
|
||||
return '<at:deleted-entry ref="' . xmlify($item['mid']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
|
||||
|
||||
|
||||
// since November 2015 linked photo items don't or at least may not have a body. Recreate one.
|
||||
|
||||
if(($item['verb'] === ACTIVITY_POST) && ($item['obj_type'] === ACTIVITY_OBJ_PHOTO) && (! trim($item['body']))) {
|
||||
$j = json_decode($item['object'],true);
|
||||
if($j) {
|
||||
$item['body'] = $j['bbcode'];
|
||||
$item['sig'] = '';
|
||||
}
|
||||
}
|
||||
create_export_photo_body($item);
|
||||
|
||||
if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
|
||||
$body = fix_private_photos($item['body'],$owner['uid'],$item,$cid);
|
||||
|
@ -292,17 +292,35 @@ function photo_upload($channel, $observer, $args) {
|
||||
$tag = (($r2) ? '[zmg=' . $width . 'x' . $height . ']' : '[zmg]');
|
||||
}
|
||||
|
||||
$body = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
|
||||
$author_link = '[zrl=' . z_root() . '/channel/' . $channel['channel_address'] . ']' . $channel['channel_name'] . '[/zrl]';
|
||||
|
||||
$photo_link = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']' . t('a new photo') . '[/zrl]';
|
||||
|
||||
$album_link = '[zrl=' . z_root() . '/photos/album/' . bin2hex($album) . ']' . $album . '[/zrl]';
|
||||
|
||||
$activity_format = sprintf(t('%1$s posted %2$s to %3$s','photo_upload'), $author_link, $photo_link, $album_link);
|
||||
|
||||
$summary = $activity_format . "\n\n" . (($args['body']) ? $args['body'] . "\n\n" : '');
|
||||
|
||||
$obj_body = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash . ']'
|
||||
. $tag . z_root() . "/photo/{$photo_hash}-{$scale}." . $ph->getExt() . '[/zmg]'
|
||||
. '[/zrl]';
|
||||
|
||||
// Create item object
|
||||
$object = array(
|
||||
'type' => ACTIVITY_OBJ_PHOTO,
|
||||
'title' => $title,
|
||||
'id' => rawurlencode(z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash),
|
||||
'link' => $link,
|
||||
'bbcode' => $body
|
||||
'type' => ACTIVITY_OBJ_PHOTO,
|
||||
'title' => $title,
|
||||
'created' => $p['created'],
|
||||
'edited' => $p['edited'],
|
||||
'id' => rawurlencode(z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $photo_hash),
|
||||
'link' => $link,
|
||||
'body' => $obj_body
|
||||
);
|
||||
|
||||
$target = array(
|
||||
'type' => ACTIVITY_OBJ_ALBUM,
|
||||
'title' => (($album) ? $album : '/'),
|
||||
'id' => rawurlencode(z_root() . '/photos/' . $channel['channel_address'] . '/album/' . bin2hex($album),
|
||||
);
|
||||
|
||||
// Create item container
|
||||
@ -314,9 +332,12 @@ function photo_upload($channel, $observer, $args) {
|
||||
|
||||
if($item['mid'] === $item['parent_mid']) {
|
||||
|
||||
$item['body'] = (($object) ? $args['body'] : $body . "\r\n" . $args['body']);
|
||||
$item['obj_type'] = (($object) ? ACTIVITY_OBJ_PHOTO : '');
|
||||
$item['object'] = (($object) ? json_encode($object) : '');
|
||||
$item['body'] = $args['body'];
|
||||
$item['obj_type'] = ACTIVITY_OBJ_PHOTO;
|
||||
$item['object'] = json_encode($object);
|
||||
|
||||
$item['tgt_type'] = ACTIVITY_OBJ_ALBUM;
|
||||
$item['target'] = json_encode($target);
|
||||
|
||||
if($item['author_xchan'] === $channel['channel_hash']) {
|
||||
$item['sig'] = base64url_encode(rsa_sign($item['body'],$channel['channel_prvkey']));
|
||||
@ -370,14 +391,16 @@ function photo_upload($channel, $observer, $args) {
|
||||
$arr['deny_cid'] = $ac['deny_cid'];
|
||||
$arr['deny_gid'] = $ac['deny_gid'];
|
||||
$arr['verb'] = ACTIVITY_POST;
|
||||
$arr['obj_type'] = (($object) ? ACTIVITY_OBJ_PHOTO : '');
|
||||
$arr['object'] = (($object) ? json_encode($object) : '');
|
||||
$arr['obj_type'] = ACTIVITY_OBJ_PHOTO;
|
||||
$arr['object'] = json_encode($object);
|
||||
$arr['tgt_type'] = ACTIVITY_OBJ_ALBUM;
|
||||
$arr['target'] = json_encode($target);
|
||||
$arr['item_wall'] = 1;
|
||||
$arr['item_origin'] = 1;
|
||||
$arr['item_thread_top'] = 1;
|
||||
$arr['item_private'] = intval($acl->is_private());
|
||||
$arr['plink'] = z_root() . '/channel/' . $channel['channel_address'] . '/?f=&mid=' . $arr['mid'];
|
||||
$arr['body'] = (($object) ? $args['body'] : $body . "\r\n" . $args['body']);
|
||||
$arr['body'] = $summary;
|
||||
|
||||
|
||||
// this one is tricky because the item and the photo have the same permissions, those of the photo.
|
||||
@ -402,7 +425,7 @@ function photo_upload($channel, $observer, $args) {
|
||||
|
||||
$ret['success'] = true;
|
||||
$ret['item'] = $arr;
|
||||
$ret['body'] = $body;
|
||||
$ret['body'] = $obj_body;
|
||||
$ret['resource_id'] = $photo_hash;
|
||||
$ret['photoitem_id'] = $item_id;
|
||||
|
||||
|
@ -1416,20 +1416,14 @@ function format_event($jobject) {
|
||||
function prepare_body(&$item,$attach = false) {
|
||||
require_once('include/identity.php');
|
||||
|
||||
// if($item['html']) {
|
||||
// $s = bb_observer($item['html']);
|
||||
// }
|
||||
// else {
|
||||
call_hooks('prepare_body_init', $item);
|
||||
// unobscure($item);
|
||||
$s = prepare_text($item['body'],$item['mimetype'], false);
|
||||
// }
|
||||
call_hooks('prepare_body_init', $item);
|
||||
|
||||
|
||||
$photo = '';
|
||||
$is_photo = (($item['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
|
||||
$is_photo = ((($item['verb'] === ACTIVITY_POST) && ($item['obj_type'] === ACTIVITY_OBJ_PHOTO)) ? true : false);
|
||||
|
||||
if($is_photo) {
|
||||
|
||||
$object = json_decode($item['object'],true);
|
||||
|
||||
// if original photo width is <= 640px prepend it to item body
|
||||
@ -1444,6 +1438,8 @@ function prepare_body(&$item,$attach = false) {
|
||||
}
|
||||
}
|
||||
|
||||
$s = prepare_text($item['body'],$item['mimetype'], false);
|
||||
|
||||
$event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event($item['object']) : false);
|
||||
|
||||
$prep_arr = array(
|
||||
@ -1602,6 +1598,16 @@ function prepare_text($text, $content_type = 'text/bbcode', $cache = false) {
|
||||
}
|
||||
|
||||
|
||||
function create_export_photo_body(&$item) {
|
||||
if(($item['verb'] === ACTIVITY_POST) && ($item['obj_type'] === ACTIVITY_OBJ_PHOTO)) {
|
||||
$j = json_decode($item['object'],true);
|
||||
if($j) {
|
||||
$item['body'] .= (($j['body']) ? $j['body'] : $j['bbcode']);
|
||||
$item['sig'] = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* zidify_callback() and zidify_links() work together to turn any HTML a tags with class="zrl" into zid links
|
||||
* These will typically be generated by a bbcode '[zrl]' tag. This is done inside prepare_text() rather than bbcode()
|
||||
|
Reference in New Issue
Block a user