X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=admin%2Fdb%2Fmaintenance_db.inc;h=4c1c623d1164ab867169a32603dd26b0425266dd;hb=67ec1888ea14a50f6df62e0599e50d209e7b0c6c;hp=81fc0abc0f764f8c4d140a13ad3bca26ec65c17d;hpb=46c5f7a65a7659a44ae8254c63152074363d3987;p=fa-stable.git diff --git a/admin/db/maintenance_db.inc b/admin/db/maintenance_db.inc index 81fc0abc..4c1c623d 100644 --- a/admin/db/maintenance_db.inc +++ b/admin/db/maintenance_db.inc @@ -257,10 +257,14 @@ function db_import($filename, $connection, $force=true) $allowed_commands = array( "create" => 'table_queries', + "delimiter" => 'table_queries', "alter table" => 'table_queries', "insert" => 'data_queries', "update" => 'data_queries', - "drop table if exists" => 'drop_queries'); + "drop table if exists" => 'drop_queries', + "drop function if exists" => 'drop_queries', + "drop trigger if exists" => 'drop_queries', + ); $ignored_mysql_errors = array( //errors ignored in normal (non forced) mode '1022', // duplicate key '1050', // Table %s already exists @@ -286,6 +290,7 @@ function db_import($filename, $connection, $force=true) // parse input file $query_table = ''; + $delimiter = ';'; foreach($lines as $line_no => $line) { $line = trim($line); @@ -296,8 +301,13 @@ function db_import($filename, $connection, $force=true) { // check if line begins with one of allowed queries foreach($allowed_commands as $cmd => $table) { - if (strtolower(substr($line, 0, strlen($cmd))) == $cmd) +// if (strtolower(substr($line, 0, strlen($cmd))) == $cmd) + if (stripos($line, $cmd) === 0) { + if ($cmd == 'delimiter') { + $delimiter = trim(substr($line, 10)); + continue 2; + } $query_table = $table; ${$query_table}[] = array('', $line_no+1); break; @@ -307,9 +317,10 @@ function db_import($filename, $connection, $force=true) if($query_table != '') // inside allowed query { $table = $query_table; - if (substr($line, -1) == ';') // end of query found + + if (substr($line, -strlen($delimiter)) == $delimiter) // end of query found { - $line = substr($line, 0, strlen($line) - 1); // strip ';' + $line = substr($line, 0, strlen($line) - strlen($delimiter)); // strip delimiter $query_table = ''; } ${$table}[count(${$table}) - 1][0] .= $line . "\n"; @@ -367,6 +378,7 @@ function db_import($filename, $connection, $force=true) } db_query("SET foreign_key_checks=1"); + if ($delimiter != ';') db_query("delimiter ;"); // just for any case if (count($sql_errors)) { // display first failure message; the rest are probably derivative @@ -720,7 +732,7 @@ function save_to_file($backupfile, $zip, $fileData) $c_len = strlen($zdata); // dos time - $timearray = getdate($zip); + $timearray = getdate(); $dostime = (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); $dtime = dechex($dostime);