X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FObject%2FThread.php;h=a2504a2ad170385ec9ba9bf4638bf5b5db249634;hb=327a9b185586eed0d66eed7b69df76943fd7c26d;hp=b6d92e743c823b40c9b07f93930d53a159ecedb3;hpb=bd972151478f40f73585519110700222a1931d44;p=friendica.git diff --git a/src/Object/Thread.php b/src/Object/Thread.php index b6d92e743c..a2504a2ad1 100644 --- a/src/Object/Thread.php +++ b/src/Object/Thread.php @@ -1,25 +1,40 @@ . + * */ + namespace Friendica\Object; -use Friendica\BaseObject; use Friendica\Core\Logger; use Friendica\Core\Protocol; -use Friendica\Object\Post; -use Friendica\Util\Security; - -require_once 'boot.php'; -require_once 'include/text.php'; +use Friendica\DI; +use Friendica\Protocol\Activity; +use Friendica\Security\Security; /** * A list of threads * * We should think about making this a SPL Iterator */ -class Thread extends BaseObject +class Thread { + /** @var Post[] */ private $parents = []; private $mode = null; private $writable = false; @@ -29,9 +44,10 @@ class Thread extends BaseObject /** * Constructor * - * @param string $mode The mode - * @param boolean $preview Are we in the preview mode? + * @param string $mode The mode + * @param boolean $preview Are we in the preview mode? * @param boolean $writable Override the writable check + * @throws \Exception */ public function __construct($mode, $preview, $writable = false) { @@ -42,10 +58,11 @@ class Thread extends BaseObject /** * Set the mode we'll be displayed on * - * @param string $mode The mode to set + * @param string $mode The mode to set * @param boolean $writable Override the writable check * * @return void + * @throws \Exception */ private function setMode($mode, $writable) { @@ -53,7 +70,7 @@ class Thread extends BaseObject return; } - $a = self::getApp(); + $a = DI::app(); switch ($mode) { case 'network': @@ -62,11 +79,11 @@ class Thread extends BaseObject $this->writable = true; break; case 'profile': - $this->profile_owner = $a->profile['profile_uid']; - $this->writable = Security::canWriteToUserWall($this->profile_owner); + $this->profile_owner = $a->getProfileOwner(); + $this->writable = Security::canWriteToUserWall($this->profile_owner) || $writable; break; case 'display': - $this->profile_owner = $a->profile['uid']; + $this->profile_owner = $a->getProfileOwner(); $this->writable = Security::canWriteToUserWall($this->profile_owner) || $writable; break; case 'community': @@ -128,10 +145,11 @@ class Thread extends BaseObject /** * Add a thread to the conversation * - * @param object $item The item to insert + * @param Post $item The item to insert * * @return mixed The inserted item on success * false on failure + * @throws \Exception */ public function addParent(Post $item) { @@ -155,7 +173,7 @@ class Thread extends BaseObject return false; } - if ($item->getDataValue('verb') === ACTIVITY_LIKE || $item->getDataValue('verb') === ACTIVITY_DISLIKE) { + if ($item->getDataValue('verb') === Activity::LIKE || $item->getDataValue('verb') === Activity::DISLIKE) { Logger::log('[WARN] Conversation::addThread : Thread is a (dis)like ('. $item->getId() .').', Logger::DEBUG); return false; } @@ -171,23 +189,23 @@ class Thread extends BaseObject * * We should find a way to avoid using those arguments (at least most of them) * - * @param object $conv_responses data + * @param array $conv_responses data + * @param string $formSecurityToken A security Token to avoid CSF attacks * * @return mixed The data requested on success * false on failure + * @throws \Exception */ - public function getTemplateData($conv_responses) + public function getTemplateData($conv_responses, string $formSecurityToken) { - $a = self::getApp(); $result = []; - $i = 0; foreach ($this->parents as $item) { if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) { continue; } - $item_data = $item->getTemplateData($conv_responses); + $item_data = $item->getTemplateData($conv_responses, $formSecurityToken); if (!$item_data) { Logger::log('[ERROR] Conversation::getTemplateData : Failed to get item template data ('. $item->getId() .').', Logger::DEBUG);