Source of file InboxMessage.php
Size: 4,479 Bytes - Last Modified: 2021-12-24T05:16:02+00:00
/var/www/docs.ssmods.com/process/src/src/Model/InboxMessage.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | <?php namespace HudhaifaS\Inbox\Model; use HudhaifaS\DOM\Model\ManageableDataObject; use HudhaifaS\Inbox\View\InboxPage; use SilverStripe\ORM\ArrayList; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Member; use SilverStripe\Security\Permission; /** * * @author Hudhaifa Shatnawi <hudhaifa.shatnawi@gmail.com> * @version 1.0, Mar 3, 2018 - 2:32:23 PM */ class InboxMessage extends DataObject implements ManageableDataObject { private static $table_name = 'InboxMessage'; private static $db = [ 'Title' => "Varchar(255)", 'Content' => "HTMLText", 'IsRead' => "Boolean", 'IsNotified' => "Boolean", ]; private static $has_one = [ 'Receiver' => Member::class, ]; private static $defaults = [ "IsRead" => 0, ]; private static $summary_fields = [ 'Title', 'Receiver.Title', 'MessageSummary', 'IsRead', 'Created', ]; public function canView($member = false) { if (!$member) { $member = Member::currentUserID(); } if ($member && is_numeric($member)) { $member = DataObject::get_by_id(Member::class, $member); } if ($this->canEdit($member)) { return true; } if ($member && $this->hasMethod('CreatedBy') && $member == $this->CreatedBy()) { return true; } return $member && $member->ID == $this->ReceiverID; } public function canEdit($member = false) { if (!$member) { $member = Member::currentUserID(); } if ($member && is_numeric($member)) { $member = DataObject::get_by_id(Member::class, $member); } if ($member && Permission::checkMember($member, "ADMIN")) { return true; } return false; } public function canCreate($member = null, $context = array()) { if (!$member) { $member = Member::currentUserID(); } if ($member && is_numeric($member)) { $member = DataObject::get_by_id(Member::class, $member); } if ($member && Permission::checkMember($member, "ADMIN")) { return true; } return false; } protected function onAfterWrite() { if (!$this->IsNotified && filter_var($this->Receiver()->Email, FILTER_VALIDATE_EMAIL)) { $email = InboxNotification::create($this); $email->send(); $this->IsNotified = 1; $this->write(); } parent::onAfterWrite(); } function Link($action = null) { $page = InboxPage::get()->first(); return $page ? $page->Link($action) : null; } public function canPublicView() { return $this->canView(); } public function getMessageSummary() { $content = $this->dbObject('Content'); $value = str_replace('<br>', '__br__', $content->getValue()); $content->setValue($value); return str_replace('__br__', '<br>', $content->Summary()); } public function getObjectDefaultImage() { } public function getObjectEditLink() { } public function getObjectEditableImageName() { } public function getObjectImage() { return $this->CreatedBy()->ProfileImage(); } public function getObjectItem() { return $this->renderWith('Includes/Message_Item'); } public function getObjectLink() { return $this->Link("show/$this->ID"); } public function getObjectNav() { return $this->renderWith('Includes/Message_Nav'); } public function getObjectRelated() { return null; } public function getObjectSummary() { return null; } public function getObjectTabs() { $lists = []; if ($this->Content) { $lists[] = [ 'Title' => _t('Inbox.MESSAGE', 'Message'), 'PlainContent' => 1, 'Content' => $this->renderWith('Includes/Message') ]; } $this->extend('extraTabs', $lists); return new ArrayList($lists); } public function getObjectTitle() { return $this->Title; } } |