Merge develop-new into event-attendance-new
Conflicts: include/conversation.php
This commit is contained in:
commit
649578ae33
75 changed files with 20240 additions and 18748 deletions
|
|
@ -219,17 +219,20 @@ function contact_photo_menu($contact) {
|
|||
$status_link = $profile_link . "?url=status";
|
||||
$photos_link = $profile_link . "?url=photos";
|
||||
$profile_link = $profile_link . "?url=profile";
|
||||
$pm_url = $a->get_baseurl() . '/message/new/' . $contact['id'];
|
||||
}
|
||||
|
||||
$poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id'];
|
||||
if (in_array($contact["network"], array(NETWORK_DFRN, NETWORK_DIASPORA)))
|
||||
$pm_url = $a->get_baseurl() . '/message/new/' . $contact['id'];
|
||||
|
||||
if ($contact["network"] == NETWORK_DFRN)
|
||||
$poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id'];
|
||||
|
||||
$contact_url = $a->get_baseurl() . '/contacts/' . $contact['id'];
|
||||
$posts_link = $a->get_baseurl() . '/network/0?nets=all&cid=' . $contact['id'];
|
||||
$contact_drop_link = $a->get_baseurl() . "/contacts/" . $contact['id'] . '/drop?confirm=1';
|
||||
|
||||
|
||||
$menu = Array(
|
||||
'poke' => array(t("Poke"), $poke_link),
|
||||
'status' => array(t("View Status"), $status_link),
|
||||
'profile' => array(t("View Profile"), $profile_link),
|
||||
'photos' => array(t("View Photos"), $photos_link),
|
||||
|
|
@ -237,6 +240,7 @@ function contact_photo_menu($contact) {
|
|||
'edit' => array(t("Edit Contact"), $contact_url),
|
||||
'drop' => array(t("Drop Contact"), $contact_drop_link),
|
||||
'pm' => array(t("Send PM"), $pm_url),
|
||||
'poke' => array(t("Poke"), $poke_link),
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -254,6 +258,7 @@ function contact_photo_menu($contact) {
|
|||
}
|
||||
}
|
||||
return $o;*/
|
||||
|
||||
foreach($menu as $k=>$v){
|
||||
if ($v[1]!="") {
|
||||
if(($v[0] !== t("Network Posts")) && ($v[0] !== t("Send PM")) && ($v[0] !== t('Edit Contact')))
|
||||
|
|
@ -262,7 +267,14 @@ function contact_photo_menu($contact) {
|
|||
$menu[$k][2] = 0;
|
||||
}
|
||||
}
|
||||
return $menu;
|
||||
|
||||
$menucondensed = array();
|
||||
|
||||
foreach ($menu AS $menuitem)
|
||||
if ($menuitem[1] != "")
|
||||
$menucondensed[] = $menuitem;
|
||||
|
||||
return $menucondensed;
|
||||
}}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -345,38 +345,37 @@ class Photo {
|
|||
}
|
||||
|
||||
public function orient($filename) {
|
||||
if ($this->is_imagick()) {
|
||||
// based off comment on http://php.net/manual/en/imagick.getimageorientation.php
|
||||
$orientation = $this->image->getImageOrientation();
|
||||
switch ($orientation) {
|
||||
case imagick::ORIENTATION_BOTTOMRIGHT:
|
||||
$this->image->rotateimage("#000", 180);
|
||||
break;
|
||||
case imagick::ORIENTATION_RIGHTTOP:
|
||||
$this->image->rotateimage("#000", 90);
|
||||
break;
|
||||
case imagick::ORIENTATION_LEFTBOTTOM:
|
||||
$this->image->rotateimage("#000", -90);
|
||||
break;
|
||||
}
|
||||
if ($this->is_imagick()) {
|
||||
// based off comment on http://php.net/manual/en/imagick.getimageorientation.php
|
||||
$orientation = $this->image->getImageOrientation();
|
||||
switch ($orientation) {
|
||||
case imagick::ORIENTATION_BOTTOMRIGHT:
|
||||
$this->image->rotateimage("#000", 180);
|
||||
break;
|
||||
case imagick::ORIENTATION_RIGHTTOP:
|
||||
$this->image->rotateimage("#000", 90);
|
||||
break;
|
||||
case imagick::ORIENTATION_LEFTBOTTOM:
|
||||
$this->image->rotateimage("#000", -90);
|
||||
break;
|
||||
}
|
||||
|
||||
$this->image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
|
||||
return TRUE;
|
||||
}
|
||||
$this->image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
|
||||
return TRUE;
|
||||
}
|
||||
// based off comment on http://php.net/manual/en/function.imagerotate.php
|
||||
|
||||
if(!$this->is_valid())
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
if( (! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg') )
|
||||
return;
|
||||
return;
|
||||
|
||||
$exif = @exif_read_data($filename);
|
||||
$exif = @exif_read_data($filename,null,true);
|
||||
if(! $exif)
|
||||
return;
|
||||
|
||||
if(! $exif)
|
||||
return;
|
||||
|
||||
$ort = $exif['Orientation'];
|
||||
$ort = $exif['IFD0']['Orientation'];
|
||||
|
||||
switch($ort)
|
||||
{
|
||||
|
|
@ -413,6 +412,10 @@ class Photo {
|
|||
$this->rotate(90);
|
||||
break;
|
||||
}
|
||||
|
||||
// logger('exif: ' . print_r($exif,true));
|
||||
return $exif;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
|
|||
if($network !== NETWORK_ZOT && $network !== NETWORK_DFRN && $network !== NETWORK_MAIL) {
|
||||
if($diaspora)
|
||||
$network = NETWORK_DIASPORA;
|
||||
elseif($has_lrdd)
|
||||
elseif($has_lrdd AND ($notify))
|
||||
$network = NETWORK_OSTATUS;
|
||||
|
||||
if(strpos($url,'@'))
|
||||
|
|
@ -652,9 +652,10 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
|
|||
$feed->set_raw_data(($xml) ? $xml : '<?xml version="1.0" encoding="utf-8" ?><xml></xml>');
|
||||
|
||||
$feed->init();
|
||||
if($feed->error())
|
||||
if($feed->error()) {
|
||||
logger('probe_url: scrape_feed: Error parsing XML: ' . $feed->error());
|
||||
|
||||
$network = NETWORK_PHANTOM;
|
||||
}
|
||||
|
||||
if(! x($vcard,'photo'))
|
||||
$vcard['photo'] = $feed->get_image_url();
|
||||
|
|
|
|||
|
|
@ -392,7 +392,6 @@ function acl_lookup(&$a, $out_type = 'json') {
|
|||
if(!local_user())
|
||||
return "";
|
||||
|
||||
|
||||
$start = (x($_REQUEST,'start')?$_REQUEST['start']:0);
|
||||
$count = (x($_REQUEST,'count')?$_REQUEST['count']:100);
|
||||
$search = (x($_REQUEST,'search')?$_REQUEST['search']:"");
|
||||
|
|
@ -492,7 +491,7 @@ function acl_lookup(&$a, $out_type = 'json') {
|
|||
$groups[] = array(
|
||||
"type" => "g",
|
||||
"photo" => "images/twopeople.png",
|
||||
"name" => $g['name'],
|
||||
"name" => htmlentities($g['name']),
|
||||
"id" => intval($g['id']),
|
||||
"uids" => array_map("intval", explode(",",$g['uids'])),
|
||||
"link" => '',
|
||||
|
|
@ -545,9 +544,9 @@ function acl_lookup(&$a, $out_type = 'json') {
|
|||
$x['data'] = array();
|
||||
if(count($r)) {
|
||||
foreach($r as $g) {
|
||||
$x['photos'][] = proxy_url($g['micro']);
|
||||
$x['photos'][] = proxy_url($g['micro'], false, PROXY_SIZE_MICRO);
|
||||
$x['links'][] = $g['url'];
|
||||
$x['suggestions'][] = $g['name'];
|
||||
$x['suggestions'][] = htmlentities($g['name']);
|
||||
$x['data'][] = intval($g['id']);
|
||||
}
|
||||
}
|
||||
|
|
@ -559,12 +558,12 @@ function acl_lookup(&$a, $out_type = 'json') {
|
|||
foreach($r as $g){
|
||||
$contacts[] = array(
|
||||
"type" => "c",
|
||||
"photo" => proxy_url($g['micro']),
|
||||
"name" => $g['name'],
|
||||
"photo" => proxy_url($g['micro'], false, PROXY_SIZE_MICRO),
|
||||
"name" => htmlentities($g['name']),
|
||||
"id" => intval($g['id']),
|
||||
"network" => $g['network'],
|
||||
"link" => $g['url'],
|
||||
"nick" => ($g['attag']) ? $g['attag'] : $g['nick'],
|
||||
"nick" => htmlentities(($g['attag']) ? $g['attag'] : $g['nick']),
|
||||
"forum" => $g['forum']
|
||||
);
|
||||
}
|
||||
|
|
@ -604,12 +603,12 @@ function acl_lookup(&$a, $out_type = 'json') {
|
|||
// /nickname
|
||||
$unknow_contacts[] = array(
|
||||
"type" => "c",
|
||||
"photo" => proxy_url($row['author-avatar']),
|
||||
"name" => $row['author-name'],
|
||||
"photo" => proxy_url($row['author-avatar'], false, PROXY_SIZE_MICRO),
|
||||
"name" => htmlentities($row['author-name']),
|
||||
"id" => '',
|
||||
"network" => "unknown",
|
||||
"link" => $row['author-link'],
|
||||
"nick" => $nick,
|
||||
"nick" => htmlentities($nick),
|
||||
"forum" => false
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,23 @@
|
|||
require_once("include/oembed.php");
|
||||
require_once('include/event.php');
|
||||
require_once('include/map.php');
|
||||
require_once('mod/proxy.php');
|
||||
|
||||
function bb_PictureCacheExt($matches) {
|
||||
if (strpos($matches[3], "data:image/") === 0)
|
||||
return ($matches[0]);
|
||||
|
||||
$matches[3] = proxy_url($matches[3]);
|
||||
return "[img=".$matches[1]."x".$matches[2]."]".$matches[3]."[/img]";
|
||||
}
|
||||
|
||||
function bb_PictureCache($matches) {
|
||||
if (strpos($matches[1], "data:image/") === 0)
|
||||
return ($matches[0]);
|
||||
|
||||
$matches[1] = proxy_url($matches[1]);
|
||||
return "[img]".$matches[1]."[/img]";
|
||||
}
|
||||
|
||||
function bb_map_coords($match) {
|
||||
// the extra space in the following line is intentional
|
||||
|
|
@ -101,9 +117,9 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
|
|||
$text = $oembed;
|
||||
else {
|
||||
if (($image != "") AND !strstr(strtolower($oembed), "<img "))
|
||||
$text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $url, $image, $title);
|
||||
$text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-image" /></a><br />', $url, proxy_url($image), $title);
|
||||
elseif (($preview != "") AND !strstr(strtolower($oembed), "<img "))
|
||||
$text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $url, $preview, $title);
|
||||
$text .= sprintf('<a href="%s" target="_blank"><img src="%s" alt="" title="%s" class="attachment-preview" /></a><br />', $url, proxy_url($preview), $title);
|
||||
|
||||
$text .= $oembed;
|
||||
|
||||
|
|
@ -455,7 +471,7 @@ function bb_replace_images($body, $images) {
|
|||
// We're depending on the property of 'foreach' (specified on the PHP website) that
|
||||
// it loops over the array starting from the first element and going sequentially
|
||||
// to the last element
|
||||
$newbody = str_replace('[$#saved_image' . $cnt . '#$]', '<img src="' . $image .'" alt="' . t('Image/photo') . '" />', $newbody);
|
||||
$newbody = str_replace('[$#saved_image' . $cnt . '#$]', '<img src="' . proxy_url($image) .'" alt="' . t('Image/photo') . '" />', $newbody);
|
||||
$cnt++;
|
||||
}
|
||||
|
||||
|
|
@ -585,7 +601,7 @@ function bb_ShareAttributes($share, $simplehtml) {
|
|||
default:
|
||||
$headline = trim($share[1]).'<div class="shared_header">';
|
||||
if ($avatar != "")
|
||||
$headline .= '<img src="'.$avatar.'" height="32" width="32" >';
|
||||
$headline .= '<img src="'.proxy_url($avatar, false, PROXY_SIZE_MICRO).'" height="32" width="32" >';
|
||||
|
||||
$headline .= sprintf(t('<span><a href="%s" target="_blank">%s</a> wrote the following <a href="%s" target="_blank">post</a>'.$reldate.':</span>'), $profile, $author, $link);
|
||||
$headline .= "</div>";
|
||||
|
|
@ -1102,13 +1118,17 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
|
|||
"<br /><strong class=".'"author"'.">" . $t_wrote . "</strong><blockquote>$2</blockquote>",
|
||||
$Text);
|
||||
|
||||
|
||||
// [img=widthxheight]image source[/img]
|
||||
//$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '<img src="$3" style="height: $2px; width: $1px;" >', $Text);
|
||||
$Text = preg_replace_callback("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", 'bb_PictureCacheExt', $Text);
|
||||
|
||||
$Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '<img src="$3" style="width: $1px;" >', $Text);
|
||||
$Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*)\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: $1px;" >', $Text);
|
||||
|
||||
// Images
|
||||
// [img]pathtoimage[/img]
|
||||
$Text = preg_replace_callback("/\[img\](.*?)\[\/img\]/ism", 'bb_PictureCache', $Text);
|
||||
|
||||
$Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
|
||||
$Text = preg_replace("/\[zmg\](.*?)\[\/zmg\]/ism", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ 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
|
||||
$poked_t = trim(sprintf($txt, "",""));
|
||||
$txt = str_replace( $poked_t, t($verb), $txt);
|
||||
|
|
@ -416,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 = '<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";
|
||||
}
|
||||
|
|
@ -451,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 = '<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";
|
||||
}
|
||||
}
|
||||
|
|
@ -461,7 +461,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
|||
$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";
|
||||
}
|
||||
}
|
||||
|
|
@ -678,7 +678,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
|||
'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,
|
||||
|
|
@ -697,7 +697,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
|
|||
'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,
|
||||
|
|
@ -813,10 +813,16 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
|
|||
if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
|
||||
$best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
|
||||
$sparkle = true;
|
||||
}
|
||||
else
|
||||
} else
|
||||
$best_url = $a->contacts[$clean_url]['url'];
|
||||
}
|
||||
} elseif (local_user()) {
|
||||
$r = q("SELECT `id`, `network` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s'",
|
||||
dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
|
||||
if ($r) {
|
||||
$best_url = $a->get_baseurl($ssl_state).'/redir/'.$r[0]['id'];
|
||||
$sparkle = true;
|
||||
}
|
||||
}
|
||||
if(! $best_url) {
|
||||
if(strlen($item['author-link']))
|
||||
|
|
@ -869,9 +875,17 @@ function item_photo_menu($item){
|
|||
$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' ORDER BY `uid` DESC 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 = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
|
||||
|
||||
} else
|
||||
$cid = 0;
|
||||
}
|
||||
}
|
||||
if(($cid) && (! $item['self'])) {
|
||||
|
|
@ -891,17 +905,25 @@ function item_photo_menu($item){
|
|||
|
||||
}
|
||||
|
||||
$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")] = $a->get_baseurl($ssl_state)."/follow?url=".urlencode($item['author-link']);
|
||||
} else
|
||||
$menu = array(t("View Profile") => $item['author-link']);
|
||||
|
||||
$args = array('item' => $item, 'menu' => $menu);
|
||||
|
||||
|
|
|
|||
|
|
@ -110,6 +110,9 @@ function diaspora_dispatch($importer,$msg,$attempt=1) {
|
|||
elseif($xmlbase->message) {
|
||||
$ret = diaspora_message($importer,$xmlbase->message,$msg);
|
||||
}
|
||||
elseif($xmlbase->participation) {
|
||||
$ret = diaspora_participation($importer,$xmlbase->participation);
|
||||
}
|
||||
else {
|
||||
logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true));
|
||||
}
|
||||
|
|
@ -589,7 +592,7 @@ function diaspora_request($importer,$xml) {
|
|||
// perhaps we were already sharing with this person. Now they're sharing with us.
|
||||
// That makes us friends.
|
||||
|
||||
if($contact['rel'] == CONTACT_IS_FOLLOWER && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) {
|
||||
if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) {
|
||||
q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
|
||||
intval(CONTACT_IS_FRIEND),
|
||||
intval($contact['id']),
|
||||
|
|
@ -771,7 +774,7 @@ function diaspora_post_allow($importer,$contact, $is_comment = false) {
|
|||
// 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 && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) {
|
||||
if($contact['rel'] == CONTACT_IS_FOLLOWER && in_array($importer['page-flags'], array(PAGE_FREELOVE))) {
|
||||
q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
|
||||
intval(CONTACT_IS_FRIEND),
|
||||
intval($contact['id']),
|
||||
|
|
@ -1834,7 +1837,7 @@ function diaspora_message($importer,$xml,$msg) {
|
|||
|
||||
$author_signature = base64_decode($msg_author_signature);
|
||||
|
||||
$person = find_diaspora_person_by_handle($msg_diaspora_handle);
|
||||
$person = find_diaspora_person_by_handle($msg_diaspora_handle);
|
||||
if(is_array($person) && x($person,'pubkey'))
|
||||
$key = $person['pubkey'];
|
||||
else {
|
||||
|
|
@ -1881,6 +1884,9 @@ function diaspora_message($importer,$xml,$msg) {
|
|||
return;
|
||||
}
|
||||
|
||||
function diaspora_participation($importer,$xml) {
|
||||
logger("Unsupported message type 'participation' ".print_r($xml, true));
|
||||
}
|
||||
|
||||
function diaspora_photo($importer,$xml,$msg,$attempt=1) {
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ function get_features() {
|
|||
t('General Features'),
|
||||
//array('expire', t('Content Expiration'), t('Remove old posts/comments after a period of time')),
|
||||
array('multi_profiles', t('Multiple Profiles'), t('Ability to create multiple profiles')),
|
||||
array('photo_location', t('Photo Location'), t('Photo metadata is normally stripped. This extracts the location (if present) prior to stripping metadata and links it to a map.'),false),
|
||||
),
|
||||
|
||||
// Post composition
|
||||
|
|
|
|||
|
|
@ -106,9 +106,17 @@ function feed_import($xml,$importer,&$contact, &$hub) {
|
|||
$header["wall"] = 0;
|
||||
$header["origin"] = 0;
|
||||
$header["gravity"] = GRAVITY_PARENT;
|
||||
$header["private"] = 2;
|
||||
$header["verb"] = ACTIVITY_POST;
|
||||
$header["object-type"] = ACTIVITY_OBJ_NOTE;
|
||||
|
||||
$header["contact-id"] = $contact["id"];
|
||||
|
||||
if(!strlen($contact["notify"])) {
|
||||
// one way feed - no remote comment ability
|
||||
$header["last-child"] = 0;
|
||||
}
|
||||
|
||||
if (!is_object($entries))
|
||||
return;
|
||||
|
||||
|
|
@ -193,8 +201,8 @@ function feed_import($xml,$importer,&$contact, &$hub) {
|
|||
|
||||
//$item["object"] = $xml;
|
||||
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s'",
|
||||
intval($importer["uid"]), dbesc($item["uri"]));
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `network` = '%s'",
|
||||
intval($importer["uid"]), dbesc($item["uri"]), dbesc(NETWORK_FEED));
|
||||
if ($r) {
|
||||
logger("Item with uri ".$item["uri"]." for user ".$importer["uid"]." already existed under id ".$r[0]["id"], LOGGER_DEBUG);
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -154,11 +154,7 @@ function new_contact($uid,$url,$interactive = false) {
|
|||
|
||||
$hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0);
|
||||
|
||||
if($ret['network'] === NETWORK_MAIL) {
|
||||
$writeable = 1;
|
||||
|
||||
}
|
||||
if($ret['network'] === NETWORK_DIASPORA)
|
||||
if(in_array($ret['network'], array(NETWORK_MAIL, NETWORK_DIASPORA)))
|
||||
$writeable = 1;
|
||||
|
||||
// check if we already have a contact
|
||||
|
|
@ -215,9 +211,7 @@ function new_contact($uid,$url,$interactive = false) {
|
|||
return $result;
|
||||
}
|
||||
|
||||
$new_relation = (($ret['network'] === NETWORK_MAIL) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
|
||||
if($ret['network'] === NETWORK_DIASPORA)
|
||||
$new_relation = CONTACT_IS_FOLLOWER;
|
||||
$new_relation = ((in_array($ret['network'], array(NETWORK_MAIL, NETWORK_DIASPORA))) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
|
||||
|
||||
// create contact record
|
||||
$r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `network`, `pubkey`, `rel`, `priority`,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ function gprobe_run(&$argv, &$argc){
|
|||
$result = Cache::get("gprobe:".$urlparts["host"]);
|
||||
if (!is_null($result)) {
|
||||
$result = unserialize($result);
|
||||
if ($result["network"] == NETWORK_FEED) {
|
||||
if (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) {
|
||||
logger("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), LOGGER_DEBUG);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ if(! function_exists('get_events')) {
|
|||
}
|
||||
|
||||
$today = ((substr($strt,0,10) === datetime_convert('UTC',$a->timezone,'now','Y-m-d')) ? true : false);
|
||||
|
||||
|
||||
$rr['title'] = $title;
|
||||
$rr['description'] = $desciption;
|
||||
$rr['date'] = day_translate(datetime_convert('UTC', $rr['adjust'] ? $a->timezone : 'UTC', $rr['start'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
|
||||
|
|
@ -533,21 +533,21 @@ function advanced_profile(&$a) {
|
|||
if($a->profile['name']) {
|
||||
|
||||
$tpl = get_markup_template('profile_advanced.tpl');
|
||||
|
||||
|
||||
$profile = array();
|
||||
|
||||
|
||||
$profile['fullname'] = array( t('Full Name:'), $a->profile['name'] ) ;
|
||||
|
||||
|
||||
if($a->profile['gender']) $profile['gender'] = array( t('Gender:'), $a->profile['gender'] );
|
||||
|
||||
|
||||
|
||||
if(($a->profile['dob']) && ($a->profile['dob'] != '0000-00-00')) {
|
||||
|
||||
|
||||
$year_bd_format = t('j F, Y');
|
||||
$short_bd_format = t('j F');
|
||||
|
||||
|
||||
$val = ((intval($a->profile['dob']))
|
||||
|
||||
$val = ((intval($a->profile['dob']))
|
||||
? day_translate(datetime_convert('UTC','UTC',$a->profile['dob'] . ' 00:00 +00:00',$year_bd_format))
|
||||
: day_translate(datetime_convert('UTC','UTC','2001-' . substr($a->profile['dob'],5) . ' 00:00 +00:00',$short_bd_format)));
|
||||
|
||||
|
|
@ -556,7 +556,7 @@ function advanced_profile(&$a) {
|
|||
}
|
||||
|
||||
if($age = age($a->profile['dob'],$a->profile['timezone'],'')) $profile['age'] = array( t('Age:'), $age );
|
||||
|
||||
|
||||
|
||||
if($a->profile['marital']) $profile['marital'] = array( t('Status:'), $a->profile['marital']);
|
||||
|
||||
|
|
@ -591,7 +591,7 @@ function advanced_profile(&$a) {
|
|||
if($txt = prepare_text($a->profile['contact'])) $profile['contact'] = array( t('Contact information and Social Networks:'), $txt);
|
||||
|
||||
if($txt = prepare_text($a->profile['music'])) $profile['music'] = array( t('Musical interests:'), $txt);
|
||||
|
||||
|
||||
if($txt = prepare_text($a->profile['book'])) $profile['book'] = array( t('Books, literature:'), $txt);
|
||||
|
||||
if($txt = prepare_text($a->profile['tv'])) $profile['tv'] = array( t('Television:'), $txt);
|
||||
|
|
@ -599,14 +599,14 @@ function advanced_profile(&$a) {
|
|||
if($txt = prepare_text($a->profile['film'])) $profile['film'] = array( t('Film/dance/culture/entertainment:'), $txt);
|
||||
|
||||
if($txt = prepare_text($a->profile['romance'])) $profile['romance'] = array( t('Love/Romance:'), $txt);
|
||||
|
||||
|
||||
if($txt = prepare_text($a->profile['work'])) $profile['work'] = array( t('Work/employment:'), $txt);
|
||||
|
||||
if($txt = prepare_text($a->profile['education'])) $profile['education'] = array( t('School/education:'), $txt );
|
||||
|
||||
|
||||
if ($a->profile['uid'] == local_user())
|
||||
$profile['edit'] = array($a->get_baseurl(). '/profiles/'.$a->profile['id'], t('Edit profile'),"", t('Edit profile'));
|
||||
|
||||
|
||||
return replace_macros($tpl, array(
|
||||
'$title' => t('Profile'),
|
||||
'$profile' => $profile
|
||||
|
|
@ -664,14 +664,15 @@ if(! function_exists('profile_tabs')){
|
|||
);
|
||||
|
||||
if ($is_owner){
|
||||
$tabs[] = array(
|
||||
'label' => t('Events'),
|
||||
'url' => $a->get_baseurl() . '/events',
|
||||
'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
|
||||
'title' => t('Events and Calendar'),
|
||||
'id' => 'events-tab',
|
||||
'accesskey' => 'e',
|
||||
);
|
||||
if ($a->theme_events_in_profile)
|
||||
$tabs[] = array(
|
||||
'label' => t('Events'),
|
||||
'url' => $a->get_baseurl() . '/events',
|
||||
'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
|
||||
'title' => t('Events and Calendar'),
|
||||
'id' => 'events-tab',
|
||||
'accesskey' => 'e',
|
||||
);
|
||||
$tabs[] = array(
|
||||
'label' => t('Personal Notes'),
|
||||
'url' => $a->get_baseurl() . '/notes',
|
||||
|
|
@ -709,7 +710,7 @@ function zrl_init(&$a) {
|
|||
$result = Cache::get("gprobe:".$urlparts["host"]);
|
||||
if (!is_null($result)) {
|
||||
$result = unserialize($result);
|
||||
if ($result["network"] == NETWORK_FEED) {
|
||||
if (in_array($result["network"], array(NETWORK_FEED, NETWORK_PHANTOM))) {
|
||||
logger("DDoS attempt detected for ".$urlparts["host"]." by ".$_SERVER["REMOTE_ADDR"].". server data: ".print_r($_SERVER, true), LOGGER_DEBUG);
|
||||
return;
|
||||
}
|
||||
|
|
@ -737,8 +738,8 @@ function zrl($s,$force = false) {
|
|||
|
||||
// Used from within PCSS themes to set theme parameters. If there's a
|
||||
// puid request variable, that is the "page owner" and normally their theme
|
||||
// settings take precedence; unless a local user sets the "always_my_theme"
|
||||
// system pconfig, which means they don't want to see anybody else's theme
|
||||
// settings take precedence; unless a local user sets the "always_my_theme"
|
||||
// system pconfig, which means they don't want to see anybody else's theme
|
||||
// settings except their own while on this site.
|
||||
|
||||
function get_theme_uid() {
|
||||
|
|
|
|||
|
|
@ -1239,10 +1239,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
|||
$arr['guid'] = ((x($arr,'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $guid_prefix));
|
||||
$arr['uri'] = ((x($arr,'uri')) ? notags(trim($arr['uri'])) : $arr['guid']);
|
||||
$arr['extid'] = ((x($arr,'extid')) ? notags(trim($arr['extid'])) : '');
|
||||
$arr['author-name'] = ((x($arr,'author-name')) ? notags(trim($arr['author-name'])) : '');
|
||||
$arr['author-name'] = ((x($arr,'author-name')) ? trim($arr['author-name']) : '');
|
||||
$arr['author-link'] = ((x($arr,'author-link')) ? notags(trim($arr['author-link'])) : '');
|
||||
$arr['author-avatar'] = ((x($arr,'author-avatar')) ? notags(trim($arr['author-avatar'])) : '');
|
||||
$arr['owner-name'] = ((x($arr,'owner-name')) ? notags(trim($arr['owner-name'])) : '');
|
||||
$arr['owner-name'] = ((x($arr,'owner-name')) ? trim($arr['owner-name']) : '');
|
||||
$arr['owner-link'] = ((x($arr,'owner-link')) ? notags(trim($arr['owner-link'])) : '');
|
||||
$arr['owner-avatar'] = ((x($arr,'owner-avatar')) ? notags(trim($arr['owner-avatar'])) : '');
|
||||
$arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
|
||||
|
|
@ -1250,8 +1250,8 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
|||
$arr['commented'] = ((x($arr,'commented') !== false) ? datetime_convert('UTC','UTC',$arr['commented']) : datetime_convert());
|
||||
$arr['received'] = ((x($arr,'received') !== false) ? datetime_convert('UTC','UTC',$arr['received']) : datetime_convert());
|
||||
$arr['changed'] = ((x($arr,'changed') !== false) ? datetime_convert('UTC','UTC',$arr['changed']) : datetime_convert());
|
||||
$arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
|
||||
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : '');
|
||||
$arr['title'] = ((x($arr,'title')) ? trim($arr['title']) : '');
|
||||
$arr['location'] = ((x($arr,'location')) ? trim($arr['location']) : '');
|
||||
$arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : '');
|
||||
$arr['last-child'] = ((x($arr,'last-child')) ? intval($arr['last-child']) : 0 );
|
||||
$arr['visible'] = ((x($arr,'visible') !== false) ? intval($arr['visible']) : 1 );
|
||||
|
|
@ -1287,11 +1287,24 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
|||
}
|
||||
|
||||
if ($arr['network'] == "") {
|
||||
$r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($arr['contact-id']),
|
||||
$r = q("SELECT `network` FROM `contact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS),
|
||||
dbesc(normalise_link($arr['author-link'])),
|
||||
intval($arr['uid'])
|
||||
);
|
||||
|
||||
if(!count($r))
|
||||
$r = q("SELECT `network` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' LIMIT 1",
|
||||
dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS),
|
||||
dbesc(normalise_link($arr['author-link']))
|
||||
);
|
||||
|
||||
if(!count($r))
|
||||
$r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval($arr['contact-id']),
|
||||
intval($arr['uid'])
|
||||
);
|
||||
|
||||
if(count($r))
|
||||
$arr['network'] = $r[0]["network"];
|
||||
|
||||
|
|
@ -1476,9 +1489,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
|||
$arr = $unescaped;
|
||||
|
||||
// find the item we just created
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d ORDER BY `id` ASC ",
|
||||
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `network` = '%s' ORDER BY `id` ASC ",
|
||||
dbesc($arr['uri']),
|
||||
intval($arr['uid'])
|
||||
intval($arr['uid']),
|
||||
dbesc($arr['network'])
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
|
|
|
|||
|
|
@ -240,6 +240,7 @@ function nav_set_selected($item){
|
|||
'settings' => null,
|
||||
'contacts' => null,
|
||||
'manage' => null,
|
||||
'events' => null,
|
||||
'register' => null,
|
||||
);
|
||||
$a->nav_sel[$item] = 'selected';
|
||||
|
|
|
|||
|
|
@ -309,16 +309,25 @@ function xml_status($st, $message = '') {
|
|||
|
||||
|
||||
if(! function_exists('http_status_exit')) {
|
||||
function http_status_exit($val) {
|
||||
|
||||
function http_status_exit($val, $description = array()) {
|
||||
$err = '';
|
||||
if($val >= 400)
|
||||
if($val >= 400) {
|
||||
$err = 'Error';
|
||||
if (!isset($description["title"]))
|
||||
$description["title"] = $err." ".$val;
|
||||
}
|
||||
if($val >= 200 && $val < 300)
|
||||
$err = 'OK';
|
||||
|
||||
logger('http_status_exit ' . $val);
|
||||
header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
|
||||
|
||||
if (isset($description["title"])) {
|
||||
$tpl = get_markup_template('http_status.tpl');
|
||||
echo replace_macros($tpl, array('$title' => $description["title"],
|
||||
'$description' => $description["description"]));
|
||||
}
|
||||
|
||||
killme();
|
||||
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ function oembed_format_object($j){
|
|||
case "rich": {
|
||||
// not so safe..
|
||||
if (!get_config("system","no_oembed_rich_content"))
|
||||
$ret.= $jhtml;
|
||||
$ret.= proxy_parse_html($jhtml);
|
||||
}; break;
|
||||
}
|
||||
|
||||
|
|
|
|||
27
include/photos.php
Normal file
27
include/photos.php
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
/**
|
||||
* @file include/photos.php
|
||||
* @brief Functions related to photo handling.
|
||||
*/
|
||||
|
||||
function getGps($exifCoord, $hemi) {
|
||||
$degrees = count($exifCoord) > 0 ? gps2Num($exifCoord[0]) : 0;
|
||||
$minutes = count($exifCoord) > 1 ? gps2Num($exifCoord[1]) : 0;
|
||||
$seconds = count($exifCoord) > 2 ? gps2Num($exifCoord[2]) : 0;
|
||||
|
||||
$flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1;
|
||||
|
||||
return floatval($flip * ($degrees + ($minutes / 60) + ($seconds / 3600)));
|
||||
}
|
||||
|
||||
function gps2Num($coordPart) {
|
||||
$parts = explode('/', $coordPart);
|
||||
|
||||
if (count($parts) <= 0)
|
||||
return 0;
|
||||
|
||||
if (count($parts) == 1)
|
||||
return $parts[0];
|
||||
|
||||
return floatval($parts[0]) / floatval($parts[1]);
|
||||
}
|
||||
|
|
@ -570,7 +570,7 @@ function poco_last_updated($profile, $force = false) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (($data["poll"] == "") OR ($data["network"] == NETWORK_FEED)) {
|
||||
if (($data["poll"] == "") OR (in_array($data["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))) {
|
||||
q("UPDATE `gcontact` SET `last_failure` = '%s' WHERE `nurl` = '%s'",
|
||||
dbesc(datetime_convert()), dbesc(normalise_link($profile)));
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -970,7 +970,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
|
|||
. (($click) ? ' fakelink' : '') . '" '
|
||||
. (($redir) ? ' target="redir" ' : '')
|
||||
. (($url) ? ' href="' . $url . '"' : '') . $click . ' ><img class="contact-block-img' . $class . $sparkle . '" src="'
|
||||
. proxy_url($contact['micro']) . '" title="' . $contact['name'] . ' [' . $contact['url'] . ']" alt="' . $contact['name']
|
||||
. proxy_url($contact['micro'], false, PROXY_SIZE_THUMB) . '" title="' . $contact['name'] . ' [' . $contact['url'] . ']" alt="' . $contact['name']
|
||||
. '" /></a></div>' . "\r\n";
|
||||
}
|
||||
}}
|
||||
|
|
@ -1410,9 +1410,6 @@ function prepare_body(&$item,$attach = false, $preview = false) {
|
|||
put_item_in_cache($item, true);
|
||||
$s = $item["rendered-html"];
|
||||
|
||||
require_once("mod/proxy.php");
|
||||
$s = proxy_parse_html($s);
|
||||
|
||||
$prep_arr = array('item' => $item, 'html' => $s, 'preview' => $preview);
|
||||
call_hooks('prepare_body', $prep_arr);
|
||||
$s = $prep_arr['html'];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue