⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 translation.str_mgmt.php

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PHP
字号:
<?php/** * File translation.str_mgmt.php * * Additional functions for Translation class * * Functions allowing user to create the new language, translation for specific * strings and full management of the languages database. * * @author Wojciech Zieli駍ki <voyteck@caffe.com.pl> * @author Lorenzo Alberton   <l dot alberton at quipo dot it> * @version 1.3 * @access public * @package Translation *//** * require PEAR::DB */require_once 'DB.php';/** * helper method */function setDefaultTableDefinitions($LangID, $CustomTables){    //set defaults	$TableDefinitions = array(        'langsavail' => array(            'name'      => 'tr_langsavail',            'lang_id'   => 'lang_id',	        'lang_name' => 'name',	        'metatags'  => 'metatags',	        'errortext' => 'errortext'        ),        'strings_'.$LangID => array(            'name'      => 'strings_'.$LangID,            'page_id'   => 'page_id',            'string_id' => 'string_id',            'string'    => 'string'        )    );    if (is_array($CustomTables['langsavail'])) {	    $TableDefinitions['langsavail']['name']      = isset($CustomTables['langsavail']['name'])      ? $CustomTables['langsavail']['name']      : 'tr_langsavail';		$TableDefinitions['langsavail']['lang_id']   = isset($CustomTables['langsavail']['lang_id'])   ? $CustomTables['langsavail']['lang_id']   : 'lang_id';		$TableDefinitions['langsavail']['lang_name'] = isset($CustomTables['langsavail']['lang_name']) ? $CustomTables['langsavail']['lang_name'] : 'lang_name';		$TableDefinitions['langsavail']['metatags']  = isset($CustomTables['langsavail']['metatags'])  ? $CustomTables['langsavail']['metatags']  : 'metatags';		$TableDefinitions['langsavail']['errortext'] = isset($CustomTables['langsavail']['errortext']) ? $CustomTables['langsavail']['errortext'] : 'errortext';	} elseif (!empty($CustomTables['langsavail'])) {		$TableDefinitions['langsavail']['name'] = $CustomTables['langsavail'];    }    if (is_array($CustomTables['strings_'.$LangID])) {	    $TableDefinitions['strings_'.$LangID]['name']      = isset($CustomTables['strings_'.$LangID]['name'])      ? $CustomTables['strings_'.$LangID]['name']      : 'strings_'.$LangID;		$TableDefinitions['strings_'.$LangID]['page_id']   = isset($CustomTables['strings_'.$LangID]['page_id'])   ? $CustomTables['strings_'.$LangID]['page_id']   : 'page_id';		$TableDefinitions['strings_'.$LangID]['string_id'] = isset($CustomTables['strings_'.$LangID]['string_id']) ? $CustomTables['strings_'.$LangID]['string_id'] : 'string_id';		$TableDefinitions['strings_'.$LangID]['string']    = isset($CustomTables['strings_'.$LangID]['string'])    ? $CustomTables['strings_'.$LangID]['string']    : 'string';    } elseif (!empty($CustomTables['strings_'.$LangID])) {	    $TableDefinitions['strings_'.$LangID]['name'] = $CustomTables['strings_'.$LangID];    }    return $TableDefinitions;}/** * New language creation * * Creates new language in the system. * Creates lang entry in the languages table and the table for language strings. * If other langs have been created before and their tables were filled with * strings, function addTranslation should be executed for each of the added * strings just after calling this function and before using the Translation class * for any purpose. * * @param string $LangID   Language identifier * @param string $LangName Language name - store the language name of the lang, *                         possibly in the language described. This name can be later *                         retrieved by calling getLangName and getOtherLangs methods *                         and used for hyperlinks changing the site language. * @param string $METATags Tags that may describe the language codepage etc. *                         These tags can be retrieved by calling getMetaTags method. * @param string $pear_DSN PEAR DSN string for database connection * @param array  $CustomTables Custom table definitions * @return mixed Return 1 if everything went OK, a PEAR::DB_Error object if not. */function createNewLang($LangID, $LangName, $METATags, $pear_DSN, $CustomTables=0){	$TableDefinitions = setDefaultTableDefinitions($LangID, $CustomTables);	$db = DB::connect($pear_DSN);	if (DB::isError($db)) {		return $db;	}	$query = sprintf('INSERT INTO %s (%s, %s, %s) VALUES ("%s", "%s", "%s")',	                $TableDefinitions['langsavail']['name'],	                $TableDefinitions['langsavail']['lang_id'],	                $TableDefinitions['langsavail']['lang_name'],	                $TableDefinitions['langsavail']['metatags'],	                addslashes($LangID),	                addslashes($LangName),	                addslashes($METATags)    );	$result = $db->query($query);	if (DB::isError($result)) {		return $result;	}	//check if the table already exists	$exists = false;    $res = $db->query('SHOW TABLES');	if (DB::isError($res)) {	    return $res;	}	while ($row = $res->fetchRow()) {		if ($row[0] == 'tr_strings_'.$LangID) {		    $exists = true;		    break;		}	}	if (!$exists) {    	$query = 'CREATE TABLE '. $TableDefinitions['strings_'.$LangID]['name'] .'('    			. $TableDefinitions['strings_'.$LangID]['page_id']  .' VARCHAR(16) default NULL, '    			. $TableDefinitions['strings_'.$LangID]['string_id'].' VARCHAR(32) NOT NULL, '   			    . $TableDefinitions['strings_'.$LangID]['string']   .' TEXT, '    			.'UNIQUE KEY page_id ('.$TableDefinitions['strings_'.$LangID]['page_id'].', '    			                       .$TableDefinitions['strings_'.$LangID]['string_id'].'))';        $result = $db->query($query);    	if (DB::isError($result)) {    		$query = sprintf('DELETE FROM %s WHERE %s="%s"',                            $TableDefinitions['langsavail']['name'],	                        $TableDefinitions['langsavail']['lang_id'],	                        addslashes($LangID)	                 );    		$delresult = $db->query($query);    		return $result;    	}	}	return 1;}/** * Language removal * * Removes language from system. * This function should be used carefully - it will permanently remove all the * strings that has been added to the language table by dropping this table. * If other langs are stored in the table, then only this lang column will be dropped. * * @param string  $LangID       Language identifier * @param string  $pear_DSN     PEAR DSN string for database connection * @param array   $CustomTables Custom table definitions * @param boolean $force        If true, the table is dropped without checks * @return mixed  Return 1 if everything went OK, a PEAR::DB_Error object if not. */function removeLang($LangID, $pear_DSN, $CustomTables=0, $force=false){	$db = DB::connect($pear_DSN);	if (DB::isError($db)) {		return $db;	}	$TableDefinitions = setDefaultTableDefinitions($LangID, $CustomTables);	if (!$force) {    	//check if other langs are stored in this table    	//'DESCRIBE' == 'SHOW COLUMNS FROM'    	$res = $db->query('DESCRIBE '.$TableDefinitions['strings_'.$LangID]['name']);    	if (DB::isError($res)) {    	    return $res;    	}    	if ($res->numRows() > 3) {            $query = 'ALTER TABLE '. $TableDefinitions['strings_'.$LangID]['name']                   .' DROP COLUMN '. $TableDefinitions['strings_'.$LangID]['string'];            $res = $db->query('DESCRIBE '.$TableDefinitions['strings_'.$LangID]['name']);    	    if (DB::isError($res)) {    	        return $res;    	    }    	    return 1;    	}    }	$result = $db->query('DROP TABLE '.$TableDefinitions['strings_'.$LangID]['name']);	if (DB::isError($result)) {		return $result;	}	$query = sprintf('DELETE FROM %s WHERE %s="%s"',	                $TableDefinitions['langsavail']['name'],	                $TableDefinitions['langsavail']['lang_id'],	                $LangID);	$result = $db->query($query);	if (DB::isError($result)) {		return $result;	}	return 1;}/** * Translation adding * Adds string to one or more language tables. * * @param string $PageID   page identifier. Might be "" if the string is to be *                         available from any page, independendly from translation *                         object creation parameters. * @param string $StringID string identifier. Must be unique for the same PageID *                         and strings that were created without PageID's. *                         This rule must be respected to prevent ambiguities. * @param array  $String   array of strings - the array keys should be languages id's, *                         the values - the sttrings in these languages - e.g.: *                         ("en"->"English text", "pl"->"Tekst polski", ...) * @param string $pear_DSN PEAR DSN string for database connection * @param array  $CustomTables Custom table definitions * @return mixed Return 1 if everything went OK, a PEAR::DB_Error object if not. */function addTranslation($PageID, $StringID, $String, $pear_DSN, $CustomTables=0){	$db = DB::connect($pear_DSN);	if (DB::isError($db)) {		return $db;	}    $TableDefinitions = array();    $langs = array_keys($String);    foreach ($langs as $aLang) {	    $TableDefinitions = array_merge_recursive(	        $TableDefinitions,	        setDefaultTableDefinitions($aLang, $CustomTables)        );    }	foreach ($String as $LangID => $Text) {		$data[] = array($TableDefinitions['strings_'.$LangID]['name'], $Text);	}	$query = sprintf('INSERT INTO ! (%s, %s, %s) VALUES ("%s", "%s", ?)',	                $TableDefinitions['strings_'.$LangID]['page_id'],    			    $TableDefinitions['strings_'.$LangID]['string_id'],   			        $TableDefinitions['strings_'.$LangID]['string'],   			        addslashes($PageID),   			        addslashes($StringID)             );	$result = $db->executeMultiple(($db->prepare($query)), $data);	if (DB::isError($result)) {		return $result;	}	return 1;}/** * Translation removal * * Removes string from all of string tables * @param string $PageID   page identifier. * @param string $StringID string identifier.* @param string $pear_DSN PEAR DSN string for database connection * @param array  $CustomTables Custom table definitions * @return mixed Return 1 if everything went OK, a PEAR::DB_Error object if not. */function removeTranslation($PageID, $StringID, $pear_DSN, $CustomTables=0){	$db = DB::connect($pear_DSN);	if (DB::isError($db)) {		return $db;	}	$result = $db->query('SELECT '. $TableDefinitions['langsavail']['lang_id']	                     .' FROM '. $TableDefinitions['langsavail']['name']);	if (DB::isError($result)) {		return $result;	}	while ($row = $result->fetchRow()) {		$languages[] = $row[0];	}	$TableDefinitions = array();	foreach ($langs as $LangID) {	    $TableDefinitions = array_merge_recursive(	        $TableDefinitions,	        setDefaultTableDefinitions($LangID, $CustomTables)        );        $query = sprintf('DELETE FROM %s WHERE %s="%s" AND %s="%s"',                        $TableDefinitions['strings_'.$LangID]['name'],                        $TableDefinitions['strings_'.$LangID]['page_id'],                        addslashes($PageID),                        $TableDefinitions['strings_'.$LangID]['string_id'],                        addslashes($StringID)                 );        $result = $db->query($query);        if (DB::isError($result)) {            return $result;        }	}	return 1;}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -