Helpdesk da PluGzOne, baseado no osTicket
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

96 lines
3.1 KiB

<?php
require_once INCLUDE_DIR.'class.upgrader.php';
class CliUpgrader extends Module {
var $prologue = "Upgrade an osTicket help desk";
var $options = array(
'summary' => array('-s', '--summary',
'action' => 'store_true',
'help' => 'Print an upgrade summary and exit'),
);
function run($args, $options) {
Bootstrap::connect();
// Pre-checks
global $ost;
$ost = osTicket::start();
$upgrader = $this->getUpgrader();
if ($options['summary']) {
$this->doSummary($upgrader);
}
else {
$this->upgrade($upgrader);
}
}
function getUpgrader() {
global $ost;
if (!$ost->isUpgradePending()) {
$this->fail('No upgrade is pending for this account');
}
$upgrader = new Upgrader(TABLE_PREFIX, UPGRADE_DIR.'streams/');
if (!$upgrader->isUpgradable()) {
$this->fail(__('The upgrader does NOT support upgrading from the current vesion!'));
}
elseif (!$upgrader->check_prereq()) {
$this->fail(__('Minimum requirements not met! Refer to Release Notes for more information'));
}
elseif (!strcasecmp(basename(CONFIG_FILE), 'settings.php')) {
$this->fail(__('Config file rename required to continue!'));
}
return $upgrader;
}
function upgrade($upgrader) {
global $ost, $cfg;
$cfg = $ost->getConfig();
while (true) {
// If there's anythin in the model cache (like a Staff
// object or something), ensure that changes to the database
// model won't cause crashes
ModelInstanceManager::flushCache();
if ($upgrader->getTask()) {
// More pending tasks - doTasks returns the number of pending tasks
$this->stdout->write("... {$upgrader->getNextAction()}\n");
$upgrader->doTask();
}
elseif ($ost->isUpgradePending()) {
if ($upgrader->isUpgradable()) {
$this->stdout->write("... {$upgrader->getNextVersion()}\n");
$upgrader->upgrade();
// Reload config to pull schema_signature changes
$cfg->load();
}
else {
$this->fail(sprintf(
__('Upgrade Failed: Invalid or wrong hash [%s]'),
$ost->getDBSignature()
));
}
}
elseif (!$ost->isUpgradePending()) {
$this->stdout->write("Yay! All finished!\n");
break;
}
}
}
function doSummary($upgrader) {
foreach ($upgrader->getPatches() as $p) {
$info = $upgrader->readPatchInfo($p);
$this->stdout->write(sprintf(
"%s :: %s (%s)\n", $info['version'], $info['title'],
substr($info['signature'], 0, 8)
));
}
}
}
Module::register('upgrade', 'CliUpgrader');