Ejemplo n.º 1
0
function apply_patch($f)
{
    global $TPL;
    static $files;
    // Should never attempt to apply the same patch twice.. in case
    // there are function declarations in the .php patches.
    if ($files[$f]) {
        return;
    }
    $files[$f] = true;
    $db = new db_alloc();
    $file = basename($f);
    $failed = false;
    $comments = array();
    // This is an important patch that converts money from 120.34 to 12034.
    // We MUST ensure that the user has a currency set before applying this patch.
    if ($file == "patch-00188-alla.sql") {
        if (!config::get_config_item('currency')) {
            alloc_error("No default currency is set! Login to alloc (ignore any errors, you may need to manually change the url to config/config.php after logging in) go to Setup -> Finance and select a Main Currency. And then click the 'Update Transactions That Have No Currency' button. Then return here and apply this patch (patch-188). IT IS REALLY IMPORTANT THAT YOU FOLLOW THESE INSTRUCTIONS as the storage format for monetary amounts has changed.", true);
        }
    }
    // Try for sql file
    if (strtolower(substr($file, -4)) == ".sql") {
        list($sql, $comments) = parse_sql_file($f);
        foreach ($sql as $query) {
            if (!$db->query($query)) {
                #$TPL["message"][] = "<b style=\"color:red\">Error:</b> ".$f."<br>".$db->get_error();
                $failed = true;
                alloc_error("<b style=\"color:red\">Error:</b> " . $f . "<br>" . $db->get_error());
            }
        }
        if (!$failed) {
            $TPL["message_good"][] = "Successfully Applied: " . $f;
        }
        // Try for php file
    } else {
        if (strtolower(substr($file, -4)) == ".php") {
            $str = execute_php_file("../patches/" . $file);
            if ($str && !defined("FORCE_PATCH_SUCCEED_" . $file)) {
                #$TPL["message"][] = "<b style=\"color:red\">Error:</b> ".$f."<br>".$str;
                $failed = true;
                ob_end_clean();
                alloc_error("<b style=\"color:red\">Error:</b> " . $f . "<br>" . $str);
            } else {
                $TPL["message_good"][] = "Successfully Applied: " . $f;
            }
        }
    }
    if (!$failed) {
        $q = prepare("INSERT INTO patchLog (patchName, patchDesc, patchDate) \n                  VALUES ('%s','%s','%s')", $file, implode(" ", $comments), date("Y-m-d H:i:s"));
        $db->query($q);
    }
}
     $is_version_5 = true;
 }
 $not_is_version_5 = !$is_version_5;
 $olc_charset = array();
 $dummy_array = array();
 $olc_tables = array();
 $olc_array = array();
 $olc_insert_array = array();
 $olc_keys_array = array();
 $error = parse_sql_file($olc_file_name, true, $olc_tables, $olc_array, $olc_insert_array, $dummy_array, $dummy_array, $olc_charset, $olc_default_charset, $olc_struct_lines, $olc_data_lines);
 if ($error === true) {
     $import_charset = array();
     $import_array = array();
     $import_array_search = array();
     $import_keys_array = array();
     $error = parse_sql_file($import_file_name, false, $olc_tables, $import_array, $olc_insert_array, $import_array_search, $import_keys_array, $import_charset, $import_default_charset, $import_struct_lines, $import_data_lines);
     if ($error === true) {
         //Loop thru all fields in the import-database, and check, if it is available in the OL-Commerce-database
         $collate_len = strlen(COLLATE);
         $last_table = EMPTY_STRING;
         $alter_table_add = EMPTY_STRING;
         $create_table = EMPTY_STRING;
         $sql0_create = EMPTY_STRING;
         $sql_drop_tables = NEW_LINE;
         $sql_drop_fields = $sql_drop_tables;
         for ($i = 0, $n = sizeof($import_array_search); $i < $n; $i++) {
             $element = $import_array_search[$i];
             $pos = strrpos($element, TILDE);
             $this_table = substr($element, 0, $pos);
             if ($this_table != $last_table) {
                 if ($last_table) {
Ejemplo n.º 3
0
function parse_patch_file($file)
{
    if (!is_readable($file)) {
        return;
    }
    if (substr($file, -4) == strtolower(".php")) {
        return parse_php_file($file);
    } else {
        if (substr($file, -4) == strtolower(".sql")) {
            return parse_sql_file($file);
        }
    }
}
Ejemplo n.º 4
0
 function restore($archivename)
 {
     global $TPL;
     $file = ATTACHMENTS_DIR . "backups" . DIRECTORY_SEPARATOR . "0" . DIRECTORY_SEPARATOR . $archivename;
     $archive = new PclZip($file);
     # Clear out the folder list
     foreach ($this->folders as $folder) {
         $this->empty_dir(ATTACHMENTS_DIR . $folder);
     }
     $archive->extract(ATTACHMENTS_DIR);
     list($sql, $commends) = parse_sql_file(ATTACHMENTS_DIR . "database.sql");
     $db = new db_alloc();
     foreach ($sql as $q) {
         if (!$db->query($q)) {
             $errors[] = "Error! (" . $db->get_error() . ").";
         }
     }
     is_array($errors) and alloc_error(implode("<br>", $errors));
     unlink(ATTACHMENTS_DIR . "database.sql");
     if (!count($errors)) {
         return true;
     }
 }