1e8827d73SSzymon Olewniczak<?php 2e8827d73SSzymon Olewniczak 3e8827d73SSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 4e8827d73SSzymon Olewniczak 5e8827d73SSzymon Olewniczakclass Task_comment extends Entity { 6e8827d73SSzymon Olewniczak 7e8827d73SSzymon Olewniczak //real 8e8827d73SSzymon Olewniczak protected $id, $task_id, $author, $create_date, $last_modification_date, $content, $content_html; 9e8827d73SSzymon Olewniczak 10e8827d73SSzymon Olewniczak /** @var Task */ 11e8827d73SSzymon Olewniczak protected $task; 12e8827d73SSzymon Olewniczak 13e8827d73SSzymon Olewniczak public static function get_columns() { 14e8827d73SSzymon Olewniczak return array('id', 'task_id', 'author', 15e8827d73SSzymon Olewniczak 'create_date', 'last_modification_date', 'content', 'content_html'); 16e8827d73SSzymon Olewniczak } 17e8827d73SSzymon Olewniczak 18e8827d73SSzymon Olewniczak public function __get($property) { 19e8827d73SSzymon Olewniczak if ($property == 'task') { 20ff14b107SSzymon Olewniczak if ($this->task_id == null) { 21ff14b107SSzymon Olewniczak return null; 22ff14b107SSzymon Olewniczak } 23ff14b107SSzymon Olewniczak if ($this->task == null) { 24ff14b107SSzymon Olewniczak $this->task = $this->model->taskFactory->get_one($this->task_id); 25ff14b107SSzymon Olewniczak } 26ff14b107SSzymon Olewniczak return $this->task; 27e8827d73SSzymon Olewniczak } 28e8827d73SSzymon Olewniczak return parent::__get($property); 29e8827d73SSzymon Olewniczak } 30e8827d73SSzymon Olewniczak 31e8827d73SSzymon Olewniczak public function __construct($model, $defaults=array()) { 32e8827d73SSzymon Olewniczak parent::__construct($model, $defaults); 33e8827d73SSzymon Olewniczak 34e8827d73SSzymon Olewniczak $this->validator->set_rules(array( 35e8827d73SSzymon Olewniczak 'content' => array(array('length', 10000), 'NOT NULL') 36e8827d73SSzymon Olewniczak )); 37e8827d73SSzymon Olewniczak 38e8827d73SSzymon Olewniczak //new object 39e8827d73SSzymon Olewniczak if ($this->id === NULL) { 40e8827d73SSzymon Olewniczak 41e8827d73SSzymon Olewniczak $this->author = $this->model->user_nick; 42e8827d73SSzymon Olewniczak $this->create_date = date('c'); 43e8827d73SSzymon Olewniczak $this->last_modification_date = $this->create_date; 44e8827d73SSzymon Olewniczak 45e8827d73SSzymon Olewniczak 46e8827d73SSzymon Olewniczak if (!isset($defaults['task'])) { 47e8827d73SSzymon Olewniczak throw new \Exception('$defaults[task] not set'); 48e8827d73SSzymon Olewniczak } 49e8827d73SSzymon Olewniczak $this->task = $defaults['task']; 50e8827d73SSzymon Olewniczak $this->task_id = $this->task->id; 51a0cd8c78SSzymon Olewniczak 52a0cd8c78SSzymon Olewniczak //we can change our own comments 53a0cd8c78SSzymon Olewniczak if ($this->author == $this->model->user_nick || $this->model->get_level() >= BEZ_AUTH_LEADER) { 54a0cd8c78SSzymon Olewniczak $this->acl->grant('content', BEZ_PERMISSION_CHANGE); 55a0cd8c78SSzymon Olewniczak } 56a0cd8c78SSzymon Olewniczak 57e8827d73SSzymon Olewniczak } else { 58e8827d73SSzymon Olewniczak if (isset($defaults['task']) && $this->task_id == $defaults['task']->id) { 59e8827d73SSzymon Olewniczak $this->task = $defaults['task']; 60e8827d73SSzymon Olewniczak } 61a0cd8c78SSzymon Olewniczak 62a0cd8c78SSzymon Olewniczak //we can change our own comments 63a0cd8c78SSzymon Olewniczak if ($this->author == $this->model->user_nick || $this->model->get_level() >= BEZ_AUTH_LEADER) { 64a0cd8c78SSzymon Olewniczak $this->acl->grant('id', BEZ_PERMISSION_DELETE); 65a0cd8c78SSzymon Olewniczak $this->acl->grant('content', BEZ_PERMISSION_CHANGE); 66a0cd8c78SSzymon Olewniczak } 67e8827d73SSzymon Olewniczak } 68e8827d73SSzymon Olewniczak 69e8827d73SSzymon Olewniczak } 70e8827d73SSzymon Olewniczak public function set_data($post) { 71e8827d73SSzymon Olewniczak parent::set_data($post); 722448d85aSSzymon Olewniczak $this->purge(); 732448d85aSSzymon Olewniczak } 742448d85aSSzymon Olewniczak 75*5b88664dSSzymon Olewniczak protected function html_link_url() { 76*5b88664dSSzymon Olewniczak $tpl = $this->model->action->get_tpl(); 77*5b88664dSSzymon Olewniczak 78*5b88664dSSzymon Olewniczak return $tpl->url('task', 'tid', $this->task_id) . '#zk' . $this->id; 79*5b88664dSSzymon Olewniczak } 80*5b88664dSSzymon Olewniczak 81*5b88664dSSzymon Olewniczak protected function html_link_content() { 82*5b88664dSSzymon Olewniczak return '#zk' . $this->id; 83*5b88664dSSzymon Olewniczak } 84*5b88664dSSzymon Olewniczak 85e8827d73SSzymon Olewniczak public function mail_notify_add() { 8614a1f0a4SSzymon Olewniczak $tpl = $this->model->action->get_tpl(); 87e8827d73SSzymon Olewniczak 8814a1f0a4SSzymon Olewniczak $info = array(); 8914a1f0a4SSzymon Olewniczak $html = p_render('bez_xhtmlmail', p_get_instructions($this->content), $info); 9014a1f0a4SSzymon Olewniczak $tpl->set('content', $html); 9114a1f0a4SSzymon Olewniczak $tpl->set('who', $this->author); 9214a1f0a4SSzymon Olewniczak $tpl->set('when', $this->create_date); 9314a1f0a4SSzymon Olewniczak $tpl->set('action', 'mail_task_comment_added'); 9414a1f0a4SSzymon Olewniczak $content = $this->model->action->bez_tpl_include('mail/task_comment', true); 95e8827d73SSzymon Olewniczak 9614a1f0a4SSzymon Olewniczak $this->task->mail_notify($content, false, $info['img']); 97e8827d73SSzymon Olewniczak } 98e8827d73SSzymon Olewniczak} 99