logArrayDiffs($temp, $pref, 'LANG_01')) { save_prefs(); // Only save if changes $emessage->add(LAN_SETSAVED, E_MESSAGE_SUCCESS); } else { $emessage->add(LAN_NO_CHANGE); } } // ----------------- delete tables --------------------------------------------- if (isset($_POST['del_existing']) && $_POST['lang_choices']) { $lang = strtolower($_POST['lang_choices']); foreach ($tabs as $del_table) { if (db_Table_exists($lang."_".$del_table)) { $qry = "DROP TABLE ".$mySQLprefix."lan_".$lang."_".$del_table; if (mysql_query($qry)) { $message .= sprintf(LANG_LAN_28, $_POST['lang_choices'].' '.$del_table).'[!br!]' ; $emessage->add(sprintf(LANG_LAN_28, $_POST['lang_choices'].' '.$del_table), E_MESSAGE_SUCCESS); } else { $message .= sprintf(LANG_LAN_29, $_POST['lang_choices'].' '.$del_table).'[!br!]'; $emessage->add(sprintf(LANG_LAN_29, $_POST['lang_choices'].' '.$del_table), E_MESSAGE_WARNING); } } } $admin_log->log_event('LANG_02', $message, E_LOG_INFORMATIVE, ''); global $cachevar; unset($cachevar['table_list']); if($action == 'modify') $action = 'db';//FIX - force db action when deleting all lan tables } // ----------create tables ----------------------------------------------------- if (isset($_POST['create_tables']) && $_POST['language']) { $table_to_copy = array(); $lang_to_create = array(); foreach ($tabs as $value) { $lang = strtolower($_POST['language']); if (isset($_POST[$value])) { $copdata = ($_POST['copydata_'.$value]) ? 1 : 0; if (copy_table($value, "lan_".$lang."_".$value, $_POST['drop'],$copdata)) { $message .= sprintf(LANG_LAN_30, $_POST['language'].' '.$value).'[!br!]'; $emessage->add(sprintf(LANG_LAN_30, $_POST['language'].' '.$value), E_MESSAGE_SUCCESS); } else { if(!$_POST['drop']) { $message .= sprintf(LANG_LAN_00, $_POST['language'].' '.$value).'[!br!]'; $emessage->add(sprintf(LANG_LAN_00, $_POST['language'].' '.$value), E_MESSAGE_WARNING); } else { $message .= sprintf(LANG_LAN_01, $_POST['language'].' '.$value).'[!br!]'; $emessage->add(sprintf(LANG_LAN_01, $_POST['language'].' '.$value), E_MESSAGE_WARNING); } } } elseif (db_Table_exists($lang."_".$value)) { if ($_POST['remove']) { // Remove table. if(mysql_query("DROP TABLE ".$mySQLprefix."lan_".$lang."_".$value)) { $message .= $_POST['language'].' '.$value.' '.LAN_DELETED.'[!br!]'; $emessage->add($_POST['language'].' '.$value.' '.LAN_DELETED, E_MESSAGE_SUCCESS); } else { $message .= sprintf(LANG_LAN_02, $_POST['language'].' '.$value).'[!br!]'; $emessage->add(sprintf(LANG_LAN_02, $_POST['language'].' '.$value), E_MESSAGE_WARNING); } } else { // leave table. LANG_LAN_32 $message .= sprintf(LANG_LAN_32, $_POST['language'].' '.$value).'[!br!]'; $emessage->add(sprintf(LANG_LAN_32, $_POST['language'].' '.$value)); } } } $admin_log->log_event('LANG_03', $message, E_LOG_INFORMATIVE, ''); global $cachevar; unset($cachevar['table_list']); } /* if(isset($message) && $message) { $ns->tablerender(LAN_OK, $message); } */ unset($text); if (!e_QUERY || $action == 'main' && !$_POST['language'] && !$_POST['edit_existing']) { multilang_prefs(); } if ($action == 'db') { multilang_db(); } if($_POST['ziplang'] && $_POST['language']) { $text = zip_up_lang($_POST['language']); $admin_log->log_event('LANG_04', $_POST['language'], E_LOG_INFORMATIVE, ''); //$ns -> tablerender(LANG_LAN_25, $text); $emessage->add(LANG_LAN_25.': '.$text); } if($action == "tools") { show_tools(); } //FIX - create or edit check if(isset($_POST['create_edit_existing'])) $_POST['edit_existing'] = true; // Grab Language configuration. --- if (isset($_POST['edit_existing'])) { //XXX - JS ok with the current functionality? $text .= "
"; $ns->tablerender($_POST['lang_choices'], $emessage->render().$text); } require_once(e_ADMIN."footer.php"); // --------------------------------------------------------------------------- function multilang_prefs() { global $e107, $pref, $lanlist, $emessage; $text = " "; $e107->ns->tablerender(LANG_LAN_PAGE_TITLE.' - '.LANG_LAN_13, $emessage->render().$text); // "Language Preferences"; } // ---------------------------------------------------------------------------- function db_Table_exists($table) { global $mySQLdefaultdb; $tables = getcachedvars("table_list"); if(!$tables) { $tablist = mysql_list_tables($mySQLdefaultdb); while($tmp = mysql_fetch_array($tablist)) { $tables[] = $tmp[0]; } cachevars("table_list", $tables); } return in_array(strtolower(MPREFIX."lan_".$table), $tables); } // ---------------------------------------------------------------------------- function copy_table($oldtable, $newtable, $drop = FALSE, $data = FALSE) { global $sql; $old = MPREFIX.strtolower($oldtable); $new = MPREFIX.strtolower($newtable); if($drop) { $sql->db_Select_gen("DROP TABLE IF EXISTS {$new}"); } //Get $old table structure $sql->db_Select_gen('SET SQL_QUOTE_SHOW_CREATE = 1'); $qry = "SHOW CREATE TABLE {$old}"; if($sql->db_Select_gen($qry)) { $row = $sql->db_Fetch(); $qry = $row[1]; $qry = str_replace($old, $new, $qry); } $result = mysql_query($qry); if(!$result) { return FALSE; } if ($data) //We need to copy the data too { $qry = "INSERT INTO {$new} SELECT * FROM {$old}"; $sql->db_Select_gen($qry); } return TRUE; } // ---------------------------------------------------------------------------- function table_list() { // grab default language lists. global $mySQLdefaultdb; $exclude[] = "banlist"; $exclude[] = "banner"; $exclude[] = "cache"; $exclude[] = "core"; $exclude[] = "online"; $exclude[] = "parser"; $exclude[] = "plugin"; $exclude[] = "user"; $exclude[] = "upload"; $exclude[] = "userclass_classes"; $exclude[] = "rbinary"; $exclude[] = "session"; $exclude[] = "tmp"; $exclude[] = "flood"; $exclude[] = "stat_info"; $exclude[] = "stat_last"; $exclude[] = "submit_news"; $exclude[] = "rate"; $exclude[] = "stat_counter";$exclude[] = "user_extended"; $exclude[] = "user_extended_struc"; $exclude[] = "pm_messages"; $exclude[] = "pm_blocks"; $tables = mysql_list_tables($mySQLdefaultdb); while (list($temp) = mysql_fetch_array($tables)) { if ((MPREFIX=='') ||(strpos($temp, MPREFIX) === 0)) { $e107tab = str_replace(MPREFIX, "", $temp); if (!in_array($e107tab, $exclude) && stristr($e107tab, "lan_") === FALSE) { $tabs[] = $e107tab; } } } return $tabs; } // ------------- render form --------------------------------------------------- function multilang_db(){ global $pref, $e107, $tp, $frm, $emessage, $lanlist, $tabs; if(isset($pref['multilanguage']) && $pref['multilanguage']){ // Choose Language to Edit: $text = " "; $e107->ns->tablerender(LANG_LAN_PAGE_TITLE.' - '.LANG_LAN_16, $emessage->render().$text); } } // ---------------------------------------------------------------------------- function show_tools() { global $e107, $emessage; include_lan(e_LANGUAGEDIR.e_LANGUAGE."/admin/lan_lancheck.php"); $text .= " "; $text .= " "; $e107->ns->tablerender(LANG_LAN_PAGE_TITLE.' - '.LANG_LAN_21, $emessage->render().$text); } // ---------------------------------------------------------------------------- function language_adminmenu() { global $action,$pref; if ($action == "") { $action = "main"; } if($action == "modify") { $action = "db"; } $var['main']['text'] = LAN_PREFS; $var['main']['link'] = e_SELF; if(isset($pref['multilanguage']) && $pref['multilanguage']) { $var['db']['text'] = LANG_LAN_03; $var['db']['link'] = e_SELF."?db"; } $lcnt = explode(",",e_LANLIST); if(count($lcnt) > 1) { $var['tools']['text'] = ADLAN_CL_6; $var['tools']['link'] = e_SELF."?tools"; } e_admin_menu(ADLAN_132, $action, $var); } // Zip up the language pack. // =================================================== function zip_up_lang($language) { if (is_readable(e_ADMIN."ver.php")) { include(e_ADMIN."ver.php"); } /* $core_plugins = array( "alt_auth","banner_menu","blogcalendar_menu","calendar_menu","chatbox_menu", "clock_menu","comment_menu","content","featurebox","forum","gsitemap", "links_page","linkwords","list_new","log","login_menu", "newforumposts_main","newsfeed","newsletter","online", "other_news_menu","pdf","pm","poll","rss_menu", "search_menu","siteinfo_menu","trackback","tree_menu","user_menu","userlanguage_menu", "usertheme_menu" ); $core_themes = array("crahan","e107v4a","human_condition","interfectus","jayya", "khatru","kubrick","lamb","leaf","newsroom","reline","sebes","vekna_blue"); */ require_once(e_HANDLER.'pclzip.lib.php'); list($ver,$tmp) = explode(" ",$e107info['e107_version']); $newfile = e_UPLOAD."e107_".$ver."_".$language."_utf8.zip"; $archive = new PclZip($newfile); $core = grab_lans(e_LANGUAGEDIR.$language."/",$language); $plugs = grab_lans(e_PLUGIN,$language); $theme = grab_lans(e_THEME,$language); $file = array_merge($core,$plugs,$theme); $data = implode(",",$file); if ($archive->create($data) == 0) { return $archive->errorInfo(true); } else { return LANG_LAN_22." (".str_replace("../","",e_UPLOAD)."".basename($newfile).")."; } } function grab_lans($path,$language,$filter = "") { require_once(e_HANDLER."file_class.php"); $fl = new e_file; if($lanlist = $fl->get_files($path,"", "standard",4)){ sort($lanlist); }else{ return; } $pzip = array(); foreach($lanlist as $p) { $fullpath = $p['path'].$p['fname']; if(strpos($fullpath,$language)!== FALSE) { $pzip[] = $fullpath; } } return $pzip; } /** * Handle page DOM within the page header * * @return string JS source */ function headerjs() { require_once(e_HANDLER.'js_helper.php'); $ret = " "; return $ret; } ?>