1*fe5d6d1eSSzymon Olewniczak<?php 2*fe5d6d1eSSzymon Olewniczak// 3*fe5d6d1eSSzymon Olewniczak//if(!defined('DOKU_INC')) die(); 4*fe5d6d1eSSzymon Olewniczak// 5*fe5d6d1eSSzymon Olewniczak//require_once 'entity.php'; 6*fe5d6d1eSSzymon Olewniczak// 7*fe5d6d1eSSzymon Olewniczak// 8*fe5d6d1eSSzymon Olewniczak//class BEZ_mdl_Dummy_Commcause extends BEZ_mdl_Entity { 9*fe5d6d1eSSzymon Olewniczak// 10*fe5d6d1eSSzymon Olewniczak// protected $coordinator; 11*fe5d6d1eSSzymon Olewniczak// 12*fe5d6d1eSSzymon Olewniczak// function __construct($model, $defaults=array()) { 13*fe5d6d1eSSzymon Olewniczak// parent::__construct($model); 14*fe5d6d1eSSzymon Olewniczak// 15*fe5d6d1eSSzymon Olewniczak// if (!isset($defaults['issue'])) { 16*fe5d6d1eSSzymon Olewniczak// throw new Exception('every dummy entity must have issue in $defaults'); 17*fe5d6d1eSSzymon Olewniczak// } 18*fe5d6d1eSSzymon Olewniczak// 19*fe5d6d1eSSzymon Olewniczak// $issue = $this->model->issues->get_one($defaults['issue']); 20*fe5d6d1eSSzymon Olewniczak// $this->coordinator = $issue->coordinator; 21*fe5d6d1eSSzymon Olewniczak// } 22*fe5d6d1eSSzymon Olewniczak// 23*fe5d6d1eSSzymon Olewniczak// public function __get($property) { 24*fe5d6d1eSSzymon Olewniczak// if ($property === 'coordinator') { 25*fe5d6d1eSSzymon Olewniczak// return $this->coordinator; 26*fe5d6d1eSSzymon Olewniczak// } 27*fe5d6d1eSSzymon Olewniczak// parent::__get($property); 28*fe5d6d1eSSzymon Olewniczak// } 29*fe5d6d1eSSzymon Olewniczak//} 30*fe5d6d1eSSzymon Olewniczak// 31*fe5d6d1eSSzymon Olewniczak 32*fe5d6d1eSSzymon Olewniczaknamespace dokuwiki\plugin\bez\mdl; 33*fe5d6d1eSSzymon Olewniczak 34*fe5d6d1eSSzymon Olewniczakuse dokuwiki\plugin\bez\meta\PermissionDeniedException; 35*fe5d6d1eSSzymon Olewniczakuse dokuwiki\plugin\bez\meta\ValidationException; 36*fe5d6d1eSSzymon Olewniczak 37*fe5d6d1eSSzymon Olewniczakclass Thread_comment extends Entity { 38*fe5d6d1eSSzymon Olewniczak 39*fe5d6d1eSSzymon Olewniczak //real 40*fe5d6d1eSSzymon Olewniczak protected $id, $issue, $datetime, $reporter, $type, $content, $content_cache; 41*fe5d6d1eSSzymon Olewniczak 42*fe5d6d1eSSzymon Olewniczak //virtual 43*fe5d6d1eSSzymon Olewniczak //protected $coordinator, $tasks_count; 44*fe5d6d1eSSzymon Olewniczak 45*fe5d6d1eSSzymon Olewniczak //protected $parse_int = array('tasks_count'); 46*fe5d6d1eSSzymon Olewniczak public static function get_columns() { 47*fe5d6d1eSSzymon Olewniczak return array('id', 'thread_id', 'type', 'author', 'create_date', 'content', 'content_cache'); 48*fe5d6d1eSSzymon Olewniczak } 49*fe5d6d1eSSzymon Olewniczak 50*fe5d6d1eSSzymon Olewniczak// public function get_virtual_columns() { 51*fe5d6d1eSSzymon Olewniczak// return array('coordinator', 'tasks_count'); 52*fe5d6d1eSSzymon Olewniczak// } 53*fe5d6d1eSSzymon Olewniczak// 54*fe5d6d1eSSzymon Olewniczak// public function get_table_name() { 55*fe5d6d1eSSzymon Olewniczak// return 'commcauses'; 56*fe5d6d1eSSzymon Olewniczak// } 57*fe5d6d1eSSzymon Olewniczak 58*fe5d6d1eSSzymon Olewniczak //defaults: isssue, type 59*fe5d6d1eSSzymon Olewniczak public function __construct($model, $defaults=array()) { 60*fe5d6d1eSSzymon Olewniczak parent::__construct($model, $defaults); 61*fe5d6d1eSSzymon Olewniczak 62*fe5d6d1eSSzymon Olewniczak $this->validator->set_rules(array( 63*fe5d6d1eSSzymon Olewniczak 'issue' => array(array('numeric'), 'NOT NULL'), 64*fe5d6d1eSSzymon Olewniczak 'datetime' => array(array('sqlite_datetime'), 'NOT NULL'), 65*fe5d6d1eSSzymon Olewniczak 'reporter' => array(array('dw_user'), 'NOT NULL'), 66*fe5d6d1eSSzymon Olewniczak 'type' => array(array('select', array('0', '1', '2')), 'NOT NULL'), 67*fe5d6d1eSSzymon Olewniczak 'content' => array(array('length', 10000), 'NOT NULL'), 68*fe5d6d1eSSzymon Olewniczak 'content_cache' => array(array('length', 10000), 'NOT NULL'), 69*fe5d6d1eSSzymon Olewniczak 70*fe5d6d1eSSzymon Olewniczak 'coordinator' => array(array('dw_user', array('-proposal')), 'NOT NULL') 71*fe5d6d1eSSzymon Olewniczak )); 72*fe5d6d1eSSzymon Olewniczak 73*fe5d6d1eSSzymon Olewniczak //new object 74*fe5d6d1eSSzymon Olewniczak if ($this->id === NULL) { 75*fe5d6d1eSSzymon Olewniczak 76*fe5d6d1eSSzymon Olewniczak //throws ValidationException 77*fe5d6d1eSSzymon Olewniczak $this->issue = 78*fe5d6d1eSSzymon Olewniczak $this->validator->validate_field('issue', $defaults['issue']); 79*fe5d6d1eSSzymon Olewniczak 80*fe5d6d1eSSzymon Olewniczak $issue = $this->model->issues->get_one($defaults['issue']); 81*fe5d6d1eSSzymon Olewniczak 82*fe5d6d1eSSzymon Olewniczak $this->coordinator = $issue->coordinator; 83*fe5d6d1eSSzymon Olewniczak 84*fe5d6d1eSSzymon Olewniczak //we are coordinator of newly created object 85*fe5d6d1eSSzymon Olewniczak if ($issue->user_is_coordinator()) { 86*fe5d6d1eSSzymon Olewniczak //throws ValidationException 87*fe5d6d1eSSzymon Olewniczak $this->type = 88*fe5d6d1eSSzymon Olewniczak $this->validator->validate_field('type', $defaults['type']); 89*fe5d6d1eSSzymon Olewniczak } else { 90*fe5d6d1eSSzymon Olewniczak $this->type = '0'; 91*fe5d6d1eSSzymon Olewniczak } 92*fe5d6d1eSSzymon Olewniczak 93*fe5d6d1eSSzymon Olewniczak $this->reporter = $this->model->user_nick; 94*fe5d6d1eSSzymon Olewniczak $this->datetime = $this->sqlite_date(); 95*fe5d6d1eSSzymon Olewniczak } 96*fe5d6d1eSSzymon Olewniczak } 97*fe5d6d1eSSzymon Olewniczak 98*fe5d6d1eSSzymon Olewniczak public function update_cache() { 99*fe5d6d1eSSzymon Olewniczak if ($this->model->acl->get_level() < BEZ_AUTH_ADMIN) { 100*fe5d6d1eSSzymon Olewniczak return false; 101*fe5d6d1eSSzymon Olewniczak } 102*fe5d6d1eSSzymon Olewniczak $this->content_cache = $this->helper->wiki_parse($this->content); 103*fe5d6d1eSSzymon Olewniczak } 104*fe5d6d1eSSzymon Olewniczak 105*fe5d6d1eSSzymon Olewniczak public function set_data($data, $filter=NULL) { 106*fe5d6d1eSSzymon Olewniczak $input = array('content', 'type'); 107*fe5d6d1eSSzymon Olewniczak $val_data = $this->validator->validate($data, $input); 108*fe5d6d1eSSzymon Olewniczak 109*fe5d6d1eSSzymon Olewniczak if ($val_data === false) { 110*fe5d6d1eSSzymon Olewniczak throw new ValidationException('issues', $this->validator->get_errors()); 111*fe5d6d1eSSzymon Olewniczak } 112*fe5d6d1eSSzymon Olewniczak 113*fe5d6d1eSSzymon Olewniczak $this->set_property_array($val_data); 114*fe5d6d1eSSzymon Olewniczak 115*fe5d6d1eSSzymon Olewniczak $this->content_cache = $this->helper->wiki_parse($this->content); 116*fe5d6d1eSSzymon Olewniczak } 117*fe5d6d1eSSzymon Olewniczak 118*fe5d6d1eSSzymon Olewniczak public function get_meta_fields() { 119*fe5d6d1eSSzymon Olewniczak return array('reporter', 'datetime'); 120*fe5d6d1eSSzymon Olewniczak } 121*fe5d6d1eSSzymon Olewniczak 122*fe5d6d1eSSzymon Olewniczak public function set_meta($post) { 123*fe5d6d1eSSzymon Olewniczak parent::set_data($post, $this->get_meta_fields()); 124*fe5d6d1eSSzymon Olewniczak } 125*fe5d6d1eSSzymon Olewniczak 126*fe5d6d1eSSzymon Olewniczak public function mail_notify_add($issue_obj) { 127*fe5d6d1eSSzymon Olewniczak if ($issue_obj->id !== $this->issue) { 128*fe5d6d1eSSzymon Olewniczak throw new Exception('issue object id and commcause->issue does not match'); 129*fe5d6d1eSSzymon Olewniczak } 130*fe5d6d1eSSzymon Olewniczak 131*fe5d6d1eSSzymon Olewniczak $rep = array( 132*fe5d6d1eSSzymon Olewniczak 'content' => $this->content, 133*fe5d6d1eSSzymon Olewniczak 'content_html' => $this->content_cache, 134*fe5d6d1eSSzymon Olewniczak 'who' => $this->reporter, 135*fe5d6d1eSSzymon Olewniczak 'when' => $this->datetime 136*fe5d6d1eSSzymon Olewniczak ); 137*fe5d6d1eSSzymon Olewniczak 138*fe5d6d1eSSzymon Olewniczak if ($this->type > 0) { 139*fe5d6d1eSSzymon Olewniczak $rep['action'] = $this->model->action->getLang('mail_cause_added'); 140*fe5d6d1eSSzymon Olewniczak $rep['action_color'] = '#ffeedc'; 141*fe5d6d1eSSzymon Olewniczak $rep['action_border_color'] = '#ddb68d'; 142*fe5d6d1eSSzymon Olewniczak } else { 143*fe5d6d1eSSzymon Olewniczak $rep['action'] = $this->model->action->getLang('mail_comment_added'); 144*fe5d6d1eSSzymon Olewniczak $rep['action_color'] = 'transparent'; 145*fe5d6d1eSSzymon Olewniczak $rep['action_border_color'] = '#E5E5E5'; 146*fe5d6d1eSSzymon Olewniczak } 147*fe5d6d1eSSzymon Olewniczak 148*fe5d6d1eSSzymon Olewniczak $issue_obj->mail_notify($rep); 149*fe5d6d1eSSzymon Olewniczak } 150*fe5d6d1eSSzymon Olewniczak} 151