diff -r c15fbf197a54 -r ecbfb747743e includes/lang.php --- a/includes/lang.php Sat Mar 29 15:58:59 2008 -0700 +++ b/includes/lang.php Sun Mar 30 07:24:48 2008 -0700 @@ -307,9 +307,10 @@ /** * Imports a JSON-format language file into the database and merges with current strings. * @param string Path to the JSON file to load + * @param bool Enable debugging output, makes the process over CLI more interesting */ - function import($file) + function import($file, $debug = false) { global $db, $session, $paths, $template, $plugins; // Common objects @@ -319,11 +320,17 @@ if ( $this->lang_id == 0 ) $db->_die('lang.php - BUG: trying to perform import when $lang->lang_id == 0'); + if ( $debug ) + echo "Importing file: $file\n Checking file...\n"; + $contents = trim(@file_get_contents($file)); if ( empty($contents) ) $db->_die('lang.php - can\'t load the contents of the language file'); + if ( $debug ) + echo " Cleaning up JSON\n"; + // Trim off all text before and after the starting and ending braces $contents = preg_replace('/^([^{]+)\{/', '{', $contents); $contents = preg_replace('/\}([^}]+)$/', '}', $contents); @@ -331,6 +338,9 @@ // Correct syntax to be nice to the json parser $contents = enano_clean_json($contents); + if ( $debug ) + echo " Decoding JSON stream\n"; + try { $langdata = enano_json_decode($contents); @@ -346,7 +356,10 @@ $db->_die('lang.php - invalid or non-well-formed language file'); } - return $this->import_array($langdata); + if ( $debug ) + echo " Starting string import\n"; + + return $this->import_array($langdata, $debug); } /** @@ -417,10 +430,11 @@ /** * Performs the actual import of string data. * @param array Parsed JSON object, should be in the form of an array + * @param bool Enable debugging output * @access private */ - protected function import_array($langdata) + protected function import_array($langdata, $debug = false) { global $db, $session, $paths, $template, $plugins; // Common objects @@ -434,6 +448,11 @@ { if ( isset($langdata['strings'][$category]) ) { + if ( $debug ) + { + $desc = ( isset($langdata['strings']['meta'][$category]) ) ? $langdata['strings']['meta'][$category] : $this->get("meta_$category"); + echo " Indexing category: $category ({$desc})\n"; + } foreach ( $langdata['strings'][$category] as $string_name => $string_value ) { $string_name = $db->escape($string_name); @@ -445,6 +464,11 @@ } } + if ( $debug ) + { + echo " Running deletion of old strings..."; + $start = microtime_float(); + } $delete_list = implode(" OR\n ", $delete_list); if ( !empty($delete_list) ) @@ -460,8 +484,19 @@ $db->_die('lang.php - couldn\'t kill off them old strings'); } + if ( $debug ) + { + $time = round(microtime_float() - $start, 5); + echo "({$time}s)\n"; + } + if ( !empty($insert_list) ) { + if ( $debug ) + { + echo " Inserting strings..."; + $start = microtime_float(); + } $insert_list = implode(",\n ", $insert_list); $sql = "INSERT INTO " . table_prefix . "language_strings(lang_id, string_category, string_name, string_content) VALUES\n $insert_list;"; @@ -472,10 +507,18 @@ $q = $db->sql_query($sql); if ( !$q ) $db->_die('lang.php - couldn\'t insert strings in import()'); + + if ( $debug ) + { + $time = round(microtime_float() - $start, 5); + echo "({$time}s)\n"; + } } // YAY! done! // This will regenerate the cache file if possible. + if ( $debug ) + echo " Regenerating cache file\n"; $this->regen_caches(); }