X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fconversation.php;h=a52502ec3923a226a4e7c2b4e830872f86e8838a;hb=1dda70d144bf86c6c83ed6fbbe2c438a7e1aac4a;hp=cc66d380b7561463670beca0c3e8203a729b41f6;hpb=4e3d0018c69eaaa122f004357c5c68dacef59fc7;p=friendica.git diff --git a/include/conversation.php b/include/conversation.php index cc66d380b7..a52502ec39 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1,6 +1,7 @@ "; - if (activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)){ + if (activity_match($item['verb'],ACTIVITY_LIKE) + || activity_match($item['verb'],ACTIVITY_DISLIKE) + || activity_match($item['verb'],ACTIVITY_ATTEND) + || activity_match($item['verb'],ACTIVITY_ATTENDNO) + || activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)){ $r = q("SELECT * from `item`,`contact` WHERE `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';", @@ -138,6 +143,15 @@ function localize_item(&$item){ elseif(activity_match($item['verb'],ACTIVITY_DISLIKE)) { $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s'); } + elseif(activity_match($item['verb'],ACTIVITY_ATTEND)) { + $bodyverb = t('%1$s attends %2$s\'s %3$s'); + } + elseif(activity_match($item['verb'],ACTIVITY_ATTENDNO)) { + $bodyverb = t('%1$s doesn\'t attend %2$s\'s %3$s'); + } + elseif(activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)) { + $bodyverb = t('%1$s attends maybe %2$s\'s %3$s'); + } $item['body'] = sprintf($bodyverb, $author, $objauthor, $plink); } @@ -202,12 +216,11 @@ function localize_item(&$item){ // we can't have a translation string with three positions but no distinguishable text // So here is the translate string. - $txt = t('%1$s poked %2$s'); // now translate the verb - - $txt = str_replace( t('poked'), t($verb), $txt); + $poked_t = trim(sprintf($txt, "","")); + $txt = str_replace( $poked_t, t($verb), $txt); // then do the sprintf on the translation string @@ -341,8 +354,15 @@ function count_descendants($item) { function visible_activity($item) { - if(activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)) - return false; + // likes (etc.) can apply to other things besides posts. Check if they are post children, + // in which case we handle them specially + + $hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); + foreach($hidden_activities as $act) { + if(activity_match($item['verb'],$act)) { + return false; + } + } if(activity_match($item['verb'],ACTIVITY_FOLLOW) && $item['object-type'] === ACTIVITY_OBJ_NOTE) { if(! (($item['self']) && ($item['uid'] == local_user()))) { @@ -368,8 +388,8 @@ function visible_activity($item) { if(!function_exists('conversation')) { function conversation(&$a, $items, $mode, $update, $preview = false) { - require_once('include/bbcode.php'); + require_once('mod/proxy.php'); $ssl_state = ((local_user()) ? true : false); @@ -377,6 +397,18 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = false; $live_update_div = ''; + $arr_blocked = null; + + if(local_user()) { + $str_blocked = get_pconfig(local_user(),'system','blocked'); + if($str_blocked) { + $arr_blocked = explode(',',$str_blocked); + for($x = 0; $x < count($arr_blocked); $x ++) + $arr_blocked[$x] = trim($arr_blocked[$x]); + } + + } + $previewing = (($preview) ? ' preview ' : ''); if($mode === 'network') { @@ -384,25 +416,25 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = true; if(!$update) { // The special div is needed for liveUpdate to kick in for this page. - // We only launch liveUpdate if you aren't filtering in some incompatible + // We only launch liveUpdate if you aren't filtering in some incompatible // way and also you aren't writing a comment (discovered in javascript). $live_update_div = '
' . "\r\n" - . "\r\n"; } @@ -419,7 +451,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // because browser prefetching might change it on us. We have to deliver it with the page. $live_update_div = '' . "\r\n" - . "\r\n"; } } @@ -429,7 +461,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = true; if(!$update) { $live_update_div = '' . "\r\n" - . "\r\n"; } } @@ -472,9 +504,10 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $cmnt_tpl = get_markup_template('comment_item.tpl'); $hide_comments_tpl = get_markup_template('hide_comments.tpl'); - $alike = array(); - $dlike = array(); - + $conv_responses = array( + 'like' => array('title' => t('Likes','title')), 'dislike' => array('title' => t('Dislikes','title')), + 'attendyes' => array('title' => t('Attending','title')), 'attendno' => array('title' => t('Not attending','title')), 'attendmaybe' => array('title' => t('Might attend','title')) + ); // array with html for each thread (parent+comments) $threads = array(); @@ -493,6 +526,20 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $tpl = 'search_item.tpl'; foreach($items as $item) { + + if($arr_blocked) { + $blocked = false; + foreach($arr_blocked as $b) { + if($b && link_compare($item['author-link'],$b)) { + $blocked = true; + break; + } + } + if($blocked) + continue; + } + + $threadsid++; $comment = ''; @@ -533,13 +580,13 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $tag["url"] = $searchpath.strtolower($tag["term"]); if ($tag["type"] == TERM_HASHTAG) { - $hashtags[] = "#".$tag["term"].""; + $hashtags[] = "#".$tag["term"].""; $prefix = "#"; } elseif ($tag["type"] == TERM_MENTION) { - $mentions[] = "@".$tag["term"].""; + $mentions[] = "@".$tag["term"].""; $prefix = "@"; } - $tags[] = $prefix."".$tag["term"].""; + $tags[] = $prefix."".$tag["term"].""; } /*foreach(explode(',',$item['tag']) as $tag){ @@ -567,12 +614,12 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) $profile_avatar = $a->contacts[$normalised]['thumb']; else - $profile_avatar = ((strlen($item['author-avatar'])) ? $a->get_cached_avatar_image($item['author-avatar']) : $item['thumb']); + $profile_avatar = $a->remove_baseurl(((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb'])); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); call_hooks('render_location',$locate); - $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_google($locate)); + $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate)); localize_item($item); if($mode === 'network-new') @@ -595,7 +642,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $likebuttons = false; $shareable = false; - $body = prepare_body($item,true); + $body = prepare_body($item,true, $preview); list($categories, $folders) = get_cats_and_terms($item); @@ -624,13 +671,14 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $tmp_item = array( 'template' => $tpl, 'id' => (($preview) ? 'P0' : $item['item_id']), + 'network' => $item['item_network'], 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $profile_name_e, 'sparkle' => $sparkle, 'lock' => $lock, - 'thumb' => $profile_avatar, + 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), 'title' => $item['title_e'], 'body' => $body_e, 'tags' => $tags_e, @@ -649,7 +697,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'indent' => '', 'owner_name' => $owner_name_e, 'owner_url' => $owner_url, - 'owner_photo' => $owner_photo, + 'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB), 'plink' => get_plink($item), 'edpost' => false, 'isstarred' => $isstarred, @@ -659,7 +707,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'like' => '', 'dislike' => '', 'comment' => '', - 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), + //'conv' => (($preview) ? '' : array('href'=> 'display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), + 'conv' => (($preview) ? '' : array('href'=> 'display/'.$item['guid'], 'title'=> t('View in context'))), 'previewing' => $previewing, 'wait' => t('Please wait'), 'thread_level' => 1, @@ -669,10 +718,10 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { call_hooks('display_item', $arr); $threads[$threadsid]['id'] = $item['item_id']; + $threads[$threadsid]['network'] = $item['item_network']; $threads[$threadsid]['items'] = array($arr['output']); } - } else { @@ -691,9 +740,23 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $threads = array(); foreach($items as $item) { + if($arr_blocked) { + $blocked = false; + foreach($arr_blocked as $b) { + + if($b && link_compare($item['author-link'],$b)) { + $blocked = true; + break; + } + } + if($blocked) + continue; + } + + + // Can we put this after the visibility check? - like_puller($a,$item,$alike,'like'); - like_puller($a,$item,$dlike,'dislike'); + builtin_activity_puller($item, $conv_responses); // Only add what is visible if($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { @@ -703,6 +766,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { continue; } + call_hooks('display_item', $arr); + $item['pagedrop'] = $page_dropping; if($item['id'] == $item['parent']) { @@ -711,7 +776,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } } - $threads = $conv->get_template_data($alike, $dlike); + $threads = $conv->get_template_data($conv_responses); + if(!$threads) { logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG); $threads = array(); @@ -721,6 +787,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $o = replace_macros($page_template, array( '$baseurl' => $a->get_baseurl($ssl_state), + '$return_path' => $a->query_string, '$live_update' => $live_update_div, '$remove' => t('remove'), '$mode' => $mode, @@ -744,12 +811,18 @@ function best_link_url($item,&$sparkle,$ssl_state = false) { if((local_user()) && (local_user() == $item['uid'])) { if(isset($a->contacts) && x($a->contacts,$clean_url)) { if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) { - $best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id']; + $best_url = 'redir/'.$a->contacts[$clean_url]['id']; $sparkle = true; - } - else + } else $best_url = $a->contacts[$clean_url]['url']; } + } elseif (local_user()) { + $r = q("SELECT `id` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s' LIMIT 1", + dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url))); + if ($r) { + $best_url = 'redir/'.$r[0]['id']; + $sparkle = true; + } } if(! $best_url) { if(strlen($item['author-link'])) @@ -795,46 +868,62 @@ function item_photo_menu($item){ $status_link = $profile_link . "?url=status"; $photos_link = $profile_link . "?url=photos"; $profile_link = $profile_link . "?url=profile"; - $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid; + $pm_url = 'message/new/' . $cid; $zurl = ''; } else { $profile_link = zrl($profile_link); if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) { $cid = $item['contact-id']; - } - else { - $cid = 0; + } else { + $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' LIMIT 1", + intval(local_user()), dbesc(normalise_link($item['author-link']))); + if ($r) { + $cid = $r[0]["id"]; + + if ($r[0]["network"] == NETWORK_DIASPORA) + $pm_url = 'message/new/' . $cid; + + } else + $cid = 0; } } if(($cid) && (! $item['self'])) { - $poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $cid; - $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid; - $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid; + $poke_link = 'poke/?f=&c=' . $cid; + $contact_url = 'contacts/' . $cid; + $posts_link = 'contacts/' . $cid . '/posts'; $clean_url = normalise_link($item['author-link']); if((local_user()) && (local_user() == $item['uid'])) { if(isset($a->contacts) && x($a->contacts,$clean_url)) { if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) { - $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid; + $pm_url = 'message/new/' . $cid; } } } } - $menu = Array( - t("Follow Thread") => $sub_link, - t("View Status") => $status_link, - t("View Profile") => $profile_link, - t("View Photos") => $photos_link, - t("Network Posts") => $posts_link, - t("Edit Contact") => $contact_url, - t("Send PM") => $pm_url, - t("Poke") => $poke_link - ); + if (local_user()) { + $menu = Array( + t("Follow Thread") => $sub_link, + t("View Status") => $status_link, + t("View Profile") => $profile_link, + t("View Photos") => $photos_link, + t("Network Posts") => $posts_link, + t("Edit Contact") => $contact_url, + t("Send PM") => $pm_url + ); + + if ($a->contacts[$clean_url]['network'] === NETWORK_DFRN) + $menu[t("Poke")] = $poke_link; + if ((($cid == 0) OR ($a->contacts[$clean_url]['rel'] == CONTACT_IS_FOLLOWER)) AND + in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) + $menu[t("Connect/Follow")] = "follow?url=".urlencode($item['author-link']); + } else + $menu = array(t("View Profile") => $item['author-link']); $args = array('item' => $item, 'menu' => $menu); @@ -846,72 +935,120 @@ function item_photo_menu($item){ foreach($menu as $k=>$v){ if(strpos($v,'javascript:') === 0) { $v = substr($v,11); - $o .= "