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\Util\Strings;
use Friendica\Util\Temporal;
-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');
/**
* 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)
{
- $result = [];
-
$a = self::getApp();
$item = $this->getData();
'relative' => Temporal::getRelativeDate($item['edited'])
];
}
- $commentww = '';
$sparkle = '';
$buttons = '';
$dropping = false;
}
$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'] = !empty($conv_responses[$verbs][$item['uri']]) ? format_like($conv_responses[$verbs][$item['uri']], $conv_responses[$verbs][$item['uri'] . '-l'], $verbs, $item['uri']) : '';
'location' => $location_e,
'indent' => $indent,
'shiny' => $shiny,
+ 'owner_self' => $item['author-link'] == defaults($_SESSION, 'my_url', null),
'owner_url' => $this->getOwnerUrl(),
'owner_photo' => $a->removeBaseURL(ProxyUtils::proxifyUrl($item['owner-avatar'], false, ProxyUtils::SIZE_THUMB)),
'owner_name' => $owner_name_e,
'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)
{
/**
* 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) {
}
/**
- * 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
/**
* Set template
*
- * @param object $name template name
- *
- * @return void
+ * @param string $name template name
+ * @return bool
+ * @throws \Exception
*/
private function setTemplate($name)
{
}
$this->template = $this->available_templates[$name];
+
+ return true;
}
/**
*
* @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?
* Check if we are a wall to wall item and set the relevant properties
*
* @return void
+ * @throws \Exception
*/
protected function checkWallToWall()
{