$item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']);
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
- 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';",
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);
}
// 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
$poked_t = trim(sprintf($txt, "",""));
$txt = str_replace( $poked_t, t($verb), $txt);
function visible_activity($item) {
- // likes (etc.) can apply to other things besides posts. Check if they are post children,
+ // 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_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE);
+ $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;
$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 = '<div id="live-network"></div>' . "\r\n"
- . "<script> var profile_uid = " . $_SESSION['uid']
+ . "<script> var profile_uid = " . $_SESSION['uid']
. "; var netargs = '" . substr($a->cmd,8)
. '?f='
. ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
- . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
- . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
- . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '')
- . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
- . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '')
- . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
- . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '')
- . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
- . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
- . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
- . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '')
+ . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
+ . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
+ . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '')
+ . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
+ . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '')
+ . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
+ . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '')
+ . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
+ . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
+ . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
+ . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '')
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
// because browser prefetching might change it on us. We have to deliver it with the page.
$live_update_div = '<div id="live-profile"></div>' . "\r\n"
- . "<script> var profile_uid = " . $a->profile['profile_uid']
+ . "<script> var profile_uid = " . $a->profile['profile_uid']
. "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
}
$page_writeable = true;
if(!$update) {
$live_update_div = '<div id="live-notes"></div>' . "\r\n"
- . "<script> var profile_uid = " . local_user()
+ . "<script> var profile_uid = " . local_user()
. "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
}
$hide_comments_tpl = get_markup_template('hide_comments.tpl');
$conv_responses = array(
- 'like' => array('title' => t('Likes','title')),'dislike' => array('title' => t('Dislikes','title')),
- 'agree' => array('title' => t('Agree','title')),'disagree' => array('title' => t('Disagree','title')), 'abstain' => array('title' => t('Abstain','title')),
+ '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'))
);
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);
'name' => $profile_name_e,
'sparkle' => $sparkle,
'lock' => $lock,
- 'thumb' => proxy_url($profile_avatar),
+ 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB),
'title' => $item['title_e'],
'body' => $body_e,
'tags' => $tags_e,
'indent' => '',
'owner_name' => $owner_name_e,
'owner_url' => $owner_url,
- 'owner_photo' => proxy_url($owner_photo),
+ 'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB),
'plink' => get_plink($item),
'edpost' => false,
'isstarred' => $isstarred,
'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'=> $a->get_baseurl($ssl_state) . '/display/'.$item['guid'], '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,
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']))
$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/0?nets=all&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);
* @brief Checks item to see if it is one of the builtin activities (like/dislike, event attendance, consensus items, etc.)
* Increments the count of each matching activity and adds a link to the author as needed.
*
- * @param array $a (not used)
* @param array $item
* @param array &$conv_responses (already created with builtin activity structure)
* @return void
*/
-if(! function_exists(builtin_activity_puller)) {
+if(! function_exists('builtin_activity_puller')) {
function builtin_activity_puller($item, &$conv_responses) {
foreach($conv_responses as $mode => $v) {
$url = '';
case 'dislike':
$verb = ACTIVITY_DISLIKE;
break;
- case 'agree':
- $verb = ACTIVITY_AGREE;
- break;
- case 'disagree':
- $verb = ACTIVITY_DISAGREE;
- break;
- case 'abstain':
- $verb = ACTIVITY_ABSTAIN;
- break;
case 'attendyes':
$verb = ACTIVITY_ATTEND;
break;
if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
$url = $item['author-link'];
if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === NETWORK_DFRN) && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
- $url = z_root(true) . '/redir/' . $item['contact-id'];
+ $url = 'redir/' . $item['contact-id'];
$sparkle = ' class="sparkle" ';
}
- else
+ else
$url = zrl($url);
-
- $url = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
+
+ $url = '<a href="'. $url . '"'. $sparkle .'>' . htmlentities($item['author-name']) . '</a>';
if(! $item['thr-parent'])
$item['thr-parent'] = $item['parent-uri'];
- if(! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l']))
+ if(! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l']))
&& (is_array($conv_responses[$mode][$item['thr-parent'] . '-l']))))
$conv_responses[$mode][$item['thr-parent'] . '-l'] = array();
// Format the vote text for a profile item
// $cnt = number of people who vote the item
// $arr = array of pre-linked names of likers/dislikers
-// $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe', 'agree', 'disagree', 'abstain'
+// $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe'
// $id = item id
// returns formatted text
$o = '';
$expanded = '';
- if($cnt == 1)
+ if($cnt == 1) {
$likers = $arr[0];
- else {
+ // Phrase if there is only one liker. In other cases it will be uses for the expanded
+ // list which show all likers
+ switch($type) {
+ case 'like' :
+ $phrase = sprintf( t('%s likes this.'), $likers);
+ break;
+ case 'dislike' :
+ $phrase = sprintf( t('%s doesn\'t like this.'), $likers);
+ break;
+ case 'attendyes' :
+ $phrase = sprintf( t('%s attends.'), $likers);
+ break;
+ case 'attendno' :
+ $phrase = sprintf( t('%s doesn\'t attend.'), $likers);
+ break;
+ case 'attendmaybe' :
+ $phrase = sprintf( t('%s attends maybe.'), $likers);
+ break;
+ }
+ }
+
+ if($cnt > 1) {
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
}
$likers = $str;
- }
-
- // Phrase if there is only one liker. In other cases it will be uses for the expanded
- // list which show all likers
- switch($type) {
- case 'like' :
- $phrase = sprintf( t('%s likes this.'), $likers);
- break;
- case 'dislike' :
- $phrase = sprintf( t('%s doesn\'t like this.'), $likers);
- break;
- case 'attendyes' :
- $phrase = sprintf( t('%s attends.'), $likers);
- break;
- case 'attendno' :
- $phrase = sprintf( t('%s doesn\'t attend.'), $likers);
- break;
- case 'attendmaybe' :
- $phrase = sprintf( t('%s attends maybe.'), $likers);
- break;
- case 'agree' :
- $phrase = sprintf( t('%s agrees.'), $likers);
- break;
- case 'disagree' :
- $phrase = sprintf( t('%s doesn\'t agree.'), $likers);
- break;
- case 'abstain' :
- $phrase = sprintf( t('%s abstains.'), $likers);
- break;
- }
- if($cnt > 1) {
$spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\"";
- $expanded .= "\t" . '<div class="wall-item-' . $type . '-expanded" id="' . $type . 'list-' . $id . '" style="display: none;" >' . $phrase . EOL . '</div>';
+
switch($type) {
case 'like':
$phrase = sprintf( t('<span %1$s>%2$d people</span> like this'), $spanatts, $cnt);
+ $explikers = sprintf( t('%s like this.'), $likers);
break;
case 'dislike':
$phrase = sprintf( t('<span %1$s>%2$d people</span> don\'t like this'), $spanatts, $cnt);
+ $explikers = sprintf( t('%s don\'t like this.'), $likers);
break;
case 'attendyes':
$phrase = sprintf( t('<span %1$s>%2$d people</span> attend'), $spanatts, $cnt);
+ $explikers = sprintf( t('%s attend.'), $likers);
break;
case 'attendno':
$phrase = sprintf( t('<span %1$s>%2$d people</span> don\'t attend'), $spanatts, $cnt);
+ $explikers = sprintf( t('%s don\'t attend.'), $likers);
break;
case 'attendmaybe':
$phrase = sprintf( t('<span %1$s>%2$d people</span> anttend maybe'), $spanatts, $cnt);
- case 'agree':
- $phrase = sprintf( t('<span %1$s>%2$d people</span> agree'), $spanatts, $cnt);
+ $explikers = sprintf( t('%s anttend maybe.'), $likers);
break;
- case 'disagree':
- $phrase = sprintf( t('<span %1$s>%2$d people</span> don\'t agree'), $spanatts, $cnt);
- break;
- case 'abstain':
- $phrase = sprintf( t('<span %1$s>%2$d people</span> abstains'), $spanatts, $cnt);
}
+
+ $expanded .= "\t" . '<div class="wall-item-' . $type . '-expanded" id="' . $type . 'list-' . $id . '" style="display: none;" >' . $explikers . EOL . '</div>';
}
$phrase .= EOL ;
if( local_user() && feature_enabled(local_user(),'richtext') )
$plaintext = false;
- $voting = feature_enabled(local_user(),'consensus_tools');
-
$tpl = get_markup_template('jot-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$newpost' => 'true',
$o .= replace_macros($tpl,array(
'$return_path' => $query_str,
- '$action' => $a->get_baseurl(true) . '/item',
+ '$action' => 'item',
'$share' => (x($x,'button') ? $x['button'] : t('Share')),
'$upload' => t('Upload photo'),
'$shortupload' => t('upload photo'),
'$shortsetloc' => t('set location'),
'$noloc' => t('Clear browser location'),
'$shortnoloc' => t('clear location'),
- '$voting' => t('Toggle voting'),
- '$feature_voting' => $voting,
- '$consensus' => 0,
'$title' => $x['title'],
'$placeholdertitle' => t('Set title'),
'$category' => $x['category'],
$parents = array();
$children = array();
+ $newarr = array();
+
+ // This is a preparation for having two different items with the same uri in one thread
+ // This will otherwise lead to an endless loop.
+ foreach($arr as $x)
+ if (!isset($newarr[$x['uri']]))
+ $newarr[$x['uri']] = $x;
+
+ $arr = $newarr;
foreach($arr as $x)
if($x['id'] == $x['parent'])
$ret[$v]['list'] = ((x($conv_responses[$v],$item['uri'])) ? $conv_responses[$v][$item['uri'] . '-l'] : '');
if(count($ret[$v]['list']) > MAX_LIKERS) {
$ret[$v]['list_part'] = array_slice($ret[$v]['list'], 0, MAX_LIKERS);
- array_push($ret[$v]['list_part'], '<a href="#" data-toggle="modal" data-target="#' . $v . 'Modal-'
- . $ob->get_id() . '"><b>' . t('View all') . '</b></a>');
- }
+ array_push($ret[$v]['list_part'], '<a href="#" data-toggle="modal" data-target="#' . $v . 'Modal-'
+ . (($ob) ? $ob->get_id() : $item['id']) . '"><b>' . t('View all') . '</b></a>');
+ }
else {
$ret[$v]['list_part'] = '';
}
case 'attendmaybe':
return tt('Undecided','Undecided',$count,'noun');
break;
- case 'agree':
- return tt('Agree','Agrees',$count,'noun');
- break;
- case 'disagree':
- return tt('Disagree','Disagrees',$count,'noun');
- break;
- case 'abstain':
- return tt('Abstain','Abstains',$count,'noun');
- break;
- default:
- return '';
- break;
}
}