Conditions | 76 |
Paths | > 20000 |
Total Lines | 609 |
Code Lines | 407 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php declare(strict_types=1); |
||
132 | function upgradeDB() |
||
133 | { |
||
134 | global $xoopsModule; |
||
135 | $helper = Xhelp\Helper::getInstance(); |
||
136 | /** @var \XoopsMySQLDatabase $xoopsDB */ |
||
137 | $xoopsDB = \XoopsDatabaseFactory::getDatabaseConnection(); |
||
138 | //1. Determine previous release |
||
139 | // *** Update this in sql/mysql.sql for each release ** |
||
140 | if (!Xhelp\Utility::tableExists('xhelp_meta')) { |
||
141 | $ver = '0.5'; |
||
142 | } elseif (!$ver = Xhelp\Utility::getMeta('version')) { |
||
143 | exit(_AM_XHELP_VERSION_ERR); |
||
144 | } |
||
145 | |||
146 | /** @var \XoopsModules\Xhelp\StaffHandler $staffHandler */ |
||
147 | $staffHandler = $helper->getHandler('Staff'); |
||
148 | /** @var \XoopsModules\Xhelp\MembershipHandler $membershipHandler */ |
||
149 | $membershipHandler = $helper->getHandler('Membership'); |
||
150 | /** @var \XoopsModules\Xhelp\TicketHandler $ticketHandler */ |
||
151 | $ticketHandler = $helper->getHandler('Ticket'); |
||
152 | /** @var \XoopsMemberHandler $memberHandler */ |
||
153 | $memberHandler = xoops_getHandler('member'); |
||
154 | /** @var \XoopsModules\Xhelp\RoleHandler $roleHandler */ |
||
155 | $roleHandler = $helper->getHandler('Role'); |
||
156 | |||
157 | $mid = $xoopsModule->getVar('mid'); |
||
158 | |||
159 | xoops_cp_header(); |
||
160 | //echo $oAdminButton->renderButtons(''); |
||
161 | $adminObject = Admin::getInstance(); |
||
162 | $adminObject->displayNavigation(basename(__FILE__)); |
||
163 | |||
164 | echo '<h2>' . _AM_XHELP_UPDATE_DB . '</h2>'; |
||
165 | $ret = true; |
||
166 | //2. Do All Upgrades necessary to make current |
||
167 | // Break statements are omitted on purpose |
||
168 | switch ($ver) { |
||
169 | case '0.5': |
||
170 | set_time_limit(60); |
||
171 | printf('<h3>' . _AM_XHELP_UPDATE_TO . '</h3>', '0.6'); |
||
172 | echo '<ul>'; |
||
173 | //Create meta table |
||
174 | $ret = $ret |
||
175 | && runQuery( |
||
176 | sprintf("CREATE TABLE %s (metakey VARCHAR(50) NOT NULL DEFAULT '', metavalue VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (metakey)) ENGINE=MyISAM;", $xoopsDB->prefix('xhelp_meta')), |
||
177 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_meta'), |
||
178 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_meta') |
||
179 | ); |
||
180 | |||
181 | //Insert Current Version into table |
||
182 | $qry = $xoopsDB->query(sprintf("INSERT INTO `%s` VALUES('version', %s)", $xoopsDB->prefix('xhelp_meta'), $xoopsDB->quoteString($ver))); |
||
183 | |||
184 | //Update xhelp_responses table |
||
185 | $ret = $ret |
||
186 | && runQuery(sprintf("ALTER TABLE %s ADD private INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_responses')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_responses'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_responses')); |
||
187 | |||
188 | //Retrieve uid's of all staff members |
||
189 | $qry = $xoopsDB->query('SELECT uid FROM ' . $xoopsDB->prefix('xhelp_staff') . ' ORDER BY uid'); |
||
190 | |||
191 | //Get email addresses in user profile |
||
192 | $staff = []; |
||
193 | while (false !== ($arr = $xoopsDB->fetchArray($qry))) { |
||
194 | $staff[$arr['uid']] = ''; |
||
195 | } |
||
196 | $xoopsDB->freeRecordSet($qry); |
||
197 | |||
198 | $query = 'SELECT uid, email FROM ' . $xoopsDB->prefix('users') . ' WHERE uid IN (' . implode(',', array_keys($staff)) . ')'; |
||
199 | $qry = $xoopsDB->query($query); |
||
200 | while (false !== ($arr = $xoopsDB->fetchArray($qry))) { |
||
201 | $staff[$arr['uid']] = $arr['email']; |
||
202 | } |
||
203 | $xoopsDB->freeRecordSet($qry); |
||
204 | |||
205 | //Update xhelp_staff table |
||
206 | $ret = $ret |
||
207 | && runQuery(sprintf("ALTER TABLE %s ADD email VARCHAR(255) NOT NULL DEFAULT '' AFTER uid, ADD notify INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_staff')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_staff'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_staff')); |
||
208 | |||
209 | //Update existing staff records |
||
210 | $staff_tbl = $xoopsDB->prefix('xhelp_staff'); |
||
211 | $notif_tbl = $xoopsDB->prefix('xoopsnotifications'); |
||
212 | $email_tpl = $xoopsModule->getInfo('_email_tpl'); |
||
213 | foreach ($staff as $uid => $email) { |
||
214 | //get notifications for current user |
||
215 | $usernotif = 0; |
||
216 | $qry = $xoopsDB->query(sprintf("SELECT DISTINCT not_category, not_event FROM `%s` WHERE not_uid = %u AND not_category='dept' AND not_modid=%u", $notif_tbl, $uid, $mid)); |
||
217 | while (false !== ($arr = $xoopsDB->fetchArray($qry))) { |
||
218 | //Look for current event information in $email_tpl |
||
219 | foreach ($email_tpl as $tpl) { |
||
220 | if (($tpl['name'] == $arr['not_event']) && ($tpl['category'] == $arr['not_category'])) { |
||
221 | $usernotif |= 2 ** $tpl['bit_value']; |
||
222 | break; |
||
223 | } |
||
224 | } |
||
225 | } |
||
226 | |||
227 | //Update xhelp_staff with user notifications & email address |
||
228 | $ret = $ret |
||
229 | && runQuery(sprintf('UPDATE `%s` SET email = %s, notify = %u WHERE uid = %u', $staff_tbl, $xoopsDB->quoteString($email), $usernotif, $uid), sprintf(_AM_XHELP_MSG_UPDATESTAFF, $uid), sprintf(_AM_XHELP_MSG_UPDATESTAFF_ERR, $uid)); |
||
230 | } |
||
231 | echo '</ul>'; |
||
232 | // no break |
||
233 | case '0.6': |
||
234 | set_time_limit(60); |
||
235 | //Do DB updates to make 0.7 |
||
236 | printf('<h3>' . _AM_XHELP_UPDATE_TO . '</h3>', '0.7'); |
||
237 | |||
238 | echo '<ul>'; |
||
239 | // change table names to lowercase |
||
240 | $ret = $ret && renameTable('xhelp_logMessages', 'xhelp_logmessages'); |
||
241 | $ret = $ret && renameTable('xhelp_responseTemplates', 'xhelp_responsetemplates'); |
||
242 | $ret = $ret && renameTable('xhelp_jStaffDept', 'xhelp_jstaffdept'); |
||
243 | $ret = $ret && renameTable('xhelp_staffReview', 'xhelp_staffreview'); |
||
244 | $ret = $ret && renameTable('xhelp_emailTpl', 'xhelp_emailtpl'); |
||
245 | |||
246 | // Remove unused table - xhelp_emailtpl |
||
247 | $ret = $ret |
||
248 | && runQuery(sprintf('DROP TABLE %s', $xoopsDB->prefix('xhelp_emailtpl')), sprintf(_AM_XHELP_MSG_REMOVE_TABLE, 'xhelp_emailtpl'), sprintf(_AM_XHELP_MSG_NOT_REMOVE_TABLE, 'xhelp_emailtpl')); |
||
249 | |||
250 | // xhelp_staff table - permTimestamp |
||
251 | $ret = $ret |
||
252 | && runQuery(sprintf("ALTER TABLE %s ADD permTimestamp INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_staff')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_staff'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_staff')); |
||
253 | |||
254 | //Update xhelp_tickets table |
||
255 | $ret = $ret |
||
256 | && runQuery(sprintf("ALTER TABLE %s MODIFY SUBJECT VARCHAR(100) NOT NULL DEFAULT ''", $xoopsDB->prefix('xhelp_tickets')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_tickets'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_tickets')); |
||
257 | |||
258 | $ret = $ret |
||
259 | && runQuery( |
||
260 | sprintf( |
||
261 | "ALTER TABLE %s ADD (serverid INT(11) DEFAULT NULL, |
||
262 | emailHash VARCHAR(100) DEFAULT NULL, |
||
263 | email VARCHAR(100) DEFAULT NULL, |
||
264 | overdueTime INT(11) NOT NULL DEFAULT '0', |
||
265 | KEY emailHash (emailHash))", |
||
266 | $xoopsDB->prefix('xhelp_tickets') |
||
267 | ), |
||
268 | sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_tickets'), |
||
269 | sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_tickets') |
||
270 | ); |
||
271 | |||
272 | // Create xhelp_department_mailbox table |
||
273 | $ret = $ret |
||
274 | && runQuery( |
||
275 | sprintf( |
||
276 | 'CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
277 | departmentid INT(11) DEFAULT NULL, |
||
278 | emailaddress VARCHAR(255) DEFAULT NULL, |
||
279 | SERVER VARCHAR(50) DEFAULT NULL, |
||
280 | serverport INT(11) DEFAULT NULL, |
||
281 | username VARCHAR(50) DEFAULT NULL, |
||
282 | PASSWORD VARCHAR(50) DEFAULT NULL, |
||
283 | priority TINYINT(4) DEFAULT NULL, |
||
284 | mboxtype INT(11) NOT NULL DEFAULT 1, |
||
285 | PRIMARY KEY (id), |
||
286 | UNIQUE KEY id (id), |
||
287 | KEY departmentid (departmentid), |
||
288 | KEY emailaddress (emailaddress), |
||
289 | KEY mboxtype (mboxtype) |
||
290 | )ENGINE=MyISAM;', |
||
291 | $xoopsDB->prefix('xhelp_department_mailbox') |
||
292 | ), |
||
293 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_department_mailbox'), |
||
294 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_department_mailbox') |
||
295 | ); |
||
296 | |||
297 | // Create xhelp_mailevent table |
||
298 | $ret = $ret |
||
299 | && runQuery( |
||
300 | sprintf( |
||
301 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
302 | mbox_id INT(11) NOT NULL DEFAULT '0', |
||
303 | event_desc TEXT, |
||
304 | event_class INT(11) NOT NULL DEFAULT '0', |
||
305 | posted INT(11) NOT NULL DEFAULT '0', |
||
306 | PRIMARY KEY(id) |
||
307 | )ENGINE=MyISAM;", |
||
308 | $xoopsDB->prefix('xhelp_mailevent') |
||
309 | ), |
||
310 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_mailevent'), |
||
311 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_mailevent') |
||
312 | ); |
||
313 | |||
314 | // Create xhelp_roles table |
||
315 | $ret = $ret |
||
316 | && runQuery( |
||
317 | sprintf( |
||
318 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
319 | name VARCHAR(35) NOT NULL DEFAULT '', |
||
320 | description MEDIUMTEXT, |
||
321 | tasks INT(11) NOT NULL DEFAULT '0', |
||
322 | PRIMARY KEY(id) |
||
323 | )ENGINE=MyISAM;", |
||
324 | $xoopsDB->prefix('xhelp_roles') |
||
325 | ), |
||
326 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_roles'), |
||
327 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_roles') |
||
328 | ); |
||
329 | |||
330 | // Create xhelp_staffroles table |
||
331 | $ret = $ret |
||
332 | && runQuery( |
||
333 | sprintf( |
||
334 | "CREATE TABLE %s (uid INT(11) NOT NULL DEFAULT '0', |
||
335 | roleid INT(11) NOT NULL DEFAULT '0', |
||
336 | deptid INT(11) NOT NULL DEFAULT '0', |
||
337 | PRIMARY KEY(uid, roleid, deptid) |
||
338 | )ENGINE=MyISAM;", |
||
339 | $xoopsDB->prefix('xhelp_staffroles') |
||
340 | ), |
||
341 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_staffroles'), |
||
342 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_staffroles') |
||
343 | ); |
||
344 | |||
345 | // Add default roles to db |
||
346 | if ($hasRoles = Xhelp\Utility::createRoles()) { |
||
347 | echo '<li>' . _AM_XHELP_MESSAGE_DEF_ROLES . '</li>'; |
||
348 | } else { |
||
349 | echo '<li>' . _AM_XHELP_MESSAGE_DEF_ROLES_ERROR . '</li>'; |
||
350 | } |
||
351 | |||
352 | // Set all staff members to have admin permission role |
||
353 | $staffArray = $staffHandler->getObjects(); |
||
354 | if ($staffArray) { |
||
355 | foreach ($staffArray as $staff) { |
||
356 | $uid = $staff->getVar('uid'); |
||
357 | $depts = $membershipHandler->membershipByStaff($uid, true); |
||
358 | if ($staffHandler->addStaffRole($uid, 1, 0)) { |
||
359 | echo '<li>' . sprintf(_AM_XHELP_MSG_GLOBAL_PERMS, $uid) . '</li>'; |
||
360 | } |
||
361 | |||
362 | foreach ($depts as $dept) { |
||
363 | $deptid = $dept->getVar('id'); |
||
364 | if ($staffHandler->addStaffRole($uid, 1, $deptid)) { // Departmental permissions |
||
365 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPD_PERMS, $uid, $dept->getVar('department')) . '</li>'; |
||
366 | } |
||
367 | } |
||
368 | |||
369 | $staff->setVar('permTimestamp', time()); // Set initial value for permTimestamp field |
||
370 | if ($staffHandler->insert($staff)) { |
||
371 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATESTAFF, $uid) . '</li>'; |
||
372 | } else { |
||
373 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATESTAFF_ERR, $uid) . '</li>'; |
||
374 | } |
||
375 | } |
||
376 | } |
||
377 | echo '</ul>'; |
||
378 | |||
379 | // no break |
||
380 | case '0.7': |
||
381 | set_time_limit(60); |
||
382 | //Do DB updates to make 0.71 |
||
383 | printf('<h3>' . _AM_XHELP_UPDATE_TO . '</h3>', '0.71'); |
||
384 | |||
385 | echo '<ul>'; |
||
386 | echo '</ul>'; |
||
387 | |||
388 | // no break |
||
389 | case '0.71': |
||
390 | set_time_limit(60); |
||
391 | //Do DB updates to make 0.75 |
||
392 | printf('<h3>' . _AM_XHELP_UPDATE_TO . '</h3>', '0.75'); |
||
393 | |||
394 | echo '<ul>'; |
||
395 | |||
396 | //Changes for php5 compabibility |
||
397 | $ret = $ret |
||
398 | && runQuery(sprintf("ALTER TABLE %s MODIFY lastUpdated INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_logmessages')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_logmessages'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_logmessages')); |
||
399 | $ret = $ret |
||
400 | && runQuery(sprintf("ALTER TABLE %s MODIFY department INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_jstaffdept')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_jstaffdept'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_jstaffdept')); |
||
401 | |||
402 | // Create table for email template information |
||
403 | $ret = $ret |
||
404 | && runQuery( |
||
405 | sprintf( |
||
406 | "CREATE TABLE %s (notif_id INT(11) NOT NULL DEFAULT '0', |
||
407 | staff_setting INT(11) NOT NULL DEFAULT '0', |
||
408 | user_setting INT(11) NOT NULL DEFAULT '0', |
||
409 | staff_options MEDIUMTEXT NOT NULL, |
||
410 | PRIMARY KEY (notif_id) |
||
411 | )ENGINE=MyISAM;", |
||
412 | $xoopsDB->prefix('xhelp_notifications') |
||
413 | ), |
||
414 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_notifications'), |
||
415 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_notifications') |
||
416 | ); |
||
417 | |||
418 | // Add xhelp_status table |
||
419 | $ret = $ret |
||
420 | && runQuery( |
||
421 | sprintf( |
||
422 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
423 | state INT(11) NOT NULL DEFAULT '0', |
||
424 | description VARCHAR(50) NOT NULL DEFAULT '', |
||
425 | PRIMARY KEY(id), |
||
426 | KEY state (state) |
||
427 | )ENGINE=MyISAM;", |
||
428 | $xoopsDB->prefix('xhelp_status') |
||
429 | ), |
||
430 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_status'), |
||
431 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_status') |
||
432 | ); |
||
433 | |||
434 | // Give default statuses for upgrade |
||
435 | /** @var \XoopsModules\Xhelp\StatusHandler $statusHandler */ |
||
436 | $statusHandler = $helper->getHandler('Status'); |
||
437 | $startStatuses = [_XHELP_STATUS0 => 1, _XHELP_STATUS1 => 1, _XHELP_STATUS2 => 2]; |
||
438 | |||
439 | $count = 1; |
||
440 | set_time_limit(60); |
||
441 | foreach ($startStatuses as $desc => $state) { |
||
442 | /** @var \XoopsModules\Xhelp\Status $newStatus */ |
||
443 | $newStatus = $statusHandler->create(); |
||
444 | $newStatus->setVar('id', $count); |
||
445 | $newStatus->setVar('description', $desc); |
||
446 | $newStatus->setVar('state', $state); |
||
447 | if ($statusHandler->insert($newStatus)) { |
||
448 | echo '<li>' . sprintf(_AM_XHELP_MSG_ADD_STATUS, $desc) . '</li>'; |
||
449 | } else { |
||
450 | echo '<li>' . sprintf(_AM_XHELP_MSG_ADD_STATUS_ERR, $desc) . '</li>'; |
||
451 | } |
||
452 | ++$count; |
||
453 | } |
||
454 | |||
455 | // Change old status values to new status values |
||
456 | $oldStatuses = [2 => 3, 1 => 2, 0 => 1]; |
||
457 | |||
458 | foreach ($oldStatuses as $cStatus => $newStatus) { |
||
459 | $criteria = new \Criteria('status', (string)$cStatus); |
||
460 | $success = $ticketHandler->updateAll('status', $newStatus, $criteria); |
||
461 | } |
||
462 | if ($success) { |
||
463 | echo '<li>' . _AM_XHELP_MSG_CHANGED_STATUS . '</li>'; |
||
464 | } else { |
||
465 | echo '<li>' . _AM_XHELP_MSG_CHANGED_STATUS_ERR . '</li>'; |
||
466 | } |
||
467 | |||
468 | // Add xhelp_ticket_submit_emails table |
||
469 | $ret = $ret |
||
470 | && runQuery( |
||
471 | sprintf( |
||
472 | "CREATE TABLE %s (ticketid INT(11) NOT NULL DEFAULT '0', |
||
473 | uid INT(11) NOT NULL DEFAULT '0', |
||
474 | email VARCHAR(100) NOT NULL DEFAULT '', |
||
475 | suppress INT(11) NOT NULL DEFAULT '0', |
||
476 | PRIMARY KEY(ticketid, email) |
||
477 | )ENGINE=MyISAM;", |
||
478 | $xoopsDB->prefix('xhelp_ticket_submit_emails') |
||
479 | ), |
||
480 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_ticket_submit_emails'), |
||
481 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_ticket_submit_emails') |
||
482 | ); |
||
483 | |||
484 | // Add records to xhelp_ticket_submit_emails for existing tickets |
||
485 | $count = $ticketHandler->getCount(); |
||
486 | $batchsize = 100; |
||
487 | |||
488 | $criteria = new \Criteria('', ''); |
||
489 | $criteria->setLimit($batchsize); |
||
490 | $i = 0; |
||
491 | |||
492 | while ($i <= $count) { |
||
493 | set_time_limit(60); |
||
494 | $criteria->setStart($i); |
||
495 | $tickets = $ticketHandler->getObjects($criteria); |
||
496 | |||
497 | $all_users = []; |
||
498 | foreach ($tickets as $ticket) { |
||
499 | $all_users[$ticket->getVar('uid')] = $ticket->getVar('uid'); |
||
500 | } |
||
501 | |||
502 | $criteria = new \Criteria('uid', '(' . implode(',', array_keys($all_users)) . ')', 'IN'); |
||
503 | $users = $memberHandler->getUsers($criteria, true); |
||
504 | |||
505 | foreach ($users as $user) { |
||
506 | $all_users[$user->getVar('uid')] = $user->getVar('email'); |
||
507 | } |
||
508 | unset($users); |
||
509 | |||
510 | foreach ($tickets as $ticket) { |
||
511 | set_time_limit(60); |
||
512 | $ticket_uid = $ticket->getVar('uid'); |
||
513 | if (array_key_exists($ticket_uid, $all_users)) { |
||
514 | $ticket_email = $all_users[$ticket_uid]; |
||
515 | $success = $ticket->addSubmitter($ticket_email, $ticket_uid); |
||
516 | } |
||
517 | } |
||
518 | unset($tickets); |
||
519 | //increment |
||
520 | $i += $batchsize; |
||
521 | } |
||
522 | |||
523 | set_time_limit(60); |
||
524 | // Update xhelp_roles Admin record with new value (2047) |
||
525 | $criteria = new \Criteria('tasks', '511'); |
||
526 | $adminRoles = $roleHandler->getObjects($criteria); |
||
527 | |||
528 | foreach ($adminRoles as $role) { |
||
529 | $role->setVar('tasks', 2047); |
||
530 | if ($roleHandler->insert($role)) { |
||
531 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_ROLE, $role->getVar('name')) . '</li>'; |
||
532 | } else { |
||
533 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_ROLE_ERR, $role->getVar('name')) . '</li>'; |
||
534 | } |
||
535 | } |
||
536 | |||
537 | set_time_limit(60); |
||
538 | $ret = $ret |
||
539 | && runQuery( |
||
540 | sprintf( |
||
541 | 'ALTER TABLE %s ADD (active INT(11) NOT NULL DEFAULT 1, |
||
542 | KEY ACTIVE (ACTIVE))', |
||
543 | $xoopsDB->prefix('xhelp_department_mailbox') |
||
544 | ), |
||
545 | sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_department_mailbox'), |
||
546 | sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_department_mailbox') |
||
547 | ); |
||
548 | |||
549 | // Add xhelp_saved_searches table |
||
550 | $ret = $ret |
||
551 | && runQuery( |
||
552 | sprintf( |
||
553 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
554 | uid INT(11) NOT NULL DEFAULT '0', |
||
555 | name VARCHAR(50) NOT NULL DEFAULT '', |
||
556 | search MEDIUMTEXT NOT NULL, |
||
557 | pagenav_vars MEDIUMTEXT NOT NULL, |
||
558 | PRIMARY KEY(id) |
||
559 | )ENGINE=MyISAM;", |
||
560 | $xoopsDB->prefix('xhelp_saved_searches') |
||
561 | ), |
||
562 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_saved_searches'), |
||
563 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_saved_searches') |
||
564 | ); |
||
565 | |||
566 | set_time_limit(60); |
||
567 | $ret = $ret |
||
568 | && runQuery( |
||
569 | sprintf( |
||
570 | "CREATE TABLE %s (fieldid INT(11) NOT NULL DEFAULT '0', |
||
571 | deptid INT(11) NOT NULL DEFAULT '0', |
||
572 | PRIMARY KEY (fieldid, deptid) |
||
573 | )ENGINE=MyISAM;", |
||
574 | $xoopsDB->prefix('xhelp_ticket_field_departments') |
||
575 | ), |
||
576 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_ticket_field_departments'), |
||
577 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_ticket_field_departments') |
||
578 | ); |
||
579 | |||
580 | $ret = $ret |
||
581 | && runQuery( |
||
582 | sprintf( |
||
583 | "CREATE TABLE %s (ticketid INT(11) NOT NULL DEFAULT '0', |
||
584 | PRIMARY KEY (ticketid) |
||
585 | )ENGINE=MyISAM;", |
||
586 | $xoopsDB->prefix('xhelp_ticket_values') |
||
587 | ), |
||
588 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_ticket_values'), |
||
589 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_ticket_values') |
||
590 | ); |
||
591 | |||
592 | set_time_limit(60); |
||
593 | $ret = $ret |
||
594 | && runQuery( |
||
595 | sprintf( |
||
596 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
597 | NAME VARCHAR(64) NOT NULL DEFAULT '', |
||
598 | description TINYTEXT NOT NULL, |
||
599 | fieldname VARCHAR(64) NOT NULL DEFAULT '', |
||
600 | controltype INT(11) NOT NULL DEFAULT '0', |
||
601 | datatype VARCHAR(64) NOT NULL DEFAULT '', |
||
602 | required TINYINT(1) NOT NULL DEFAULT '0', |
||
603 | fieldlength INT(11) NOT NULL DEFAULT '0', |
||
604 | weight INT(11) NOT NULL DEFAULT '0', |
||
605 | fieldvalues MEDIUMTEXT NOT NULL, |
||
606 | defaultvalue VARCHAR(100) NOT NULL DEFAULT '', |
||
607 | VALIDATION MEDIUMTEXT NOT NULL, |
||
608 | PRIMARY KEY (id), |
||
609 | KEY weight (weight) |
||
610 | )ENGINE=MyISAM;", |
||
611 | $xoopsDB->prefix('xhelp_ticket_fields') |
||
612 | ), |
||
613 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_ticket_fields'), |
||
614 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_ticket_fields') |
||
615 | ); |
||
616 | |||
617 | set_time_limit(60); |
||
618 | // Add notifications to new table |
||
619 | set_time_limit(60); |
||
620 | $hasNotifications = Xhelp\Utility::createNotifications(); |
||
621 | |||
622 | // Make all departments visible to all groups |
||
623 | $hasDeptVisibility = xhelpCreateDepartmentVisibility(); |
||
624 | |||
625 | // Update staff permTimestamp |
||
626 | $staffHandler->updateAll('permTimestamp', time()); |
||
627 | |||
628 | set_time_limit(60); |
||
629 | //Update xhelp_tickets table |
||
630 | set_time_limit(60); |
||
631 | $ret = $ret |
||
632 | && runQuery(sprintf("ALTER TABLE %s MODIFY SUBJECT VARCHAR(255) NOT NULL DEFAULT ''", $xoopsDB->prefix('xhelp_tickets')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_tickets'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_tickets')); |
||
633 | |||
634 | // no break |
||
635 | case '0.75': |
||
636 | set_time_limit(60); |
||
637 | // Set default department |
||
638 | // $xoopsModuleConfig = Xhelp\Utility::getModuleConfig(); |
||
639 | if (null !== $helper->getConfig('xhelp_defaultDept') && 0 != $helper->getConfig('xhelp_defaultDept')) { |
||
640 | $ret = Xhelp\Utility::setMeta('default_department', $helper->getConfig('xhelp_defaultDept')); |
||
641 | } else { |
||
642 | /** @var \XoopsModules\Xhelp\DepartmentHandler $departmentHandler */ |
||
643 | $departmentHandler = $helper->getHandler('Department'); |
||
644 | $depts = $departmentHandler->getObjects(); |
||
645 | $aDepts = []; |
||
646 | foreach ($depts as $dpt) { |
||
647 | $aDepts[] = $dpt->getVar('id'); |
||
648 | } |
||
649 | $ret = Xhelp\Utility::setMeta('default_department', $aDepts[0]); |
||
650 | } |
||
651 | |||
652 | $qry = $xoopsDB->query(sprintf('ALTER TABLE %s DROP PRIMARY KEY', $xoopsDB->prefix('xhelp_ticket_submit_emails'))); |
||
653 | $ret = $ret |
||
654 | && runQuery(sprintf('ALTER TABLE %s ADD PRIMARY KEY(ticketid, uid, email)', $xoopsDB->prefix('xhelp_ticket_submit_emails')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_ticket_submit_emails'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_ticket_submit_emails')); |
||
655 | |||
656 | $ret = $ret |
||
657 | && runQuery(sprintf("ALTER TABLE %s MODIFY department INT(11) NOT NULL DEFAULT '0'", $xoopsDB->prefix('xhelp_jstaffdept')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_jstaffdept'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_jstaffdept')); |
||
658 | |||
659 | echo '<li>' . _AM_XHELP_MSG_CHANGED_DEFAULT_DEPT . '</li>'; |
||
660 | |||
661 | // Add field to xhelp_saved_searches to determine if custom fields table is needed |
||
662 | $ret = $ret |
||
663 | && runQuery(sprintf("ALTER TABLE %s ADD (hasCustFields INT(11) NOT NULL DEFAULT '0')", $xoopsDB->prefix('xhelp_saved_searches')), sprintf(_AM_XHELP_MSG_MODIFYTABLE, 'xhelp_saved_searches'), sprintf(_AM_XHELP_MSG_MODIFYTABLE_ERR, 'xhelp_saved_searches')); |
||
664 | |||
665 | // Take existing saved searches and add 'query' field |
||
666 | /** @var \XoopsModules\Xhelp\SavedSearchHandler $savedSearchHandler */ |
||
667 | $savedSearchHandler = $helper->getHandler('SavedSearch'); |
||
668 | $savedSearches = $savedSearchHandler->getObjects(); |
||
669 | |||
670 | foreach ($savedSearches as $savedSearch) { |
||
671 | set_time_limit(60); |
||
672 | $criteria = unserialize($savedSearch->getVar('search')); |
||
673 | if (is_object($criteria)) { |
||
674 | $savedSearch->setVar('query', $criteria->render()); |
||
675 | |||
676 | if ($savedSearchHandler->insert($savedSearch)) { |
||
677 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_SEARCH, $savedSearch->getVar('id')) . '</li>'; |
||
678 | } else { |
||
679 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_SEARCH_ERR, $savedSearch->getVar('id')) . '</li>'; |
||
680 | } |
||
681 | } |
||
682 | } |
||
683 | unset($savedSearches); |
||
684 | |||
685 | // Add ticket list table |
||
686 | set_time_limit(60); |
||
687 | $ret = $ret |
||
688 | && runQuery( |
||
689 | sprintf( |
||
690 | "CREATE TABLE %s (id INT(11) NOT NULL AUTO_INCREMENT, |
||
691 | uid INT(11) NOT NULL DEFAULT '0', |
||
692 | searchid INT(11) NOT NULL DEFAULT '0', |
||
693 | weight INT(11) NOT NULL DEFAULT '0', |
||
694 | PRIMARY KEY (id), |
||
695 | KEY ticketList (uid, searchid) |
||
696 | )ENGINE=MyISAM;", |
||
697 | $xoopsDB->prefix('xhelp_ticket_lists') |
||
698 | ), |
||
699 | sprintf(_AM_XHELP_MSG_ADDTABLE, 'xhelp_ticket_lists'), |
||
700 | sprintf(_AM_XHELP_MSG_ADDTABLE_ERR, 'xhelp_ticket_lists') |
||
701 | ); |
||
702 | |||
703 | // Add global ticket lists for staff members |
||
704 | Xhelp\Utility::createDefaultTicketLists(); |
||
705 | |||
706 | set_time_limit(60); |
||
707 | // Update xhelp_roles Admin record with new value (4095) |
||
708 | $criteria = new \Criteria('tasks', '2047'); |
||
709 | $adminRoles = $roleHandler->getObjects($criteria); |
||
710 | |||
711 | foreach ($adminRoles as $role) { |
||
712 | $role->setVar('tasks', 4095); |
||
713 | if ($roleHandler->insert($role)) { |
||
714 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_ROLE, $role->getVar('name')) . '</li>'; |
||
715 | } else { |
||
716 | echo '<li>' . sprintf(_AM_XHELP_MSG_UPDATE_ROLE_ERR, $role->getVar('name')) . '</li>'; |
||
717 | } |
||
718 | } |
||
719 | |||
720 | // no break |
||
721 | case '0.77': |
||
722 | // No schema changes for 0.78 |
||
723 | |||
724 | case '0.78': |
||
725 | echo '</ul>'; |
||
726 | break; |
||
727 | default: |
||
728 | throw new \RuntimeException('Unexpected value'); |
||
729 | } |
||
730 | |||
731 | $newversion = round($xoopsModule->getVar('version') / 100, 2); |
||
732 | //if successful, update xhelp_meta table with new ver |
||
733 | if ($ret) { |
||
734 | printf(_AM_XHELP_UPDATE_OK, $newversion); |
||
735 | $ret = Xhelp\Utility::setMeta('version', (string)$newversion); |
||
736 | } else { |
||
737 | printf(_AM_XHELP_UPDATE_ERR, $newversion); |
||
738 | } |
||
739 | |||
740 | require_once __DIR__ . '/admin_footer.php'; |
||
741 | } |
||
751 |