xref: /plugin/bez/mdl/Task_comment.php (revision a0cd8c785f18b483f73582b411767428d04a78f6)
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;
51*a0cd8c78SSzymon Olewniczak
52*a0cd8c78SSzymon Olewniczak            //we can change our own comments
53*a0cd8c78SSzymon Olewniczak            if ($this->author == $this->model->user_nick || $this->model->get_level() >= BEZ_AUTH_LEADER) {
54*a0cd8c78SSzymon Olewniczak                $this->acl->grant('content', BEZ_PERMISSION_CHANGE);
55*a0cd8c78SSzymon Olewniczak            }
56*a0cd8c78SSzymon Olewniczak
57e8827d73SSzymon Olewniczak        } else {
58e8827d73SSzymon Olewniczak            if (isset($defaults['task']) && $this->task_id == $defaults['task']->id) {
59e8827d73SSzymon Olewniczak                $this->task = $defaults['task'];
60e8827d73SSzymon Olewniczak            }
61*a0cd8c78SSzymon Olewniczak
62*a0cd8c78SSzymon Olewniczak            //we can change our own comments
63*a0cd8c78SSzymon Olewniczak            if ($this->author == $this->model->user_nick || $this->model->get_level() >= BEZ_AUTH_LEADER) {
64*a0cd8c78SSzymon Olewniczak                $this->acl->grant('id', BEZ_PERMISSION_DELETE);
65*a0cd8c78SSzymon Olewniczak                $this->acl->grant('content', BEZ_PERMISSION_CHANGE);
66*a0cd8c78SSzymon 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() {
76e8827d73SSzymon Olewniczak        $rep = array(
77e8827d73SSzymon Olewniczak            'content' => $this->content,
78e8827d73SSzymon Olewniczak            'content_html' => $this->content_html,
79e8827d73SSzymon Olewniczak            'who' => $this->author,
80e8827d73SSzymon Olewniczak            'when' => $this->create_date
81e8827d73SSzymon Olewniczak        );
82e8827d73SSzymon Olewniczak
83e8827d73SSzymon Olewniczak        $rep['action'] = $this->model->action->getLang('mail_comment_added');
84e8827d73SSzymon Olewniczak        $rep['action_color'] = 'transparent';
85e8827d73SSzymon Olewniczak        $rep['action_border_color'] = '#E5E5E5';
86e8827d73SSzymon Olewniczak
87e8827d73SSzymon Olewniczak        //$this->thread->mail_notify($rep);
88e8827d73SSzymon Olewniczak    }
89e8827d73SSzymon Olewniczak}
90