1fe5d6d1eSSzymon Olewniczak<?php 2fe5d6d1eSSzymon Olewniczak/** 3fe5d6d1eSSzymon Olewniczak * DokuWiki Plugin bez (Action Component) 4fe5d6d1eSSzymon Olewniczak * 5fe5d6d1eSSzymon Olewniczak */ 6fe5d6d1eSSzymon Olewniczak 7fe5d6d1eSSzymon Olewniczak// must be run within Dokuwiki 8fe5d6d1eSSzymon Olewniczak 9fe5d6d1eSSzymon Olewniczakif(!defined('DOKU_INC')) die(); 10fe5d6d1eSSzymon Olewniczak 11fe5d6d1eSSzymon Olewniczak/** 12fe5d6d1eSSzymon Olewniczak * Class action_plugin_bez_migration 13fe5d6d1eSSzymon Olewniczak * 14fe5d6d1eSSzymon Olewniczak * Handle migrations that need more than just SQL 15fe5d6d1eSSzymon Olewniczak */ 16fe5d6d1eSSzymon Olewniczakclass action_plugin_bez_migration extends DokuWiki_Action_Plugin { 17fe5d6d1eSSzymon Olewniczak /** 18fe5d6d1eSSzymon Olewniczak * @inheritDoc 19fe5d6d1eSSzymon Olewniczak */ 20fe5d6d1eSSzymon Olewniczak public function register(Doku_Event_Handler $controller) { 21fe5d6d1eSSzymon Olewniczak $controller->register_hook('PLUGIN_SQLITE_DATABASE_UPGRADE', 'BEFORE', $this, 'handle_migrations'); 22fe5d6d1eSSzymon Olewniczak } 23fe5d6d1eSSzymon Olewniczak 24fe5d6d1eSSzymon Olewniczak /** 25fe5d6d1eSSzymon Olewniczak * Call our custom migrations when defined 26fe5d6d1eSSzymon Olewniczak * 27fe5d6d1eSSzymon Olewniczak * @param Doku_Event $event 28fe5d6d1eSSzymon Olewniczak * @param $param 29fe5d6d1eSSzymon Olewniczak */ 30fe5d6d1eSSzymon Olewniczak public function handle_migrations(Doku_Event $event, $param) { 31fe5d6d1eSSzymon Olewniczak if ($event->data['sqlite']->getAdapter()->getDbname() !== 'b3p') { 32fe5d6d1eSSzymon Olewniczak return; 33fe5d6d1eSSzymon Olewniczak } 34fe5d6d1eSSzymon Olewniczak $to = $event->data['to']; 35fe5d6d1eSSzymon Olewniczak 36fe5d6d1eSSzymon Olewniczak if(is_callable(array($this, "migration$to"))) { 37fe5d6d1eSSzymon Olewniczak $event->preventDefault(); 38fe5d6d1eSSzymon Olewniczak $event->result = call_user_func(array($this, "migration$to"), $event->data); 39fe5d6d1eSSzymon Olewniczak } 40fe5d6d1eSSzymon Olewniczak } 41fe5d6d1eSSzymon Olewniczak 42fe5d6d1eSSzymon Olewniczak /** 43fe5d6d1eSSzymon Olewniczak * Executes Migration 1 44fe5d6d1eSSzymon Olewniczak * 45fe5d6d1eSSzymon Olewniczak * Add a latest column to all existing multi tables 46fe5d6d1eSSzymon Olewniczak * 47fe5d6d1eSSzymon Olewniczak * @param helper_plugin_sqlite $sqlite 48fe5d6d1eSSzymon Olewniczak * @return bool 49fe5d6d1eSSzymon Olewniczak */ 50fe5d6d1eSSzymon Olewniczak protected function migration1($data) { 51*8529a37eSSzymon Olewniczak global $INFO; 52*8529a37eSSzymon Olewniczak 53fe5d6d1eSSzymon Olewniczak $file = $data['file']; 54fe5d6d1eSSzymon Olewniczak /** @var helper_plugin_sqlite $sqlite */ 55fe5d6d1eSSzymon Olewniczak $sqlite = $data['sqlite']; 56fe5d6d1eSSzymon Olewniczak 57fe5d6d1eSSzymon Olewniczak $sql = file_get_contents($file); 58fe5d6d1eSSzymon Olewniczak if ($sql === false) { 59fe5d6d1eSSzymon Olewniczak throw new Exception('cannot open file '.$file); 60fe5d6d1eSSzymon Olewniczak } 61fe5d6d1eSSzymon Olewniczak 62fe5d6d1eSSzymon Olewniczak $matches = array(); 63fe5d6d1eSSzymon Olewniczak preg_match_all('/.*?(?(?=BEGIN)BEGIN.*?END)\s*;/is', $sql, $matches); 64fe5d6d1eSSzymon Olewniczak $queries = $matches[0]; 65fe5d6d1eSSzymon Olewniczak 66fe5d6d1eSSzymon Olewniczak $db = $sqlite->getAdapter()->getDb(); 67fe5d6d1eSSzymon Olewniczak 68fe5d6d1eSSzymon Olewniczak $db->beginTransaction(); 69fe5d6d1eSSzymon Olewniczak foreach ($queries as $query) { 70fe5d6d1eSSzymon Olewniczak $res = $db->query($query); 71fe5d6d1eSSzymon Olewniczak if($res === false) { 72fe5d6d1eSSzymon Olewniczak $err = $db->errorInfo(); 73fe5d6d1eSSzymon Olewniczak msg($err[0].' '.$err[1].' '.$err[2].':<br /><pre>'.hsc($sql).'</pre>', -1); 74fe5d6d1eSSzymon Olewniczak $db->rollBack(); 75fe5d6d1eSSzymon Olewniczak return false; 76fe5d6d1eSSzymon Olewniczak } 77fe5d6d1eSSzymon Olewniczak } 78*8529a37eSSzymon Olewniczak 79*8529a37eSSzymon Olewniczak //import from bez 80*8529a37eSSzymon Olewniczak $bez = new \PDO('sqlite:' . DOKU_INC . 'data/meta/bez.sqlite3'); 81*8529a37eSSzymon Olewniczak 82*8529a37eSSzymon Olewniczak $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 83*8529a37eSSzymon Olewniczak 84*8529a37eSSzymon Olewniczak $stmt = $bez->query('SELECT * FROM issuetypes'); 85*8529a37eSSzymon Olewniczak while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { 86*8529a37eSSzymon Olewniczak $sqlite->storeEntry('label', array('id' => $row['id'], 87*8529a37eSSzymon Olewniczak 'name' => $row['pl'], 88*8529a37eSSzymon Olewniczak 'added_by' => $INFO['client'], 89*8529a37eSSzymon Olewniczak 'added_date' => date('c'))); 90*8529a37eSSzymon Olewniczak } 91*8529a37eSSzymon Olewniczak 92*8529a37eSSzymon Olewniczak $stmt = $bez->query('SELECT * FROM tasktypes'); 93*8529a37eSSzymon Olewniczak while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { 94*8529a37eSSzymon Olewniczak $sqlite->storeEntry('task_program', array('id' => $row['id'], 95*8529a37eSSzymon Olewniczak 'name' => $row['pl'], 96*8529a37eSSzymon Olewniczak 'added_by' => $INFO['client'], 97*8529a37eSSzymon Olewniczak 'added_date' => date('c'))); 98*8529a37eSSzymon Olewniczak } 99*8529a37eSSzymon Olewniczak 100*8529a37eSSzymon Olewniczak $stmt = $bez->query('SELECT *, (SELECT COUNT(*) FROM tasks 101*8529a37eSSzymon Olewniczak WHERE tasks.cause = commcauses.id) AS task_count FROM commcauses'); 102*8529a37eSSzymon Olewniczak while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { 103*8529a37eSSzymon Olewniczak if ($row['type'] == '0') { 104*8529a37eSSzymon Olewniczak $type = 'comment'; 105*8529a37eSSzymon Olewniczak } elseif ($row['type'] == '1') { 106*8529a37eSSzymon Olewniczak $type = 'cause_real'; 107*8529a37eSSzymon Olewniczak } elseif ($row['type'] == '2') { 108*8529a37eSSzymon Olewniczak $type = 'cause_potential'; 109*8529a37eSSzymon Olewniczak } 110*8529a37eSSzymon Olewniczak $sqlite->storeEntry('thread_comment', 111*8529a37eSSzymon Olewniczak array('id' => $row['id'], 112*8529a37eSSzymon Olewniczak 'thread_id' => $row['issue'], 113*8529a37eSSzymon Olewniczak 'type' => $type, 114*8529a37eSSzymon Olewniczak 'author' => $row['reporter'], 115*8529a37eSSzymon Olewniczak 'create_date' => date('c', strtotime($row['datetime'])), 116*8529a37eSSzymon Olewniczak 'last_modification_date' => date('c', strtotime($row['datetime'])), 117*8529a37eSSzymon Olewniczak 'content' => $row['content'], 118*8529a37eSSzymon Olewniczak 'content_html' => $row['content_cache'], 119*8529a37eSSzymon Olewniczak 'task_count' => $row['task_count'])); 120*8529a37eSSzymon Olewniczak } 121*8529a37eSSzymon Olewniczak 122*8529a37eSSzymon Olewniczak $stmt = $bez->query('SELECT tasks.*, commcauses.type AS cause_type 123*8529a37eSSzymon Olewniczak FROM tasks 124*8529a37eSSzymon Olewniczak LEFT JOIN commcauses ON tasks.cause = commcauses.id'); 125*8529a37eSSzymon Olewniczak //thread_id => array('user_id' => 'user_id') 126*8529a37eSSzymon Olewniczak $task_assignee = array(); 127*8529a37eSSzymon Olewniczak while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { 128*8529a37eSSzymon Olewniczak if ($row['close_date'] != '') { 129*8529a37eSSzymon Olewniczak $last_mod = date('c', (int) $row['close_date']); 130*8529a37eSSzymon Olewniczak } else { 131*8529a37eSSzymon Olewniczak $last_mod = date('c', (int) $row['date']); 132*8529a37eSSzymon Olewniczak } 133*8529a37eSSzymon Olewniczak 134*8529a37eSSzymon Olewniczak $data = array('id' => $row['id'], 135*8529a37eSSzymon Olewniczak 'original_poster' => $row['reporter'], 136*8529a37eSSzymon Olewniczak 'assignee' => $row['executor'], 137*8529a37eSSzymon Olewniczak 'create_date' => date('c', (int) $row['date']), 138*8529a37eSSzymon Olewniczak 'last_activity_date' => $last_mod, 139*8529a37eSSzymon Olewniczak 'last_modification_date' => $last_mod, 140*8529a37eSSzymon Olewniczak 'plan_date' => $row['plan_date'], 141*8529a37eSSzymon Olewniczak 'all_day_event' => $row['all_day_event'], 142*8529a37eSSzymon Olewniczak 'start_time' => $row['start_time'], 143*8529a37eSSzymon Olewniczak 'finish_time' => $row['finish_time'], 144*8529a37eSSzymon Olewniczak 'content' => $row['task'], 145*8529a37eSSzymon Olewniczak 'content_html' => $row['task_cache'], 146*8529a37eSSzymon Olewniczak 'thread_id' => $row['issue'], 147*8529a37eSSzymon Olewniczak 'thread_comment_id' => $row['cause'], 148*8529a37eSSzymon Olewniczak 'task_program_id' => $row['tasktype'] 149*8529a37eSSzymon Olewniczak ); 150*8529a37eSSzymon Olewniczak 151*8529a37eSSzymon Olewniczak if ($data['thread_id'] != '') { 152*8529a37eSSzymon Olewniczak if (!is_array($task_assignee[$data['thread_id']])) { 153*8529a37eSSzymon Olewniczak $task_assignee[$data['thread_id']] = array(); 154*8529a37eSSzymon Olewniczak } 155*8529a37eSSzymon Olewniczak $task_assignee[$data['thread_id']][$row['executor']] = $row['executor']; 156*8529a37eSSzymon Olewniczak } 157*8529a37eSSzymon Olewniczak 158*8529a37eSSzymon Olewniczak if ($row['cost'] != '0') { 159*8529a37eSSzymon Olewniczak $data['cost'] = $row['cost']; 160*8529a37eSSzymon Olewniczak } 161*8529a37eSSzymon Olewniczak 162*8529a37eSSzymon Olewniczak if ($row['issue'] == '') { 163*8529a37eSSzymon Olewniczak $data['type'] = 'program'; 164*8529a37eSSzymon Olewniczak } elseif ($row['cause'] == '') { 165*8529a37eSSzymon Olewniczak $data['type'] = 'correction'; 166*8529a37eSSzymon Olewniczak } elseif ($row['cause_type'] == '1') { 167*8529a37eSSzymon Olewniczak $data['type'] = 'corrective'; 168*8529a37eSSzymon Olewniczak } else { 169*8529a37eSSzymon Olewniczak $data['type'] = 'preventive'; 170*8529a37eSSzymon Olewniczak } 171*8529a37eSSzymon Olewniczak 172*8529a37eSSzymon Olewniczak if ($row['state'] == '0') { 173*8529a37eSSzymon Olewniczak $data['state'] = 'opened'; 174*8529a37eSSzymon Olewniczak } elseif ($row['state'] == '1' || $row['state'] == '2') { 175*8529a37eSSzymon Olewniczak $data['state'] = 'done'; 176*8529a37eSSzymon Olewniczak $data['closed_by'] = $row['executor']; 177*8529a37eSSzymon Olewniczak $data['close_date'] = date('c', (int) $row['close_date']); 178*8529a37eSSzymon Olewniczak 179*8529a37eSSzymon Olewniczak if ($row['reason'] != '') { 180*8529a37eSSzymon Olewniczak $sqlite->storeEntry('task_comment', 181*8529a37eSSzymon Olewniczak array('task_id' => $row['id'], 182*8529a37eSSzymon Olewniczak 'author' => $row['executor'], 183*8529a37eSSzymon Olewniczak 'create_date' => $data['close_date'], 184*8529a37eSSzymon Olewniczak 'last_modification_date' => $data['close_date'], 185*8529a37eSSzymon Olewniczak 'content' => $row['reason'], 186*8529a37eSSzymon Olewniczak 'content_html' => $row['reason_cache'])); 187*8529a37eSSzymon Olewniczak } 188*8529a37eSSzymon Olewniczak } 189*8529a37eSSzymon Olewniczak 190*8529a37eSSzymon Olewniczak //user_id => array() 191*8529a37eSSzymon Olewniczak $participants = array(); 192*8529a37eSSzymon Olewniczak $subscribents = explode(',', $row['subscribents']); 193*8529a37eSSzymon Olewniczak foreach ($subscribents as $user_id) { 194*8529a37eSSzymon Olewniczak $participants[$user_id] = array('user_id' => $user_id, 'subscribent' => '1'); 195*8529a37eSSzymon Olewniczak } 196*8529a37eSSzymon Olewniczak 197*8529a37eSSzymon Olewniczak $op = $data['original_poster']; 198*8529a37eSSzymon Olewniczak if (!isset($participants[$op])) { 199*8529a37eSSzymon Olewniczak $participants[$op] = array('user_id' => $op, 'original_poster' => '1'); 200*8529a37eSSzymon Olewniczak } else { 201*8529a37eSSzymon Olewniczak $participants[$op]['original_poster'] = '1'; 202*8529a37eSSzymon Olewniczak } 203*8529a37eSSzymon Olewniczak 204*8529a37eSSzymon Olewniczak $as = $data['assignee']; 205*8529a37eSSzymon Olewniczak if (!isset($participants[$as])) { 206*8529a37eSSzymon Olewniczak $participants[$as] = array('user_id' => $as, 'assignee' => '1'); 207*8529a37eSSzymon Olewniczak } else { 208*8529a37eSSzymon Olewniczak $participants[$as]['assignee'] = '1'; 209*8529a37eSSzymon Olewniczak } 210*8529a37eSSzymon Olewniczak 211*8529a37eSSzymon Olewniczak foreach($participants as $part) { 212*8529a37eSSzymon Olewniczak $part['task_id'] = $row['id']; 213*8529a37eSSzymon Olewniczak $part['added_by'] = $INFO['client']; 214*8529a37eSSzymon Olewniczak $part['added_date'] = date('c'); 215*8529a37eSSzymon Olewniczak 216*8529a37eSSzymon Olewniczak $res = $sqlite->storeEntry('task_participant', $part); 217*8529a37eSSzymon Olewniczak if ($res === false) { 218*8529a37eSSzymon Olewniczak throw new Exception($db->errorInfo()); 219*8529a37eSSzymon Olewniczak } 220*8529a37eSSzymon Olewniczak } 221*8529a37eSSzymon Olewniczak 222*8529a37eSSzymon Olewniczak $sqlite->storeEntry('task', $data); 223*8529a37eSSzymon Olewniczak } 224*8529a37eSSzymon Olewniczak 225*8529a37eSSzymon Olewniczak 226*8529a37eSSzymon Olewniczak 227*8529a37eSSzymon Olewniczak $stmt = $bez->query('SELECT *, 228*8529a37eSSzymon Olewniczak (SELECT COUNT(*) FROM tasks 229*8529a37eSSzymon Olewniczak WHERE tasks.issue = issues.id) AS task_count, 230*8529a37eSSzymon Olewniczak (SELECT COUNT(*) FROM tasks 231*8529a37eSSzymon Olewniczak WHERE tasks.issue = issues.id AND tasks.state != 0) AS task_closed_count, 232*8529a37eSSzymon Olewniczak (SELECT SUM(cost) FROM tasks 233*8529a37eSSzymon Olewniczak WHERE tasks.issue = issues.id) AS task_sum_cost 234*8529a37eSSzymon Olewniczak FROM issues'); 235*8529a37eSSzymon Olewniczak 236*8529a37eSSzymon Olewniczak while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { 237*8529a37eSSzymon Olewniczak 238*8529a37eSSzymon Olewniczak $data = array('id' => $row['id'], 239*8529a37eSSzymon Olewniczak 'original_poster' => $row['reporter'], 240*8529a37eSSzymon Olewniczak 'coordinator' => $row['coordinator'], 241*8529a37eSSzymon Olewniczak 'create_date' => date('c', (int) $row['date']), 242*8529a37eSSzymon Olewniczak 'last_activity_date' => date('c', strtotime($row['last_activity'])), 243*8529a37eSSzymon Olewniczak 'last_modification_date' => date('c', (int) $row['last_mod']), 244*8529a37eSSzymon Olewniczak 'title' => $row['title'], 245*8529a37eSSzymon Olewniczak 'content' => $row['description'], 246*8529a37eSSzymon Olewniczak 'content_html' => $row['description_cache'], 247*8529a37eSSzymon Olewniczak 'task_count' => $row['task_count'], 248*8529a37eSSzymon Olewniczak 'task_count_closed' => $row['task_closed_count'] 249*8529a37eSSzymon Olewniczak ); 250*8529a37eSSzymon Olewniczak 251*8529a37eSSzymon Olewniczak if ($row['task_sum_cost'] != '0') { 252*8529a37eSSzymon Olewniczak $data['task_sum_cost'] = $row['task_sum_cost']; 253*8529a37eSSzymon Olewniczak } 254*8529a37eSSzymon Olewniczak 255*8529a37eSSzymon Olewniczak if ($row['coordinator'] == '') { 256*8529a37eSSzymon Olewniczak $data['state'] = 'proposal'; 257*8529a37eSSzymon Olewniczak } elseif ($row['state'] == '1') { 258*8529a37eSSzymon Olewniczak $data['closed_by'] = $row['coordinator']; 259*8529a37eSSzymon Olewniczak $data['state'] = 'closed'; 260*8529a37eSSzymon Olewniczak $data['close_date'] = $data['last_modification_date']; 261*8529a37eSSzymon Olewniczak 262*8529a37eSSzymon Olewniczak $sqlite->storeEntry('thread_comment', 263*8529a37eSSzymon Olewniczak array('thread_id' => $row['id'], 264*8529a37eSSzymon Olewniczak 'type' => 'comment', 265*8529a37eSSzymon Olewniczak 'author' => $row['coordinator'], 266*8529a37eSSzymon Olewniczak 'create_date' => $data['close_date'], 267*8529a37eSSzymon Olewniczak 'last_modification_date' => $data['close_date'], 268*8529a37eSSzymon Olewniczak 'content' => $row['opinion'], 269*8529a37eSSzymon Olewniczak 'content_html' => $row['opinion_cache'])); 270*8529a37eSSzymon Olewniczak 271*8529a37eSSzymon Olewniczak 272*8529a37eSSzymon Olewniczak } elseif ($row['state'] == '2') { 273*8529a37eSSzymon Olewniczak $data['closed_by'] = $row['coordinator']; 274*8529a37eSSzymon Olewniczak $data['state'] = 'rejected'; 275*8529a37eSSzymon Olewniczak $data['close_date'] = $data['last_modification_date']; 276*8529a37eSSzymon Olewniczak 277*8529a37eSSzymon Olewniczak if ($row['opinion'] != '') { 278*8529a37eSSzymon Olewniczak $res = $sqlite->storeEntry('thread_comment', 279*8529a37eSSzymon Olewniczak array('thread_id' => $row['id'], 280*8529a37eSSzymon Olewniczak 'type' => 'comment', 281*8529a37eSSzymon Olewniczak 'author' => $row['coordinator'], 282*8529a37eSSzymon Olewniczak 'create_date' => $data['close_date'], 283*8529a37eSSzymon Olewniczak 'last_modification_date' => $data['close_date'], 284*8529a37eSSzymon Olewniczak 'content' => $row['opinion'], 285*8529a37eSSzymon Olewniczak 'content_html' => $row['opinion_cache'])); 286*8529a37eSSzymon Olewniczak if ($res === false) { 287*8529a37eSSzymon Olewniczak throw new Exception($db->errorInfo()); 288*8529a37eSSzymon Olewniczak } 289*8529a37eSSzymon Olewniczak } 290*8529a37eSSzymon Olewniczak 291*8529a37eSSzymon Olewniczak } elseif ($row['task_count'] == $row['task_closed_count']) { 292*8529a37eSSzymon Olewniczak $data['state'] = 'done'; 293*8529a37eSSzymon Olewniczak } else { 294*8529a37eSSzymon Olewniczak $data['state'] = 'opened'; 295*8529a37eSSzymon Olewniczak } 296*8529a37eSSzymon Olewniczak 297*8529a37eSSzymon Olewniczak $sqlite->storeEntry('thread', $data); 298*8529a37eSSzymon Olewniczak 299*8529a37eSSzymon Olewniczak $sqlite->storeEntry('thread_label', 300*8529a37eSSzymon Olewniczak array('thread_id' => $row['id'], 301*8529a37eSSzymon Olewniczak 'label_id' => $row['type'])); 302*8529a37eSSzymon Olewniczak 303*8529a37eSSzymon Olewniczak //participants 304*8529a37eSSzymon Olewniczak //user_id => array() 305*8529a37eSSzymon Olewniczak $participants = array(); 306*8529a37eSSzymon Olewniczak $org_participants = array_filter(explode(',', $row['participants'])); 307*8529a37eSSzymon Olewniczak foreach ($org_participants as $user_id) { 308*8529a37eSSzymon Olewniczak $participants[$user_id] = array('user_id' => $user_id); 309*8529a37eSSzymon Olewniczak } 310*8529a37eSSzymon Olewniczak 311*8529a37eSSzymon Olewniczak $subscribents = array_filter(explode(',', $row['subscribents'])); 312*8529a37eSSzymon Olewniczak foreach ($subscribents as $user_id) { 313*8529a37eSSzymon Olewniczak if (!isset($participants[$user_id])) { 314*8529a37eSSzymon Olewniczak $participants[$user_id] = array('user_id' => $user_id); 315*8529a37eSSzymon Olewniczak } 316*8529a37eSSzymon Olewniczak $participants[$user_id]['subscribent'] = '1'; 317*8529a37eSSzymon Olewniczak } 318*8529a37eSSzymon Olewniczak 319*8529a37eSSzymon Olewniczak if (is_array($task_assignee[$row['id']])) foreach ($task_assignee[$row['id']] as $user_id) { 320*8529a37eSSzymon Olewniczak if (!isset($participants[$user_id])) { 321*8529a37eSSzymon Olewniczak $participants[$user_id] = array('user_id' => $user_id); 322*8529a37eSSzymon Olewniczak } 323*8529a37eSSzymon Olewniczak $participants[$user_id]['task_assignee'] = '1'; 324*8529a37eSSzymon Olewniczak } 325*8529a37eSSzymon Olewniczak 326*8529a37eSSzymon Olewniczak $op = $data['original_poster']; 327*8529a37eSSzymon Olewniczak if (!isset($participants[$op])) { 328*8529a37eSSzymon Olewniczak $participants[$op] = array('user_id' => $op, 'original_poster' => '1'); 329*8529a37eSSzymon Olewniczak } else { 330*8529a37eSSzymon Olewniczak $participants[$op]['original_poster'] = '1'; 331*8529a37eSSzymon Olewniczak } 332*8529a37eSSzymon Olewniczak 333*8529a37eSSzymon Olewniczak $cor = $data['coordinator']; 334*8529a37eSSzymon Olewniczak if (!isset($participants[$cor])) { 335*8529a37eSSzymon Olewniczak $participants[$cor] = array('user_id' => $cor, 'coordinator' => '1'); 336*8529a37eSSzymon Olewniczak } else { 337*8529a37eSSzymon Olewniczak $participants[$cor]['coordinator'] = '1'; 338*8529a37eSSzymon Olewniczak } 339*8529a37eSSzymon Olewniczak 340*8529a37eSSzymon Olewniczak foreach($participants as $part) { 341*8529a37eSSzymon Olewniczak $part['thread_id'] = $row['id']; 342*8529a37eSSzymon Olewniczak $part['added_by'] = $INFO['client']; 343*8529a37eSSzymon Olewniczak $part['added_date'] = date('c'); 344*8529a37eSSzymon Olewniczak 345*8529a37eSSzymon Olewniczak $sqlite->storeEntry('thread_participant', $part); 346*8529a37eSSzymon Olewniczak } 347*8529a37eSSzymon Olewniczak 348*8529a37eSSzymon Olewniczak } 349*8529a37eSSzymon Olewniczak 350fe5d6d1eSSzymon Olewniczak $db->commit(); 351fe5d6d1eSSzymon Olewniczak 352fe5d6d1eSSzymon Olewniczak return true; 353fe5d6d1eSSzymon Olewniczak } 354fe5d6d1eSSzymon Olewniczak 355fe5d6d1eSSzymon Olewniczak} 356