function upgrade() { global $thisstaff, $ost; if (!$thisstaff or !$thisstaff->isAdmin() or !$ost) { Http::response(403, 'Access Denied'); } $upgrader = new Upgrader(TABLE_PREFIX, UPGRADE_DIR . 'streams/'); if ($upgrader->isAborted()) { Http::response(416, __("We have a problem ... wait a sec.")); exit; } if ($upgrader->getTask() && $upgrader->doTask()) { //More pending tasks - doTasks returns the number of pending tasks Http::response(200, $upgrader->getNextAction()); exit; } elseif ($ost->isUpgradePending()) { if ($upgrader->isUpgradable()) { $version = $upgrader->getNextVersion(); if ($upgrader->upgrade()) { //We're simply reporting progress here - call back will report next action' Http::response(200, sprintf(__("Upgraded to %s ... post-upgrade checks!"), $version)); exit; } } else { //Abort: Upgrade pending but NOT upgradable - invalid or wrong hash. $upgrader->abort(sprintf(__('Upgrade Failed: Invalid or wrong hash [%s]'), $ost->getDBSignature())); } } elseif (!$ost->isUpgradePending()) { $upgrader->setState('done'); session_write_close(); Http::response(201, __("We're done!")); exit; } if ($upgrader->isAborted() || $upgrader->getErrors()) { Http::response(416, __("We have a problem ... wait a sec.")); exit; } Http::response(200, $upgrader->getNextAction()); }
case 'prereq': if (!$ost->isUpgradePending()) { $errors['err'] = __('Nothing to do! System already upgraded to the current version'); } elseif (!$upgrader->isUpgradable()) { $errors['err'] = __('The upgrader does NOT support upgrading from the current vesion!'); } elseif (!$upgrader->check_prereq()) { $errors['prereq'] = __('Minimum requirements not met! Refer to Release Notes for more information'); } elseif (!strcasecmp(basename(CONFIG_FILE), 'settings.php')) { $errors['err'] = __('Config file rename required to continue!'); } else { $upgrader->setState('upgrade'); } break; case 'upgrade': //Manual upgrade.... when JS (ajax) is not supported. if ($upgrader->getTask()) { $upgrader->doTask(); } elseif ($ost->isUpgradePending() && $upgrader->isUpgradable()) { $upgrader->upgrade(); } elseif (!$ost->isUpgradePending()) { $upgrader->setState('done'); } if ($errors = $upgrader->getErrors()) { $upgrader->setState('aborted'); } break; default: $errors['err'] = __('Unknown action'); } } switch (strtolower($upgrader->getState())) {