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\Logger;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
+use Friendica\Core\Session;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Model\Contact;
use Friendica\Model\Item;
use Friendica\Model\Term;
+use Friendica\Model\User;
use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Proxy as ProxyUtils;
$this->setTemplate('wall');
$this->toplevel = $this->getId() == $this->getDataValue('parent');
- if (!empty($_SESSION['remote']) && is_array($_SESSION['remote'])) {
- foreach ($_SESSION['remote'] as $visitor) {
- if ($visitor['cid'] == $this->getDataValue('contact-id')) {
- $this->visiting = true;
- break;
- }
- }
+ if (!empty(Session::getUserIDForVisitorContactID($this->getDataValue('contact-id')))) {
+ $this->visiting = true;
}
$this->writable = $this->getDataValue('writable') || $this->getDataValue('self');
$author = ['uid' => 0, 'id' => $this->getDataValue('author-id'),
'network' => $this->getDataValue('author-network'),
'url' => $this->getDataValue('author-link')];
- $this->redirect_url = Contact::magicLinkbyContact($author);
+ $this->redirect_url = Contact::magicLinkByContact($author);
if (!$this->isToplevel()) {
$this->threaded = true;
}
$author = ['uid' => 0, 'id' => $item['author-id'],
'network' => $item['author-network'], 'url' => $item['author-link']];
- if (local_user() || remote_user()) {
- $profile_link = Contact::magicLinkbyContact($author);
+ if (Session::isAuthenticated()) {
+ $profile_link = Contact::magicLinkByContact($author);
} else {
$profile_link = $item['author-link'];
}
$location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate));
// process action responses - e.g. like/dislike/attend/agree/whatever
- $response_verbs = ['like', 'dislike'];
+ $response_verbs = ['like', 'dislike', 'announce'];
$isevent = false;
$attend = [];
'tags' => $tags['tags'],
'hashtags' => $tags['hashtags'],
'mentions' => $tags['mentions'],
+ 'implicit_mentions' => $tags['implicit_mentions'],
'txt_cats' => L10n::t('Categories:'),
'txt_folders' => L10n::t('Filed under:'),
'has_cats' => ((count($categories)) ? 'true' : ''),
'location' => $location_e,
'indent' => $indent,
'shiny' => $shiny,
- 'owner_self' => $item['author-link'] == defaults($_SESSION, 'my_url', null),
+ 'owner_self' => $item['author-link'] == Session::get('my_url'),
'owner_url' => $this->getOwnerUrl(),
'owner_photo' => $a->removeBaseURL(ProxyUtils::proxifyUrl($item['owner-avatar'], false, ProxyUtils::SIZE_THUMB)),
'owner_name' => $owner_name_e,
'dislike' => $responses['dislike']['output'],
'responses' => $responses,
'switchcomment' => L10n::t('Comment'),
+ 'reply_label' => L10n::t('Reply to %s', $name_e),
'comment' => $comment,
'previewing' => $conv->isPreview() ? ' preview ' : '',
'wait' => L10n::t('Please wait'),
'edited' => $edited,
'network' => $item["network"],
'network_name' => ContactSelector::networkToName($item['network'], $item['author-link']),
+ 'network_icon' => ContactSelector::networkToIcon($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'],
+ 'queue_done' => $item['delivery_queue_done'] + $item['delivery_queue_failed'], /// @todo Possibly display it separately in the future
'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'),
+ 'delivery_done' => L10n::t('Delivery to remote servers is done'),
],
];
foreach ($children as $child) {
$result['children'][] = $child->getTemplateData($conv_responses, $thread_level + 1);
}
+
// Collapse
if (($nb_children > 2) || ($thread_level > 1)) {
$result['children'][0]['comment_firstcollapsed'] = true;
$result['children'][0]['num_comments'] = L10n::tt('%d comment', '%d comments', $total_children);
- $result['children'][0]['hidden_comments_num'] = $total_children;
- $result['children'][0]['hidden_comments_text'] = L10n::tt('comment', 'comments', $total_children);
- $result['children'][0]['hide_text'] = L10n::t('show more');
+ $result['children'][0]['show_text'] = L10n::t('Show more');
+ $result['children'][0]['hide_text'] = L10n::t('Show fewer');
if ($thread_level > 1) {
$result['children'][$nb_children - 1]['comment_lastcollapsed'] = true;
} else {
return $this->comment_box_template;
}
+ /**
+ * Get default text for the comment box
+ *
+ * @return string
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ */
+ private function getDefaultText()
+ {
+ $a = self::getApp();
+
+ if (!local_user()) {
+ return '';
+ }
+
+ $owner = User::getOwnerDataById($a->user['uid']);
+
+ if (!Feature::isEnabled(local_user(), 'explicit_mentions')) {
+ return '';
+ }
+
+ $item = Item::selectFirst(['author-addr'], ['id' => $this->getId()]);
+ if (!DBA::isResult($item) || empty($item['author-addr'])) {
+ // Should not happen
+ return '';
+ }
+
+ if ($item['author-addr'] != $owner['addr']) {
+ $text = '@' . $item['author-addr'] . ' ';
+ } else {
+ $text = '';
+ }
+
+ $terms = Term::tagArrayFromItemId($this->getId(), [Term::MENTION, Term::IMPLICIT_MENTION]);
+ foreach ($terms as $term) {
+ $profile = Contact::getDetailsByURL($term['url']);
+ if (!empty($profile['addr']) && (defaults($profile, 'contact-type', Contact::TYPE_UNKNOWN) != Contact::TYPE_COMMUNITY) &&
+ ($profile['addr'] != $owner['addr']) && !strstr($text, $profile['addr'])) {
+ $text .= '@' . $profile['addr'] . ' ';
+ }
+ }
+
+ return $text;
+ }
+
/**
* Get the comment box
*
$uid = $conv->getProfileOwner();
$parent_uid = $this->getDataValue('uid');
+ $default_text = $this->getDefaultText();
+
if (!is_null($parent_uid) && ($uid != $parent_uid)) {
$uid = $parent_uid;
}
'$id' => $this->getId(),
'$parent' => $this->getId(),
'$qcomment' => $qcomment,
+ '$default' => $default_text,
'$profile_uid' => $uid,
'$mylink' => $a->removeBaseURL($a->contact['url']),
'$mytitle' => L10n::t('This is you'),
$owner = ['uid' => 0, 'id' => $this->getDataValue('owner-id'),
'network' => $this->getDataValue('owner-network'),
'url' => $this->getDataValue('owner-link')];
- $this->owner_url = Contact::magicLinkbyContact($owner);
+ $this->owner_url = Contact::magicLinkByContact($owner);
}
}
}