Fixed Zend OpCache related issues in extension modules installer.
[fa-stable.git] / admin / db / maintenance_db.inc
index 16434ecd163d46a2933014b4f6dd00797df62732..5c81bcc694e9af867a125ee33b20eb5f4d07e506 100644 (file)
@@ -86,7 +86,7 @@ function write_config_db($new = false)
        $msg .= "\$def_coy = " . $def_coy . ";\n\n";
        $msg .= "\$tb_pref_counter = " . $tb_pref_counter . ";\n\n";
        $msg .= "\$db_connections = " .var_export($db_connections, true);
-       $msg .= ";\n?>";
+       $msg .= ";\n";
 
        $filename = $path_to_root . "/config_db.php";
        // Check if the file exists and is writable first.
@@ -105,6 +105,7 @@ function write_config_db($new = false)
                        }
                        // Close file
                        fclose($zp);
+                       cache_invalidate($filename);
                }
        }
        else
@@ -142,7 +143,7 @@ function write_extensions($extensions=null, $company = -1)
 */\n\n";
 
        $msg .= "\$installed_extensions = ". var_export($extensions, true);
-       $msg .= ";\n?>";
+       $msg .= ";\n";
        $filename = $path_to_root . ($company==-1 ? '' : '/company/'.$company)
                .'/installed_extensions.php';
 
@@ -164,6 +165,7 @@ function write_extensions($extensions=null, $company = -1)
                }
                // Close file
                fclose($zp);
+               cache_invalidate($filename);
        }
        return true;
 }
@@ -221,7 +223,7 @@ function write_lang()
 
        $msg .= "\$installed_languages = " . var_export($installed_languages, true);
        $msg .= ";\n";
-       $msg .= "\n\$dflt_lang = '$dflt_lang';\n?>\n";
+       $msg .= "\n\$dflt_lang = '$dflt_lang';\n";
 
        $path = $path_to_root . "/lang";
        $filename = $path.'/installed_languages.inc';
@@ -243,6 +245,7 @@ function write_lang()
                        }
                        // Close file
                        fclose($zp);
+                       cache_invalidate($filename);
                }
        }
        else
