晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/vtlib/Vtiger/ |
Upload File : |
<?php
/*+**********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
************************************************************************************/
include_once('vtlib/Vtiger/Package.php');
/**
* Provides API to package vtiger CRM language files.
* @package vtlib
*/
class Vtiger_LanguageExport extends Vtiger_Package {
const TABLENAME = 'vtiger_language';
/**
* Constructor
*/
function __construct() {
parent::__construct();
}
/**
* Generate unique id for insertion
* @access private
*/
static function __getUniqueId() {
global $adb;
return $adb->getUniqueID(self::TABLENAME);
}
/**
* Initialize Export
* @access private
*/
function __initExport($languageCode, $moduleInstance = null) {
// Security check to ensure file is withing the web folder.
Vtiger_Utils::checkFileAccessForInclusion("languages/$languageCode/Vtiger.php");
$this->_export_modulexml_file = fopen($this->__getManifestFilePath(), 'w');
$this->__write("<?xml version='1.0'?>\n");
}
/**
* Export Module as a zip file.
* @param Vtiger_Module Instance of module
* @param Path Output directory path
* @param String Zipfilename to use
* @param Boolean True for sending the output as download
*/
function export($languageCode, $todir='', $zipfilename='', $directDownload=false) {
$this->__initExport($languageCode);
// Call language export function
$this->export_Language($languageCode);
$this->__finishExport();
// Export as Zip
if($zipfilename == '') $zipfilename = "$languageCode-" . date('YmdHis') . ".zip";
$zipfilename = "$this->_export_tmpdir/$zipfilename";
$zip = new Vtiger_Zip($zipfilename);
// Add manifest file
$zip->addFile($this->__getManifestFilePath(), "manifest.xml");
// Copy module directory
$zip->copyDirectoryFromDisk("languages/$languageCode", "modules");
$zip->save();
if($todir) {
copy($zipfilename, $todir);
}
if($directDownload) {
$zip->forceDownload($zipfilename);
unlink($zipfilename);
}
$this->__cleanupExport();
}
/**
* Export Language Handler
* @access private
*/
function export_Language($prefix) {
global $adb;
$sqlresult = $adb->pquery("SELECT * FROM vtiger_language WHERE prefix = ?", array($prefix));
$languageresultrow = $adb->fetch_array($sqlresult);
$langname = decode_html($languageresultrow['name']);
$langlabel = decode_html($languageresultrow['label']);
$this->openNode('module');
$this->outputNode(date('Y-m-d H:i:s'),'exporttime');
$this->outputNode($langname, 'name');
$this->outputNode($langlabel, 'label');
$this->outputNode($prefix, 'prefix');
$this->outputNode('language', 'type');
// Export dependency information
$this->export_Dependencies($moduleInstance);
$this->closeNode('module');
}
/**
* Export vtiger dependencies
* @access private
*/
function export_Dependencies($moduleInstance) {
global $vtiger_current_version, $adb;
$vtigerMinVersion = $vtiger_current_version;
$vtigerMaxVersion = false;
$this->openNode('dependencies');
$this->outputNode($vtigerMinVersion, 'vtiger_version');
if($vtigerMaxVersion !== false) $this->outputNode($vtigerMaxVersion, 'vtiger_max_version');
$this->closeNode('dependencies');
}
/**
* Initialize Language Schema
* @access private
*/
static function __initSchema() {
$hastable = Vtiger_Utils::CheckTable(self::TABLENAME);
if(!$hastable) {
Vtiger_Utils::CreateTable(
self::TABLENAME,
'(id INT NOT NULL PRIMARY KEY,
name VARCHAR(50), prefix VARCHAR(10), label VARCHAR(30), lastupdated DATETIME, sequence INT, isdefault INT(1), active INT(1))',
true
);
global $languages, $adb;
foreach($languages as $langkey=>$langlabel) {
$uniqueid = self::__getUniqueId();
$adb->pquery('INSERT INTO '.self::TABLENAME.'(id,name,prefix,label,lastupdated,active) VALUES(?,?,?,?,?,?)',
Array($uniqueid, $langlabel,$langkey,$langlabel,date('Y-m-d H:i:s',time()), 1));
}
}
}
/**
* Register language pack information.
*/
static function register($prefix, $label, $name='', $isdefault=false, $isactive=true, $overrideCore=false) {
self::__initSchema();
$prefix = trim($prefix);
// We will not allow registering core language unless forced
if(strtolower($prefix) == 'en_us' && $overrideCore == false) return;
$useisdefault = ($isdefault)? 1 : 0;
$useisactive = ($isactive)? 1 : 0;
global $adb;
$checkres = $adb->pquery('SELECT * FROM '.self::TABLENAME.' WHERE prefix=?', Array($prefix));
$datetime = date('Y-m-d H:i:s');
if($adb->num_rows($checkres)) {
$id = $adb->query_result($checkres, 0, 'id');
$adb->pquery('UPDATE '.self::TABLENAME.' set label=?, name=?, lastupdated=?, isdefault=?, active=? WHERE id=?',
Array($label, $name, $datetime, $useisdefault, $useisactive, $id));
} else {
$uniqueid = self::__getUniqueId();
$adb->pquery('INSERT INTO '.self::TABLENAME.' (id,name,prefix,label,lastupdated,isdefault,active) VALUES(?,?,?,?,?,?,?)',
Array($uniqueid, $name, $prefix, $label, $datetime, $useisdefault, $useisactive));
}
self::log("Registering Language $label [$prefix] ... DONE");
}
/**
* De-Register language pack information
* @param String Language prefix like (de_de) etc
*/
static function deregister($prefix) {
$prefix = trim($prefix);
// We will not allow deregistering core language
if(strtolower($prefix) == 'en_us') return;
self::__initSchema();
global $adb;
$checkres = $adb->pquery('DELETE FROM '.self::TABLENAME.' WHERE prefix=?', Array($prefix));
self::log("Deregistering Language $prefix ... DONE");
}
/**
* Get all the language information
* @param Boolean true to include in-active languages also, false (default)
*/
static function getAll($includeInActive=false) {
global $adb;
$hastable = Vtiger_Utils::CheckTable(self::TABLENAME);
$languageinfo = Array();
if($hastable) {
if($includeInActive) $result = $adb->pquery('SELECT * FROM '.self::TABLENAME, array());
else $result = $adb->pquery('SELECT * FROM '.self::TABLENAME . ' WHERE active=?', array(1));
for($index = 0; $index < $adb->num_rows($result); ++$index) {
$resultrow = $adb->fetch_array($result);
$prefix = $resultrow['prefix'];
$label = $resultrow['label'];
$languageinfo[$prefix] = $label;
}
} else {
global $languages;
foreach($languages as $prefix=>$label) {
$languageinfo[$prefix] = $label;
}
}
asort($languageinfo);
return $languageinfo;
}
}
?>