<?php
require_once("include/bbcode.php");
+require_once("include/acl_selectors.php");
// Note: the code in 'item_extract_images' and 'item_redir_and_replace_images'
// 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
if(!function_exists('conversation')) {
function conversation(&$a, $items, $mode, $update, $preview = false) {
-
- require_once('bbcode.php');
+ require_once('include/bbcode.php');
+ require_once('mod/proxy.php');
$ssl_state = ((local_user()) ? true : 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') {
$alike = array();
$dlike = array();
-
// array with html for each thread (parent+comments)
$threads = array();
$threadsid = -1;
$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 = '';
$tags=array();
$hashtags = array();
$mentions = array();
- foreach(explode(',',$item['tag']) as $tag){
+
+ $taglist = q("SELECT `type`, `term`, `url` FROM `term` WHERE `otype` = %d AND `oid` = %d AND `type` IN (%d, %d) ORDER BY `tid`",
+ intval(TERM_OBJ_POST), intval($item['id']), intval(TERM_HASHTAG), intval(TERM_MENTION));
+
+ foreach($taglist as $tag) {
+
+ if ($tag["url"] == "")
+ $tag["url"] = $searchpath.strtolower($tag["term"]);
+
+ if ($tag["type"] == TERM_HASHTAG) {
+ $hashtags[] = "#<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+ $prefix = "#";
+ } elseif ($tag["type"] == TERM_MENTION) {
+ $mentions[] = "@<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+ $prefix = "@";
+ }
+ $tags[] = $prefix."<a href=\"".$tag["url"]."\" target=\"_blank\">".$tag["term"]."</a>";
+ }
+
+ /*foreach(explode(',',$item['tag']) as $tag){
$tag = trim($tag);
if ($tag!="") {
$t = bbcode($tag);
elseif($t[0] == '@')
$mentions[] = $t;
}
- }
+ }*/
$sp = false;
$profile_link = best_link_url($item,$sp);
$likebuttons = false;
$shareable = false;
- $body = prepare_body($item,true);
+ $body = prepare_body($item,true, $preview);
list($categories, $folders) = get_cats_and_terms($item);
+ if($a->theme['template_engine'] === 'internal') {
+ $profile_name_e = template_escape($profile_name);
+ $item['title_e'] = template_escape($item['title']);
+ $body_e = template_escape($body);
+ $tags_e = template_escape($tags);
+ $hashtags_e = template_escape($hashtags);
+ $mentions_e = template_escape($mentions);
+ $location_e = template_escape($location);
+ $owner_name_e = template_escape($owner_name);
+ }
+ else {
+ $profile_name_e = $profile_name;
+ $item['title_e'] = $item['title'];
+ $body_e = $body;
+ $tags_e = $tags;
+ $hashtags_e = $hashtags;
+ $mentions_e = $mentions;
+ $location_e = $location;
+ $owner_name_e = $owner_name;
+ }
+
$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' => template_escape($profile_name),
+ 'name' => $profile_name_e,
'sparkle' => $sparkle,
'lock' => $lock,
- 'thumb' => $profile_avatar,
- 'title' => template_escape($item['title']),
- 'body' => template_escape($body),
- 'tags' => template_escape($tags),
- 'hashtags' => template_escape($hashtags),
- 'mentions' => template_escape($mentions),
+ 'thumb' => proxy_url($profile_avatar),
+ 'title' => $item['title_e'],
+ 'body' => $body_e,
+ 'tags' => $tags_e,
+ 'hashtags' => $hashtags_e,
+ 'mentions' => $mentions_e,
'txt_cats' => t('Categories:'),
'txt_folders' => t('Filed under:'),
'has_cats' => ((count($categories)) ? 'true' : ''),
'has_folders' => ((count($folders)) ? 'true' : ''),
'categories' => $categories,
'folders' => $folders,
- 'text' => strip_tags(template_escape($body)),
+ 'text' => strip_tags($body_e),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
- 'location' => template_escape($location),
+ 'location' => $location_e,
'indent' => '',
- 'owner_name' => template_escape($owner_name),
+ 'owner_name' => $owner_name_e,
'owner_url' => $owner_url,
- 'owner_photo' => $owner_photo,
+ 'owner_photo' => proxy_url($owner_photo),
'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/' . $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'))),
'previewing' => $previewing,
'wait' => t('Please wait'),
'thread_level' => 1,
call_hooks('display_item', $arr);
$threads[$threadsid]['id'] = $item['item_id'];
+ $threads[$threadsid]['network'] = $item['item_network'];
$threads[$threadsid]['items'] = array($arr['output']);
}
-
}
else
{
$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');
continue;
}
+ call_hooks('display_item', $arr);
+
$item['pagedrop'] = $page_dropping;
if($item['id'] == $item['parent']) {
}
$threads = $conv->get_template_data($alike, $dlike);
+
if(!$threads) {
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
$threads = array();
$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,
'$user' => $a->user,
'$threads' => $threads,
- '$dropping' => ($page_dropping?t('Delete Selected Items'):False),
+ '$dropping' => ($page_dropping && feature_enabled(local_user(),'multi_delete') ? t('Delete Selected Items') : False),
));
return $o;
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;
+ $posts_link = $a->get_baseurl($ssl_state) . '/network/0?nets=all&cid=' . $cid;
$clean_url = normalise_link($item['author-link']);
if($cnt == 1)
$o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
else {
- $spanatts = 'class="fakelink" onclick="openClose(\'' . $type . 'list-' . $id . '\');"';
- $o .= (($type === 'like') ?
- sprintf( t('<span %1$s>%2$d people</span> like this.'), $spanatts, $cnt)
- :
- sprintf( t('<span %1$s>%2$d people</span> don\'t like this.'), $spanatts, $cnt) );
- $o .= EOL ;
+ $spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\"";
+ switch($type) {
+ case 'like':
+ $phrase = sprintf( t('<span %1$s>%2$d people</span> like this'), $spanatts, $cnt);
+ break;
+ case 'dislike':
+ $phrase = sprintf( t('<span %1$s>%2$d people</span> don\'t like this'), $spanatts, $cnt);
+ break;
+ }
+ $phrase .= EOL ;
+ $o .= replace_macros(get_markup_template('voting_fakelink.tpl'), array(
+ '$phrase' => $phrase,
+ '$type' => $type,
+ '$id' => $id
+ ));
+
$total = count($arr);
if($total >= MAX_LIKERS)
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
- if($total < MAX_LIKERS)
- $arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
- $str = implode(', ', $arr);
- if($total >= MAX_LIKERS)
+ if($total < MAX_LIKERS) {
+ $last = t('and') . ' ' . $arr[count($arr)-1];
+ $arr2 = array_slice($arr, 0, -1);
+ $str = implode(', ', $arr2) . ' ' . $last;
+ }
+ if($total >= MAX_LIKERS) {
+ $str = implode(', ', $arr);
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
+ }
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
- $o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
+ $o .= "\t" . '<div class="wall-item-' . $type . '-expanded" id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
}
return $o;
}}
$o = '';
- $geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
+ $geotag = (($x['allow_location']) ? replace_macros(get_markup_template('jot_geotag.tpl'), array()) : '');
- $plaintext = false;
- if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
- $plaintext = true;
+/* $plaintext = false;
+ if( local_user() && (intval(get_pconfig(local_user(),'system','plaintext')) || !feature_enabled(local_user(),'richtext')) )
+ $plaintext = true;*/
+ $plaintext = true;
+ if( local_user() && feature_enabled(local_user(),'richtext') )
+ $plaintext = false;
$tpl = get_markup_template('jot-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
));
- $tpl = get_markup_template("jot.tpl");
-
$jotplugins = '';
$jotnets = '';
}
}
- if($mail_enabled) {
- $selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
- $jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . ' value="1" /> ' . t("Post to Email") . '</div>';
- }
+ if (!$a->user['hidewall']) {
+ if($mail_enabled) {
+ $selected = (($pubmail_enabled) ? ' checked="checked" ' : '');
+ $jotnets .= '<div class="profile-jot-net"><input type="checkbox" name="pubmail_enable"' . $selected . ' value="1" /> ' . t("Post to Email") . '</div>';
+ }
+
+ call_hooks('jot_networks', $jotnets);
+ } else
+ $jotnets .= sprintf(t('Connectors disabled, since "%s" is enabled.'),
+ t('Hide your profile details from unknown viewers?'));
call_hooks('jot_tool', $jotplugins);
- call_hooks('jot_networks', $jotnets);
if($notes_cid)
$jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
- $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
+
+ // Private/public post links for the non-JS ACL form
+ $private_post = 1;
+ if($_REQUEST['public'])
+ $private_post = 0;
+
+ $query_str = $a->query_string;
+ if(strpos($query_str, 'public=1') !== false)
+ $query_str = str_replace(array('?public=1', '&public=1'), array('', ''), $query_str);
+
+ // I think $a->query_string may never have ? in it, but I could be wrong
+ // It looks like it's from the index.php?q=[etc] rewrite that the web
+ // server does, which converts any ? to &, e.g. suggest&ignore=61 for suggest?ignore=61
+ if(strpos($query_str, '?') === false)
+ $public_post_link = '?public=1';
+ else
+ $public_post_link = '&public=1';
+
+
+
+// $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
+ $tpl = get_markup_template("jot.tpl");
$o .= replace_macros($tpl,array(
- '$return_path' => $a->query_string,
+ '$return_path' => $query_str,
'$action' => $a->get_baseurl(true) . '/item',
'$share' => (x($x,'button') ? $x['button'] : t('Share')),
'$upload' => t('Upload photo'),
'$shortsetloc' => t('set location'),
'$noloc' => t('Clear browser location'),
'$shortnoloc' => t('clear location'),
- '$title' => "",
+ '$title' => $x['title'],
'$placeholdertitle' => t('Set title'),
- '$category' => "",
- '$placeholdercategory' => t('Categories (comma-separated list)'),
+ '$category' => $x['category'],
+ '$placeholdercategory' => (feature_enabled(local_user(),'categories') ? t('Categories (comma-separated list)') : ''),
'$wait' => t('Please wait'),
'$permset' => t('Permission settings'),
'$shortpermset' => t('permissions'),
'$ptyp' => (($notes_cid) ? 'note' : 'wall'),
- '$content' => '',
- '$post_id' => '',
+ '$content' => $x['content'],
+ '$post_id' => $x['post_id'],
'$baseurl' => $a->get_baseurl(true),
'$defloc' => $x['default_location'],
'$visitor' => $x['visitor'],
'$jotnets' => $jotnets,
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
'$lockstate' => $x['lockstate'],
- '$acl' => $x['acl'],
'$bang' => $x['bang'],
'$profile_uid' => $x['profile_uid'],
- '$preview' => t('Preview'),
+ '$preview' => ((feature_enabled($x['profile_uid'],'preview')) ? t('Preview') : ''),
+ '$jotplugins' => $jotplugins,
'$sourceapp' => t($a->sourcename),
'$cancel' => t('Cancel'),
- '$rand_num' => random_digits(12)
+ '$rand_num' => random_digits(12),
+
+ // ACL permissions box
+ '$acl' => $x['acl'],
+ '$acl_data' => $x['acl_data'],
+ '$group_perms' => t('Post to Groups'),
+ '$contact_perms' => t('Post to Contacts'),
+ '$private' => t('Private post'),
+ '$is_private' => $private_post,
+ '$public_link' => $public_post_link,
));