Пример #1
0
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;
    }
}
Пример #2
0
/**
	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;
    }
}