xref: /plugin/bez/mdl/Task_comment.php (revision 14a1f0a435358d79e2e5814db93baefc0cfe6877)
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);
72e8827d73SSzymon Olewniczak        $this->content_html = p_render('xhtml',p_get_instructions($this->content), $ignore);
73e8827d73SSzymon Olewniczak    }
74e8827d73SSzymon Olewniczak
75e8827d73SSzymon Olewniczak    public function mail_notify_add() {
76*14a1f0a4SSzymon Olewniczak        $tpl = $this->model->action->get_tpl();
77e8827d73SSzymon Olewniczak
78*14a1f0a4SSzymon Olewniczak        $info = array();
79*14a1f0a4SSzymon Olewniczak        $html =  p_render('bez_xhtmlmail', p_get_instructions($this->content), $info);
80*14a1f0a4SSzymon Olewniczak        $tpl->set('content', $html);
81*14a1f0a4SSzymon Olewniczak        $tpl->set('who', $this->author);
82*14a1f0a4SSzymon Olewniczak        $tpl->set('when', $this->create_date);
83*14a1f0a4SSzymon Olewniczak        $tpl->set('action', 'mail_task_comment_added');
84*14a1f0a4SSzymon Olewniczak        $content = $this->model->action->bez_tpl_include('mail/task_comment', true);
85e8827d73SSzymon Olewniczak
86*14a1f0a4SSzymon Olewniczak        $this->task->mail_notify($content, false, $info['img']);
87e8827d73SSzymon Olewniczak    }
88e8827d73SSzymon Olewniczak}
89