opensupports/version_upgrades/4.7.0/4.7.0.php

126 lines
4.6 KiB
PHP

<?php
require_once '../mysql_connect.php';
use RedBeanPHP\Facade as RedBean;
print 'Begin update v4.7.0...' . PHP_EOL;
// Update User table
print '[1/4] Updating user table...' . PHP_EOL;
if ($mysql->query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'user' AND COLUMN_NAME = 'not_registered' AND TABLE_SCHEMA = '$mysql_db'")->num_rows == 0) {
$mysql->query("ALTER TABLE user ADD not_registered tinyint(1)");
$mysql->query("UPDATE user SET not_registered = null ");
} else {
print '-not_registered column already exists' . PHP_EOL;
}
if(!Setting::getSetting('user-system-enabled')->isNull() && !Setting::getSetting('user-system-enabled')->getValue()) {
$ticketList = Ticket::getAll();
foreach($ticketList as $ticket) {
if($ticket->authorStaff) {
continue;
}
$userInstance = User::getDataStore($ticket->authorEmail, 'email');
$ticketInstance = Ticket::getByTicketNumber($ticket->ticketNumber);
if($userInstance->isNull()) {
$userInstance = new User();
$password = Hashing::generateRandomToken();
$userInstance->setProperties([
'name' => $ticket->authorName,
'signupDate' => Date::getCurrentDate(),
'tickets' => 0,
'email' => $ticket->authorEmail,
'password' => Hashing::hashPassword($password),
'notRegistered' => 1,
'verificationToken' => null
]);
$userInstance->store();
}
$userInstance->tickets = $userInstance->tickets + 1;
$userInstance->sharedTicketList->add($ticket);
$userInstance->store();
$ticketInstance->author = $userInstance;
$ticketInstance->store();
}
} else {
print '-The tickets created already have owner Users' . PHP_EOL;
}
// Update mailtemplate table
print '[2/4] Updating mailtemplate table...' . PHP_EOL;
if ($mysql->query("SELECT * FROM mailtemplate WHERE template='USER_SYSTEM_DISABLED' ")->num_rows != 0) {
$mysql->query("DELETE FROM mailtemplate WHERE template='USER_SYSTEM_DISABLED' ");
} else {
print '-user_system_disabled template is already deleted' . PHP_EOL;
}
if ($mysql->query("SELECT * FROM mailtemplate WHERE template='USER_SYSTEM_ENABLED' ")->num_rows != 0) {
$mysql->query("DELETE FROM mailtemplate WHERE template='USER_SYSTEM_ENABLED' ");
} else {
print '-user_system_enabled template is already deleted' . PHP_EOL;
}
// Update Department table
print '[3/4] Updating department table...' . PHP_EOL;
if ($mysql->query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'department' AND COLUMN_NAME = 'private' AND TABLE_SCHEMA = '$mysql_db'")->num_rows == 0) {
$mysql->query("ALTER TABLE department ADD private tinyint(1)");
$mysql->query("UPDATE department SET private = 0 ");
} else {
print 'private column already exists' . PHP_EOL;
}
// Update setting table
print '[4/4] Updating setting table...' . PHP_EOL;
if ($mysql->query("SELECT * FROM setting WHERE name='mandatory-login' ")->num_rows == 0) {
$userSystemEnabled = $mysql->query("SELECT * FROM setting WHERE name='user-system-enabled'");
if($userSystemEnabled->fetch_array(MYSQLI_ASSOC)['value']){
$mysql->query("INSERT into setting VALUES(NULL, 'mandatory-login', '1')");
}else{
$mysql->query("INSERT into setting VALUES(NULL, 'mandatory-login', '0')");
$mysql->query("UPDATE setting SET value=1 where name='registration'");
}
} else {
print '-Mandatory-login already exists' . PHP_EOL;
}
if ($mysql->query("SELECT * FROM setting WHERE name='default-department-id' ")->num_rows == 0) {
$publicDepartment = $mysql->query("SELECT * FROM department WHERE private= 0 OR private IS NULL");
if($publicDepartment->num_rows != 0){
$query = "INSERT into setting VALUES(NULL, 'default-department-id', ". $publicDepartment->fetch_array(MYSQLI_BOTH)['id'] . " )";
$mysql->query($query);
}else{
print '-Fail DEFAULT-DEPARTMENT-ID update. A public department is required';
}
} else {
print '-Default-department-id already exists' . PHP_EOL;
}
if ($mysql->query("SELECT * FROM setting WHERE name='default-is-locked' ")->num_rows == 0) {
$mysql->query("INSERT into setting VALUES(NULL, 'default-is-locked', '0')");
} else {
print '-Default-is-locked already exists' . PHP_EOL;
}
if ($mysql->query("SELECT * FROM setting WHERE name='user-system-enabled' ")->num_rows != 0) {
$mysql->query("DELETE FROM setting WHERE name='user-system-enabled' ");
} else {
print '-User-system-enabled is already deleted' . PHP_EOL;
}
print 'Update Completed!' . PHP_EOL;