1fe5d6d1eSSzymon Olewniczak<?php 2fe5d6d1eSSzymon Olewniczak 3fe5d6d1eSSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 4fe5d6d1eSSzymon Olewniczak 5fe5d6d1eSSzymon Olewniczakuse dokuwiki\plugin\bez\meta\PermissionDeniedException; 6fe5d6d1eSSzymon Olewniczakuse dokuwiki\plugin\bez\meta\ValidationException; 7fe5d6d1eSSzymon Olewniczak 8fe5d6d1eSSzymon Olewniczakclass Thread_comment extends Entity { 9fe5d6d1eSSzymon Olewniczak 10fe5d6d1eSSzymon Olewniczak //real 118a638198SSzymon Olewniczak protected $id, $thread_id, $type, $author, $create_date, $last_modification_date, $content, $content_html, $task_count; 12fe5d6d1eSSzymon Olewniczak 13fe5d6d1eSSzymon Olewniczak //virtual 148a638198SSzymon Olewniczak protected $coordinator; 158a638198SSzymon Olewniczak 168a638198SSzymon Olewniczak /** @var Thread */ 178a638198SSzymon Olewniczak protected $thread; 18fe5d6d1eSSzymon Olewniczak 19fe5d6d1eSSzymon Olewniczak //protected $parse_int = array('tasks_count'); 20fe5d6d1eSSzymon Olewniczak public static function get_columns() { 218a638198SSzymon Olewniczak return array('id', 'thread_id', 'type', 'author', 228a638198SSzymon Olewniczak 'create_date', 'last_modification_date', 'content', 'content_html', 'task_count'); 238a638198SSzymon Olewniczak } 248a638198SSzymon Olewniczak 258a638198SSzymon Olewniczak public function __get($property) { 26ff14b107SSzymon Olewniczak if ($property == 'thread') { 27ff14b107SSzymon Olewniczak if ($this->thread_id == null) { 28ff14b107SSzymon Olewniczak return null; 29ff14b107SSzymon Olewniczak } 30ff14b107SSzymon Olewniczak if ($this->thread == null) { 31ff14b107SSzymon Olewniczak $this->thread = $this->model->threadFactory->get_one($this->thread_id); 32ff14b107SSzymon Olewniczak } 33ff14b107SSzymon Olewniczak return $this->thread; 34ff14b107SSzymon Olewniczak 35ff14b107SSzymon Olewniczak } elseif ($property == 'coordinator') { 368a638198SSzymon Olewniczak return $this->$property; 378a638198SSzymon Olewniczak } 388a638198SSzymon Olewniczak return parent::__get($property); 39fe5d6d1eSSzymon Olewniczak } 40fe5d6d1eSSzymon Olewniczak 41fe5d6d1eSSzymon Olewniczak //defaults: isssue, type 42fe5d6d1eSSzymon Olewniczak public function __construct($model, $defaults=array()) { 43fe5d6d1eSSzymon Olewniczak parent::__construct($model, $defaults); 44fe5d6d1eSSzymon Olewniczak 458a638198SSzymon Olewniczak $this->validator->set_rules(array( 46*53df74e7SSzymon Olewniczak 'content' => array(array('length', 10000), 'NOT NULL'), 47*53df74e7SSzymon Olewniczak 'type' => array( 48*53df74e7SSzymon Olewniczak array('select', array('comment', 'cause_real', 'cause_potential')), 49*53df74e7SSzymon Olewniczak 'NOT NULL') 50fe5d6d1eSSzymon Olewniczak )); 51fe5d6d1eSSzymon Olewniczak 52fe5d6d1eSSzymon Olewniczak //new object 53fe5d6d1eSSzymon Olewniczak if ($this->id === NULL) { 54fe5d6d1eSSzymon Olewniczak 558a638198SSzymon Olewniczak $this->author = $this->model->user_nick; 568a638198SSzymon Olewniczak $this->create_date = date('c'); 578a638198SSzymon Olewniczak $this->last_modification_date = $this->create_date; 58fe5d6d1eSSzymon Olewniczak 59fe5d6d1eSSzymon Olewniczak 60e8827d73SSzymon Olewniczak if (!isset($defaults['thread'])) { 61e8827d73SSzymon Olewniczak throw new \Exception('$defaults[thread] not set'); 62e8827d73SSzymon Olewniczak } 63e8827d73SSzymon Olewniczak $this->thread = $defaults['thread']; 648a638198SSzymon Olewniczak $this->thread_id = $this->thread->id; 658a638198SSzymon Olewniczak $this->coordinator = $this->thread->coordinator; 66e8827d73SSzymon Olewniczak } else { 67e8827d73SSzymon Olewniczak if (isset($defaults['thread']) && $this->thread_id == $defaults['thread']->id) { 68e8827d73SSzymon Olewniczak $this->thread = $defaults['thread']; 69e8827d73SSzymon Olewniczak } 70e8827d73SSzymon Olewniczak } 71fe5d6d1eSSzymon Olewniczak } 72fe5d6d1eSSzymon Olewniczak 738a638198SSzymon Olewniczak public function set_data($post) { 74*53df74e7SSzymon Olewniczak //no all can change type 75*53df74e7SSzymon Olewniczak if ($this->acl_of('type') < BEZ_PERMISSION_CHANGE) { 76*53df74e7SSzymon Olewniczak unset($post['type']); 77*53df74e7SSzymon Olewniczak } 788a638198SSzymon Olewniczak parent::set_data($post); 798a638198SSzymon Olewniczak $this->content_html = p_render('xhtml',p_get_instructions($this->content), $ignore); 80fe5d6d1eSSzymon Olewniczak } 81fe5d6d1eSSzymon Olewniczak 828a638198SSzymon Olewniczak public function mail_notify_add() { 83fe5d6d1eSSzymon Olewniczak 84fe5d6d1eSSzymon Olewniczak $rep = array( 85fe5d6d1eSSzymon Olewniczak 'content' => $this->content, 868a638198SSzymon Olewniczak 'content_html' => $this->content_html, 878a638198SSzymon Olewniczak 'who' => $this->author, 888a638198SSzymon Olewniczak 'when' => $this->create_date 89fe5d6d1eSSzymon Olewniczak ); 90fe5d6d1eSSzymon Olewniczak 91fe5d6d1eSSzymon Olewniczak if ($this->type > 0) { 92fe5d6d1eSSzymon Olewniczak $rep['action'] = $this->model->action->getLang('mail_cause_added'); 93fe5d6d1eSSzymon Olewniczak $rep['action_color'] = '#ffeedc'; 94fe5d6d1eSSzymon Olewniczak $rep['action_border_color'] = '#ddb68d'; 95fe5d6d1eSSzymon Olewniczak } else { 96fe5d6d1eSSzymon Olewniczak $rep['action'] = $this->model->action->getLang('mail_comment_added'); 97fe5d6d1eSSzymon Olewniczak $rep['action_color'] = 'transparent'; 98fe5d6d1eSSzymon Olewniczak $rep['action_border_color'] = '#E5E5E5'; 99fe5d6d1eSSzymon Olewniczak } 100fe5d6d1eSSzymon Olewniczak 1018a638198SSzymon Olewniczak $this->thread->mail_notify($rep); 102fe5d6d1eSSzymon Olewniczak } 103fe5d6d1eSSzymon Olewniczak} 104