@@ -263,9 +266,10 @@ function write_lang()
 */
 function db_import($filename, $connection, $force=true, $init=true, $protect=false, $return_errors=false)
 {
-       global $db, $go_debug, $sql_trail;
+       global $db, $SysPrefs;
 
-       $sql_trail = false;
+       $trail = $SysPrefs->sql_trail;
+       $SysPrefs->sql_trail = false;
 
        $allowed_commands = array(
                "create"  => 'table_queries', 
@@ -277,6 +281,8 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
                "drop table if exists" => 'drop_queries',
                "drop function if exists" => 'drop_queries',
                "drop trigger if exists" => 'drop_queries',
+               "select" => 'data_queries', 
+               "delete" => 'data_queries', 
                );
 
        $protected = array(
@@ -301,12 +307,19 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
 
        $old_encoding = db_get_charset($db);
 
-       ini_set("max_execution_time", "180");
+       ini_set("max_execution_time", max("180", ini_get("max_execution_time")));
        db_query("SET foreign_key_checks=0");
-       // uncrompress gziped backup files
+
+       if (isset($connection['collation']))
+               db_set_collation($db, $connection['collation']);
+
+       $check_line_len = false;
+
+       // uncompress gziped backup files
        if (strpos($filename, ".gz") || strpos($filename, ".GZ"))
-               $lines = db_ungzip("lines", $filename);
-       elseif (strpos($filename, ".zip") || strpos($filename, ".ZIP"))
+       {       $lines = db_ungzip("lines", $filename);
+               $check_line_len = true;
+       } elseif (strpos($filename, ".zip") || strpos($filename, ".ZIP"))
                $lines = db_unzip("lines", $filename);
        else
                $lines = file("". $filename);
@@ -317,8 +330,9 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
 
        foreach($lines as $line_no => $line)
        {
+               $gzfile_bug = $check_line_len && (strlen($line) == 8190); // there is a bug in php (at least 4.1.1-5.5.9) gzfile which limits line length to 8190 bytes!
+
                $line = trim($line);
-               
                if ($init)
                        $line = str_replace("0_", $connection["tbpref"], $line);
 
@@ -351,8 +365,7 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
                 if($query_table != '')  // inside allowed query
                 {
                        $table = $query_table;
-
-                       if (substr($line, -strlen($delimiter)) == $delimiter) // end of query found
+                       if (!$gzfile_bug && substr($line, -strlen($delimiter)) == $delimiter) // end of query found 
                        {
                                $line = substr($line, 0, strlen($line) - strlen($delimiter)); // strip delimiter
                                $query_table = '';
@@ -411,8 +424,8 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
 /*/
        if ($return_errors)
        {       // prevent errors display
-               $save_debug = $go_debug;
-               $go_debug = 0;
+               $save_debug = $SysPrefs->go_debug;
+               $SysPrefs->go_debug = 0;
        }
        // execute drop tables if exists queries
        if (is_array($drop_queries))
@@ -455,7 +468,9 @@ function db_import($filename, $connection, $force=true, $init=true, $protect=fal
        }
 
        if ($return_errors)
-               $go_debug = $save_debug;
+               $SysPrefs->go_debug = $save_debug;
+
+       $SysPrefs->sql_trail = $trail;
 
        db_query("SET foreign_key_checks=1");
        if ($delimiter != ';') db_query("delimiter ;"); // just for any case
@@ -528,16 +543,13 @@ function db_unzip($mode, $path)
        return explode("\n", $file_data);
 }
 
-function db_backup($conn, $ext='no', $comm='', $path=null)
+function db_backup($conn, $ext='no', $comm='', $path='')
 {
        if ($conn['tbpref'] != "")
                $filename = $conn['dbname'] . "_" . $conn['tbpref'] . date("Ymd_Hi") . ".sql";
        else
                $filename = $conn['dbname'] . "_" . date("Ymd_Hi") . ".sql";
 
-       if (!isset($path))
-               $path = BACKUP_PATH;
-
        return db_export($conn, $path . clean_file_name($filename), $ext, $comm);
 }
 //
@@ -546,7 +558,7 @@ function db_backup($conn, $ext='no', $comm='', $path=null)
 function db_export($conn, $filename, $zip='no', $comment='')
 {
 
-       global $app_title, $version, $power_url, $path_to_root;
+       global $SysPrefs, $version;
 
     $error = false;
     // set max string size before writing to file
@@ -570,8 +582,8 @@ function db_export($conn, $filename, $zip='no', $comment='')
     //create comment
     $out="# MySQL dump of database '".$conn["dbname"]."' on host '".$conn["host"]."'\n";
     $out.="# Backup Date and Time: ".date("Y-m-d H:i")."\n";
-    $out.="# Built by " . $app_title . " " . $version ."\n";
-    $out.="# ".$power_url."\n";
+    $out.="# Built by " . $SysPrefs->app_title . " " . $version ."\n";
+    $out.="# ".$SysPrefs->power_url."\n";
     $out.="# Company: ". @html_entity_decode($company, ENT_QUOTES, $_SESSION['language']->encoding)."\n";
     $out.="# User: ".$_SESSION["wa_current_user"]->name."\n\n";
     $out.="# Compatibility: ".get_company_pref('version_id')."\n\n";
@@ -807,7 +819,6 @@ function order_sql_tables($tables, $fks)
 // returns backup file name if name has changed (zip), else TRUE. If saving failed, return value is FALSE
 function save_to_file($path, $zip, $fileData)
 {
-       global $path_to_root;
 
        $backupfile = basename($path);
 
@@ -920,7 +931,7 @@ function save_to_file($path, $zip, $fileData)
 
 function create_comp_dirs($comp_path, $comp_subdirs)
 {
-               $index = "<?php\nheader(\"Location: ../index.php\");\n?>";
+               $index = "<?php\nheader(\"Location: ../index.php\");\n";
            $cdir = $comp_path;
            @mkdir($cdir);
                $f = @fopen("$cdir/index.php", "wb");
@@ -993,4 +1004,3 @@ function update_config_var($file, $variable, $value, $comment='')
 }
 
 
-?>
\ No newline at end of file