function perform_upgrade_step($HTTP_VARS, $opendb_release_r, $latest_to_version = NULL) { if (is_upgrader_plugin($HTTP_VARS['upgrader_plugin'])) { include_once './install/upgrade/' . $HTTP_VARS['upgrader_plugin'] . '.class.php'; $upgraderRef = $HTTP_VARS['upgrader_plugin']; $upgraderPlugin = new $upgraderRef(); if (!is_array($opendb_release_r) || !is_numeric($opendb_release_r['upgrade_step'])) { if ($latest_to_version == $upgraderPlugin->getToVersion()) { $to_version = $latest_to_version; } else { $to_version = $upgraderPlugin->getToVersion(); } $description = 'Upgrade from ' . $opendb_release_r['release_version'] . ' to ' . $to_version; // insert release record now. if (!is_exists_opendb_release_version($to_version)) { insert_opendb_release($to_version, $description, '0'); $opendb_release_r = fetch_opendb_release_version_r(FALSE); } } $upgrade_step = $opendb_release_r['upgrade_step']; // first step if ($upgrade_step == 0) { $upgrade_step = 1; } if (is_numeric($opendb_release_r['upgrade_step_part']) && $opendb_release_r['upgrade_step_part'] > 0) { $upgrade_step_part = $opendb_release_r['upgrade_step_part']; } else { $upgrade_step_part = 1; } $remaining_count = -1; if ($HTTP_VARS['confirm_step'] == $upgrade_step) { if ($upgraderPlugin->isStepSkippable($upgrade_step) && strcasecmp($HTTP_VARS['skipStep'], 'true') === 0) { $step_result = TRUE; } else { $step_result = $upgraderPlugin->executeStep($upgrade_step, $upgrade_step_part - 1); } if ($step_result === TRUE) { $upgrade_step += 1; $upgrade_step_part = 1; if ($upgrade_step <= $upgraderPlugin->getNoOfSteps()) { // complete step and move onto next one. update_opendb_release_step($opendb_release_r['release_version'], $upgrade_step); } else { // we have finished the installation process with this call update_opendb_release_step($opendb_release_r['release_version'], NULL); } } else { if (is_numeric($step_result)) { $upgrade_step_part += 1; update_opendb_release_step($opendb_release_r['release_version'], $upgrade_step, $upgrade_step_part); // specified number of steps to complete if ($step_result > 0) { $remaining_count = $step_result; } } } } if ($upgrade_step <= $upgraderPlugin->getNoOfSteps()) { echo "<h2>" . $opendb_release_r['description'] . "</h2>"; echo "\n<form action=\"{$PHP_SELF}\" method=\"GET\">" . "<input type=\"hidden\" name=\"step\" value=\"upgrade\">"; echo "<input type=\"hidden\" name=\"upgrader_plugin\" value=\"" . $HTTP_VARS['upgrader_plugin'] . "\">"; $step_title = $upgraderPlugin->getStepTitle($upgrade_step); $step_notes = NULL; if (is_numeric($upgrade_step_part) && $upgrade_step_part > 1) { if ($remaining_count > 0) { $step_title .= " (Part " . $upgrade_step_part . " of " . ($upgrade_step_part + $remaining_count) . ")"; } else { $step_title .= " (Part " . $upgrade_step_part . " of ?)"; $step_notes = "Due to limitations in the installer there are an unknown number of parts for this step, please continue\n\t\t\t\t\t\t\t\t\texecuting the step until it is complete."; } } echo "<h3>" . $step_title . "</h3>"; if (strlen($step_notes) > 0) { echo "<p class=\"help\">{$step_notes}</p>"; } if (is_array($upgraderPlugin->getErrors())) { echo format_error_block($upgraderPlugin->getErrors()); } $description = $upgraderPlugin->getStepDescription($upgrade_step); if (strlen($description) > 0) { echo '<p>' . $description . '</p>'; } echo "<input type=\"hidden\" name=\"confirm_step\" value=\"{$upgrade_step}\">\n\t\t\t<input type=\"button\" class=\"button\" name=\"execute\" value=\"Execute Step\" onclick=\"this.value='Working...'; this.disabled=true; this.form.submit(); return true;\">\n"; if ($upgraderPlugin->isStepSkippable($upgrade_step)) { echo "<input type=\"checkbox\" class=\"checkbox\" name=\"skipStep\" value=\"true\" onclick=\"if(this.checked){this.form['execute'].value='Skip Step';}else{this.form['execute'].value='Execute Step';}}\">Skip Step"; } echo "</form>"; return 'INCOMPLETE'; } else { //if($upgrade_step <= $upgraderPlugin->getNoOfSteps()) return TRUE; } } else { return FALSE; } }
/** Get the last record added to the database. @param $upgrade_steps_complete - if TRUE, then get last s_opendb_release record, where upgrade_step IS NULL */ function fetch_opendb_release_version($upgrade_steps_complete = TRUE) { $record_r = fetch_opendb_release_version_r($upgrade_steps_complete); if (is_array($record_r)) { return $record_r['release_version']; } else { return FALSE; } }