X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FNotification.php;h=cf2c754631c6760c0a8fcf72a9c88efe08ecf9a1;hb=a24febb8b656217a7cd88db205007420cb64485e;hp=11105d798392f65723c81bf65ee1b6c0a6a0ccea;hpb=4c5856da2bc8851c90c62af01a432f71825718fd;p=friendica.git diff --git a/src/Model/Notification.php b/src/Model/Notification.php index 11105d7983..cf2c754631 100644 --- a/src/Model/Notification.php +++ b/src/Model/Notification.php @@ -1,23 +1,34 @@ . + * + */ namespace Friendica\Model; -use Exception; use Friendica\BaseModel; use Friendica\Content\Text\BBCode; -use Friendica\Content\Text\HTML; use Friendica\Database\Database; use Friendica\Network\HTTPException\InternalServerErrorException; -use Friendica\Util\DateTimeFormat; -use Friendica\Util\Temporal; use Psr\Log\LoggerInterface; /** * Model for an entry in the notify table - * - Including additional, calculated properties - * - * Is used either for frontend interactions or for API-based interaction - * @see https://github.com/friendica/friendica/blob/develop/doc/API-Entities.md#notification * * @property string hash * @property integer type @@ -32,22 +43,15 @@ use Psr\Log\LoggerInterface; * @property integer parent Parent Item Id * @property boolean seen Whether the notification was read or not. * @property string verb Verb URL (@see http://activitystrea.ms) - * @property string otype Subject type (`item`, `intro` or `mail`) + * @property string otype Subject type ('item', 'intro' or 'mail') * * @property-read string name_cache Full name of the contact subject * @property-read string msg_cache Plaintext version of the notification text with a placeholder (`{0}`) for the subject contact's name. - * - * @property-read integer timestamp Unix timestamp - * @property-read string dateRel Time since the note was posted, eg "1 hour ago" - * @property-read string $msg_html - * @property-read string $msg_plain */ class Notification extends BaseModel { /** @var \Friendica\Repository\Notification */ private $repo; - /** @var $this */ - private $parentInst; public function __construct(Database $dba, LoggerInterface $logger, \Friendica\Repository\Notification $repo, array $data = []) { @@ -56,100 +60,37 @@ class Notification extends BaseModel $this->repo = $repo; $this->setNameCache(); - $this->setTimestamp(); - $this->setMsg(); - } - - /** - * Set the notification as seen - * - * @param bool $seen true, if seen - * - * @return bool True, if the seen state could be saved - */ - public function setSeen(bool $seen = true) - { - $this->seen = $seen; - try { - return $this->repo->update($this); - } catch (Exception $e) { - $this->logger->warning('Update failed.', ['$this' => $this, 'exception' => $e]); - return false; - } - } - - /** - * Set some extra properties to the notification from db: - * - timestamp as int in default TZ - * - date_rel : relative date string - */ - private function setTimestamp() - { - try { - $this->timestamp = strtotime(DateTimeFormat::local($this->date)); - } catch (Exception $e) { - } - $this->dateRel = Temporal::getRelativeDate($this->date); + $this->setMsgCache(); } /** * Sets the pre-formatted name (caching) - * - * @throws InternalServerErrorException */ private function setNameCache() { - $this->name_cache = strip_tags(BBCode::convert($this->source_name ?? '')); + try { + $this->name_cache = strip_tags(BBCode::convert($this->source_name)); + } catch (InternalServerErrorException $e) { + } } /** - * Set some extra properties to the notification from db: - * - msg_html: message as html string - * - msg_plain: message as plain text string - * - msg_cache: The pre-formatted message (caching) + * Sets the pre-formatted msg (caching) */ - private function setMsg() + private function setMsgCache() { try { - $this->msg_html = BBCode::convert($this->msg, false); - $this->msg_plain = explode("\n", trim(HTML::toPlaintext($this->msg_html, 0)))[0]; $this->msg_cache = self::formatMessage($this->name_cache, strip_tags(BBCode::convert($this->msg))); } catch (InternalServerErrorException $e) { } } - public function __get($name) - { - $this->checkValid(); - - $return = null; - - switch ($name) { - case 'parent': - if (!empty($this->parent)) { - $this->parentInst = $this->parentInst ?? $this->repo->getByID($this->parent); - - $return = $this->parentInst; - } - break; - default: - $return = parent::__get($name); - break; - } - - return $return; - } - public function __set($name, $value) { parent::__set($name, $value); - if ($name == 'date') { - $this->setTimestamp(); - } - if ($name == 'msg') { - $this->setMsg(); + $this->setMsgCache(); } if ($name == 'source_name') {