use Friendica\BaseObject;
use Friendica\Content\ContactSelector;
-use Friendica\Content\Feature;
use Friendica\Core\Addon;
use Friendica\Core\Config;
+use Friendica\Core\Hook;
use Friendica\Core\L10n;
+use Friendica\Core\Logger;
use Friendica\Core\PConfig;
-use Friendica\Database\DBM;
+use Friendica\Core\Protocol;
+use Friendica\Core\Renderer;
+use Friendica\Database\DBA;
use Friendica\Model\Contact;
+use Friendica\Model\Item;
+use Friendica\Model\Term;
+use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
+use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\Strings;
use Friendica\Util\Temporal;
-use dba;
-
-require_once 'include/dba.php';
-require_once 'include/text.php';
-require_once 'boot.php';
-require_once 'include/conversation.php';
/**
* An item
private $comment_box_template = 'comment_item.tpl';
private $toplevel = false;
private $writable = false;
+ /**
+ * @var Post[]
+ */
private $children = [];
private $parent = null;
+
+ /**
+ * @var Thread
+ */
private $thread = null;
private $redirect_url = null;
private $owner_url = '';
* Constructor
*
* @param array $data data array
+ * @throws \Exception
*/
public function __construct(array $data)
{
- $a = self::getApp();
-
$this->data = $data;
$this->setTemplate('wall');
$this->toplevel = $this->getId() == $this->getDataValue('parent');
- if (x($_SESSION, 'remote') && is_array($_SESSION['remote'])) {
+ if (!empty($_SESSION['remote']) && is_array($_SESSION['remote'])) {
foreach ($_SESSION['remote'] as $visitor) {
if ($visitor['cid'] == $this->getDataValue('contact-id')) {
$this->visiting = true;
}
$this->writable = $this->getDataValue('writable') || $this->getDataValue('self');
- $this->redirect_url = Contact::magicLinkById($this->getDataValue('cid'));
-
+ $author = ['uid' => 0, 'id' => $this->getDataValue('author-id'),
+ 'network' => $this->getDataValue('author-network'),
+ 'url' => $this->getDataValue('author-link')];
+ $this->redirect_url = Contact::magicLinkbyContact($author);
if (!$this->isToplevel()) {
$this->threaded = true;
}
if (!empty($data['children'])) {
foreach ($data['children'] as $item) {
// Only add will be displayed
- if ($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) {
+ if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) {
continue;
} elseif (!visible_activity($item)) {
continue;
}
// You can always comment on Diaspora and OStatus items
- if (in_array($item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA]) && (local_user() == $item['uid'])) {
+ if (in_array($item['network'], [Protocol::OSTATUS, Protocol::DIASPORA]) && (local_user() == $item['uid'])) {
$item['writable'] = true;
}
/**
* Get data in a form usable by a conversation template
*
- * @param object $conv_responses conversation responses
+ * @param array $conv_responses conversation responses
* @param integer $thread_level default = 1
*
* @return mixed The data requested on success
* false on failure
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ * @throws \ImagickException
*/
- public function getTemplateData($conv_responses, $thread_level = 1)
+ public function getTemplateData(array $conv_responses, $thread_level = 1)
{
- require_once "mod/proxy.php";
-
- $result = [];
-
$a = self::getApp();
$item = $this->getData();
'relative' => Temporal::getRelativeDate($item['edited'])
];
}
- $commentww = '';
$sparkle = '';
$buttons = '';
$dropping = false;
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? L10n::t('Private Message')
: false);
+
$shareable = in_array($conv->getProfileOwner(), [0, local_user()]) && $item['private'] != 1;
- if (local_user() && link_compare($a->contact['url'], $item['author-link'])) {
- if ($item["event-id"] != 0) {
- $edpost = ["events/event/" . $item['event-id'], L10n::t("Edit")];
- } else {
- $edpost = ["editpost/" . $item['id'], L10n::t("Edit")];
+ $edpost = false;
+
+ if (local_user()) {
+ if (Strings::compareLink($a->contact['url'], $item['author-link'])) {
+ if ($item["event-id"] != 0) {
+ $edpost = ["events/event/" . $item['event-id'], L10n::t("Edit")];
+ } else {
+ $edpost = ["editpost/" . $item['id'], L10n::t("Edit")];
+ }
}
$dropping = in_array($item['uid'], [0, local_user()]);
- } else {
- $edpost = false;
}
// Editing on items of not subscribed users isn't currently possible
if (!$origin) {
/// @todo This shouldn't be done as query here, but better during the data creation.
// it is now done here, since during the RC phase we shouldn't make to intense changes.
- $parent = dba::selectFirst('item', ['origin'], ['id' => $item['parent']]);
- if (DBM::is_result($parent)) {
+ $parent = Item::selectFirst(['origin'], ['id' => $item['parent']]);
+ if (DBA::isResult($parent)) {
$origin = $parent['origin'];
}
}
- // Showing the one or the other text, depending upon if we can only hide it or really delete it.
- $delete = $origin ? L10n::t('Delete globally') : L10n::t('Remove locally');
+ if ($origin && ($item['id'] != $item['parent']) && ($item['network'] == Protocol::ACTIVITYPUB)) {
+ // ActivityPub doesn't allow removal of remote comments
+ $delete = L10n::t('Delete locally');
+ } else {
+ // Showing the one or the other text, depending upon if we can only hide it or really delete it.
+ $delete = $origin ? L10n::t('Delete globally') : L10n::t('Remove locally');
+ }
$drop = [
'dropping' => $dropping,
- 'pagedrop' => ((Feature::isEnabled($conv->getProfileOwner(), 'multi_delete')) ? $item['pagedrop'] : ''),
+ 'pagedrop' => $item['pagedrop'],
'select' => L10n::t('Select'),
'delete' => $delete,
];
$filer = (($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) ? L10n::t("save to folder") : false);
- $diff_author = !link_compare($item['url'], $item['author-link']);
- $profile_name = htmlentities(((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']);
- if ($item['author-link'] && (!$item['author-name'])) {
+ $profile_name = $item['author-name'];
+ if (!empty($item['author-link']) && empty($item['author-name'])) {
$profile_name = $item['author-link'];
}
- $profile_link = Contact::magicLinkById($item['author-id']);
- if (strpos($profile_link, 'redir/') === 0) {
- $sparkle = ' sparkle';
- }
+ $author = ['uid' => 0, 'id' => $item['author-id'],
+ 'network' => $item['author-network'], 'url' => $item['author-link']];
- if (($item['network'] == NETWORK_FEED) || empty($item['author-thumb'])) {
- $item['author-thumb'] = $item['author-avatar'];
+ if (local_user() || remote_user()) {
+ $profile_link = Contact::magicLinkbyContact($author);
+ } else {
+ $profile_link = $item['author-link'];
}
- if (($item['network'] == NETWORK_FEED) || empty($item['owner-thumb'])) {
- $item['owner-thumb'] = $item['owner-avatar'];
+ if (strpos($profile_link, 'redir/') === 0) {
+ $sparkle = ' sparkle';
}
$locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => ''];
- Addon::callHooks('render_location', $locate);
+ Hook::callAll('render_location', $locate);
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
// process action responses - e.g. like/dislike/attend/agree/whatever
}
}
- $responses = get_responses($conv_responses, $response_verbs, $this, $item);
+ $responses = get_responses($conv_responses, $response_verbs, $item, $this);
foreach ($response_verbs as $value => $verbs) {
- $responses[$verbs]['output'] = x($conv_responses[$verbs], $item['uri']) ? format_like($conv_responses[$verbs][$item['uri']], $conv_responses[$verbs][$item['uri'] . '-l'], $verbs, $item['uri']) : '';
+ $responses[$verbs]['output'] = !empty($conv_responses[$verbs][$item['uri']]) ? format_like($conv_responses[$verbs][$item['uri']], $conv_responses[$verbs][$item['uri'] . '-l'], $verbs, $item['uri']) : '';
}
/*
$tagger = '';
if ($this->isToplevel()) {
- if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) {
- $isstarred = (($item['starred']) ? "starred" : "unstarred");
-
- $star = [
- 'do' => L10n::t("add star"),
- 'undo' => L10n::t("remove star"),
- 'toggle' => L10n::t("toggle star status"),
- 'classdo' => $item['starred'] ? "hidden" : "",
- 'classundo' => $item['starred'] ? "" : "hidden",
- 'starred' => L10n::t('starred'),
- ];
-
- $thread = dba::selectFirst('thread', ['ignored'], ['uid' => $item['uid'], 'iid' => $item['id']]);
- if (DBM::is_result($thread)) {
+ if(local_user()) {
+ $thread = Item::selectFirstThreadForUser(local_user(), ['ignored'], ['iid' => $item['id']]);
+ if (DBA::isResult($thread)) {
$ignore = [
'do' => L10n::t("ignore thread"),
'undo' => L10n::t("unignore thread"),
];
}
- if (Feature::isEnabled($conv->getProfileOwner(), 'commtag')) {
+ if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) {
+ $isstarred = (($item['starred']) ? "starred" : "unstarred");
+
+ $star = [
+ 'do' => L10n::t("add star"),
+ 'undo' => L10n::t("remove star"),
+ 'toggle' => L10n::t("toggle star status"),
+ 'classdo' => $item['starred'] ? "hidden" : "",
+ 'classundo' => $item['starred'] ? "" : "hidden",
+ 'starred' => L10n::t('starred'),
+ ];
+
$tagger = [
'add' => L10n::t("add tag"),
'class' => "",
if ($conv->isWritable()) {
$buttons = [
'like' => [L10n::t("I like this \x28toggle\x29"), L10n::t("like")],
- 'dislike' => Feature::isEnabled($conv->getProfileOwner(), 'dislike') ? [L10n::t("I don't like this \x28toggle\x29"), L10n::t("dislike")] : '',
+ 'dislike' => [L10n::t("I don't like this \x28toggle\x29"), L10n::t("dislike")],
];
if ($shareable) {
$buttons['share'] = [L10n::t('Share this'), L10n::t('share')];
localize_item($item);
- $body = prepare_body($item, true);
+ $body = Item::prepareBody($item, true);
list($categories, $folders) = get_cats_and_terms($item);
$owner_name_e = $this->getOwnerName();
// Disable features that aren't available in several networks
- if (!in_array($item["item_network"], [NETWORK_DFRN, NETWORK_DIASPORA]) && isset($buttons["dislike"])) {
+ if (!in_array($item["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA]) && isset($buttons["dislike"])) {
unset($buttons["dislike"]);
$isevent = false;
$tagger = '';
}
- if (($item["item_network"] == NETWORK_FEED) && isset($buttons["like"])) {
+ if (($item["network"] == Protocol::FEED) && isset($buttons["like"])) {
unset($buttons["like"]);
}
- if (($item["item_network"] == NETWORK_MAIL) && isset($buttons["like"])) {
+ if (($item["network"] == Protocol::MAIL) && isset($buttons["like"])) {
unset($buttons["like"]);
}
+ $tags = Term::populateTagsFromItem($item);
+
$tmp_item = [
'template' => $this->getTemplate(),
'type' => implode("", array_slice(explode("/", $item['verb']), -1)),
'suppress_tags' => Config::get('system', 'suppress_tags'),
- 'tags' => $item['tags'],
- 'hashtags' => $item['hashtags'],
- 'mentions' => $item['mentions'],
+ 'tags' => $tags['tags'],
+ 'hashtags' => $tags['hashtags'],
+ 'mentions' => $tags['mentions'],
'txt_cats' => L10n::t('Categories:'),
'txt_folders' => L10n::t('Filed under:'),
'has_cats' => ((count($categories)) ? 'true' : ''),
'guid' => urlencode($item['guid']),
'isevent' => $isevent,
'attend' => $attend,
- 'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, defaults($item, 'author-link', $item['url'])),
- 'olinktitle' => L10n::t('View %s\'s profile @ %s', htmlentities($this->getOwnerName()), defaults($item, 'owner-link', $item['url'])),
+ 'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, $item['author-link']),
+ 'olinktitle' => L10n::t('View %s\'s profile @ %s', $this->getOwnerName(), $item['owner-link']),
'to' => L10n::t('to'),
'via' => L10n::t('via'),
'wall' => L10n::t('Wall-to-Wall'),
'profile_url' => $profile_link,
'item_photo_menu' => item_photo_menu($item),
'name' => $name_e,
- 'thumb' => $a->remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)),
+ 'thumb' => $a->removeBaseURL(ProxyUtils::proxifyUrl($item['author-avatar'], false, ProxyUtils::SIZE_THUMB)),
'osparkle' => $osparkle,
'sparkle' => $sparkle,
'title' => $title_e,
'location' => $location_e,
'indent' => $indent,
'shiny' => $shiny,
+ 'owner_self' => $item['author-link'] == defaults($_SESSION, 'my_url', null),
'owner_url' => $this->getOwnerUrl(),
- 'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)),
- 'owner_name' => htmlentities($owner_name_e),
- 'plink' => get_plink($item),
- 'edpost' => Feature::isEnabled($conv->getProfileOwner(), 'edit_posts') ? $edpost : '',
+ 'owner_photo' => $a->removeBaseURL(ProxyUtils::proxifyUrl($item['owner-avatar'], false, ProxyUtils::SIZE_THUMB)),
+ 'owner_name' => $owner_name_e,
+ 'plink' => Item::getPlink($item),
+ 'edpost' => $edpost,
'isstarred' => $isstarred,
- 'star' => Feature::isEnabled($conv->getProfileOwner(), 'star_posts') ? $star : '',
- 'ignore' => Feature::isEnabled($conv->getProfileOwner(), 'ignore_posts') ? $ignore : '',
+ 'star' => $star,
+ 'ignore' => $ignore,
'tagger' => $tagger,
- 'filer' => Feature::isEnabled($conv->getProfileOwner(), 'filing') ? $filer : '',
+ 'filer' => $filer,
'drop' => $drop,
'vote' => $buttons,
'like' => $responses['like']['output'],
'wait' => L10n::t('Please wait'),
'thread_level' => $thread_level,
'edited' => $edited,
- 'network' => $item["item_network"],
- 'network_name' => ContactSelector::networkToName($item['item_network'], $profile_link),
+ 'network' => $item["network"],
+ 'network_name' => ContactSelector::networkToName($item['network'], $item['author-link']),
'received' => $item['received'],
'commented' => $item['commented'],
'created_date' => $item['created'],
+ 'return' => ($a->cmd) ? bin2hex($a->cmd) : '',
+ 'delivery' => [
+ 'queue_count' => $item['delivery_queue_count'],
+ 'queue_done' => $item['delivery_queue_done'],
+ 'notifier_pending' => L10n::t('Notifier task is pending'),
+ 'delivery_pending' => L10n::t('Delivery to remote servers is pending'),
+ 'delivery_underway' => L10n::t('Delivery to remote servers is underway'),
+ 'delivery_almost' => L10n::t('Delivery to remote servers is mostly done'),
+ ],
];
$arr = ['item' => $item, 'output' => $tmp_item];
- Addon::callHooks('display_item', $arr);
+ Hook::callAll('display_item', $arr);
$result = $arr['output'];
/**
* Add a child item
*
- * @param object $item The child item to add
+ * @param Post $item The child item to add
*
* @return mixed
+ * @throws \Exception
*/
public function addChild(Post $item)
{
$item_id = $item->getId();
if (!$item_id) {
- logger('[ERROR] Post::addChild : Item has no ID!!', LOGGER_DEBUG);
+ Logger::log('[ERROR] Post::addChild : Item has no ID!!', Logger::DEBUG);
return false;
} elseif ($this->getChild($item->getId())) {
- logger('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', LOGGER_DEBUG);
+ Logger::log('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', Logger::DEBUG);
return false;
}
/*
* Only add what will be displayed
*/
- if ($item->getDataValue('network') === NETWORK_MAIL && local_user() != $item->getDataValue('uid')) {
+ if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) {
return false;
} elseif (activity_match($item->getDataValue('verb'), ACTIVITY_LIKE) || activity_match($item->getDataValue('verb'), ACTIVITY_DISLIKE)) {
return false;
/**
* Get all our children
*
- * @return object
+ * @return Post[]
*/
public function getChildren()
{
/**
* Set our parent
*
- * @param object $item The item to set as parent
+ * @param Post $item The item to set as parent
*
* @return void
*/
- protected function setParent($item)
+ protected function setParent(Post $item)
{
$parent = $this->getParent();
if ($parent) {
/**
* Remove a child
*
- * @param object $item The child to be removed
+ * @param Post $item The child to be removed
*
* @return boolean Success or failure
+ * @throws \Exception
*/
- public function removeChild($item)
+ public function removeChild(Post $item)
{
$id = $item->getId();
foreach ($this->getChildren() as $key => $child) {
return true;
}
}
- logger('[WARN] Item::removeChild : Item is not a child (' . $id . ').', LOGGER_DEBUG);
+ Logger::log('[WARN] Item::removeChild : Item is not a child (' . $id . ').', Logger::DEBUG);
return false;
}
}
/**
- * Set conversation
+ * Set conversation thread
*
- * @param object $conv The conversation
+ * @param Thread $thread
*
* @return void
*/
- public function setThread($conv)
+ public function setThread(Thread $thread = null)
{
- $previous_mode = ($this->thread ? $this->thread->getMode() : '');
-
- $this->thread = $conv;
+ $this->thread = $thread;
// Set it on our children too
foreach ($this->getChildren() as $child) {
- $child->setThread($conv);
+ $child->setThread($thread);
}
}
/**
* Get conversation
*
- * @return object
+ * @return Thread
*/
public function getThread()
{
/**
* Get a data value
*
- * @param object $name key
+ * @param string $name key
*
* @return mixed value on success
* false on failure
public function getDataValue($name)
{
if (!isset($this->data[$name])) {
- // logger('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', LOGGER_DEBUG);
+ // Logger::log('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', Logger::DEBUG);
return false;
}
/**
* Set template
*
- * @param object $name template name
- *
- * @return void
+ * @param string $name template name
+ * @return bool
+ * @throws \Exception
*/
private function setTemplate($name)
{
- if (!x($this->available_templates, $name)) {
- logger('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', LOGGER_DEBUG);
+ if (empty($this->available_templates[$name])) {
+ Logger::log('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', Logger::DEBUG);
return false;
}
$this->template = $this->available_templates[$name];
+
+ return true;
}
/**
return $this->comment_box_template;
}
+ /**
+ * Get default text for the comment box
+ *
+ * @return string
+ */
+ private function getDefaultText()
+ {
+ if (!local_user()) {
+ return;
+ }
+
+ $a = self::getApp();
+
+ $item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
+ if (!DBA::isResult($item) || empty($item['author-addr'])) {
+ // Should not happen
+ return '';
+ }
+
+ if ($item['author-addr'] != $a->profile['addr']) {
+ $text = '@' . $item['author-addr'] . ' ';
+ } else {
+ $text = '';
+ }
+
+ $terms = Term::tagArrayFromItemId($this->getId(), TERM_MENTION);
+
+ foreach ($terms as $term) {
+ $profile = Contact::getDetailsByURL($term['url']);
+ if (!empty($profile['addr']) && ($profile['contact-type'] != Contact::TYPE_COMMUNITY) &&
+ ($profile['addr'] != $a->profile['addr']) && !strstr($text, $profile['addr'])) {
+ $text .= '@' . $profile['addr'] . ' ';
+ }
+ }
+
+ return $text;
+ }
+
/**
* Get the comment box
*
*
* @return mixed The comment box string (empty if no comment box)
* false on failure
+ * @throws \Exception
*/
private function getCommentBox($indent)
{
}
if ($conv->isWritable() && $this->isWritable()) {
- $qc = $qcomment = null;
+ $qcomment = null;
/*
* Hmmm, code depending on the presence of a particular addon?
* This should be better if done by a hook
*/
- if (in_array('qcomment', $a->addons)) {
+ if (Addon::isEnabled('qcomment')) {
$qc = ((local_user()) ? PConfig::get(local_user(), 'qcomment', 'words') : null);
$qcomment = (($qc) ? explode("\n", $qc) : null);
}
$uid = $conv->getProfileOwner();
$parent_uid = $this->getDataValue('uid');
+ $default_text = $this->getDefaultText();
+
if (!is_null($parent_uid) && ($uid != $parent_uid)) {
$uid = $parent_uid;
}
- $template = get_markup_template($this->getCommentBoxTemplate());
- $comment_box = replace_macros($template, [
+ $template = Renderer::getMarkupTemplate($this->getCommentBoxTemplate());
+ $comment_box = Renderer::replaceMacros($template, [
'$return_path' => $a->query_string,
'$threaded' => $this->isThreaded(),
'$jsreload' => '',
- '$type' => $conv->getMode() === 'profile' ? 'wall-comment' : 'net-comment',
+ '$wall' => ($conv->getMode() === 'profile'),
'$id' => $this->getId(),
'$parent' => $this->getId(),
'$qcomment' => $qcomment,
+ '$default' => $default_text,
'$profile_uid' => $uid,
- '$mylink' => $a->remove_baseurl($a->contact['url']),
+ '$mylink' => $a->removeBaseURL($a->contact['url']),
'$mytitle' => L10n::t('This is you'),
- '$myphoto' => $a->remove_baseurl($a->contact['thumb']),
+ '$myphoto' => $a->removeBaseURL($a->contact['thumb']),
'$comment' => L10n::t('Comment'),
'$submit' => L10n::t('Submit'),
'$edbold' => L10n::t('Bold'),
'$edcode' => L10n::t('Code'),
'$edimg' => L10n::t('Image'),
'$edurl' => L10n::t('Link'),
- '$edvideo' => L10n::t('Video'),
- '$preview' => ((Feature::isEnabled($conv->getProfileOwner(), 'preview')) ? L10n::t('Preview') : ''),
+ '$edattach' => L10n::t('Link or Media'),
+ '$prompttext' => L10n::t('Please enter a image/video/audio/webpage URL:'),
+ '$preview' => L10n::t('Preview'),
'$indent' => $indent,
'$sourceapp' => L10n::t($a->sourcename),
'$ww' => $conv->getMode() === 'network' ? $ww : '',
- '$rand_num' => random_digits(12)
+ '$rand_num' => Crypto::randomDigits(12)
]);
}
* Check if we are a wall to wall item and set the relevant properties
*
* @return void
+ * @throws \Exception
*/
protected function checkWallToWall()
{
$this->owner_name = $a->page_contact['name'];
$this->wall_to_wall = true;
} elseif ($this->getDataValue('owner-link')) {
- $owner_linkmatch = (($this->getDataValue('owner-link')) && link_compare($this->getDataValue('owner-link'), $this->getDataValue('author-link')));
- $alias_linkmatch = (($this->getDataValue('alias')) && link_compare($this->getDataValue('alias'), $this->getDataValue('author-link')));
+ $owner_linkmatch = (($this->getDataValue('owner-link')) && Strings::compareLink($this->getDataValue('owner-link'), $this->getDataValue('author-link')));
+ $alias_linkmatch = (($this->getDataValue('alias')) && Strings::compareLink($this->getDataValue('alias'), $this->getDataValue('author-link')));
$owner_namematch = (($this->getDataValue('owner-name')) && $this->getDataValue('owner-name') == $this->getDataValue('author-name'));
- if ((!$owner_linkmatch) && (!$alias_linkmatch) && (!$owner_namematch)) {
+ if (!$owner_linkmatch && !$alias_linkmatch && !$owner_namematch) {
// The author url doesn't match the owner (typically the contact)
// and also doesn't match the contact alias.
// The name match is a hack to catch several weird cases where URLs are
$this->owner_photo = $this->getDataValue('owner-avatar');
$this->owner_name = $this->getDataValue('owner-name');
$this->wall_to_wall = true;
- $this->owner_url = Contact::magicLinkById($this->getDataValue('owner-id'));
+
+ $owner = ['uid' => 0, 'id' => $this->getDataValue('owner-id'),
+ 'network' => $this->getDataValue('owner-network'),
+ 'url' => $this->getDataValue('owner-link')];
+ $this->owner_url = Contact::magicLinkbyContact($owner);
}
}
}