晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/www/crm/includes/runtime/ |
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 dirname(__FILE__).'/cache/Connector.php';
class Vtiger_Cache {
private static $selfInstance = false;
public static $cacheEnable = true;
protected $connector;
private function __construct() {
$this->connector = Vtiger_Cache_Connector::getInstance();
}
public static function getInstance(){
if(self::$selfInstance){
return self::$selfInstance;
} else{
self::$selfInstance = new self();
return self::$selfInstance;
}
}
public static function get($ns, $key) {
$self = self::getInstance();
if($key && self::$cacheEnable) {
return $self->connector->get($ns, $key);
}
return false;
}
public static function delete($ns, $key) {
$self = self::getInstance();
if ($key && self::$cacheEnable) {
$self->connector->delete($ns, $key);
}
}
public static function set($ns, $key, $value) {
$self = self::getInstance();
if(self::$cacheEnable) {
$self->connector->set($ns, $key, $value);
}
}
public static function flush(){
$self = self::getInstance();
$self->connector->flush();
}
private static $_user_list;
public function getUserList($module,$currentUser){
if(isset(self::$_user_list[$currentUser][$module])){
return self::$_user_list[$currentUser][$module];
}
return false;
}
public function setUserList($module,$userList,$currentUser){
if(self::$cacheEnable){
self::$_user_list[$currentUser][$module]=$userList;
}
}
private static $_group_list;
public function getGroupList($module,$currentUser){
if(isset(self::$_group_list[$currentUser][$module])){
return self::$_group_list[$currentUser][$module];
}
return false;
}
public function setGroupList($module,$GroupList,$currentUser){
if(self::$cacheEnable){
self::$_group_list[$currentUser][$module]=$GroupList;
}
}
public function getPicklistValues($fieldName){
if(self::get('PicklistValues',$fieldName)){
return self::get('PicklistValues',$fieldName);
}
return false;
}
public function setPicklistValues($fieldName,$values){
if(isset($values) && isset($fieldName)){
self::set('PicklistValues',$fieldName,$values);
}
}
public function getPicklistDetails($module,$field){
if(self::get('PicklistDetails',$field)){
return self::get('PicklistDetails',$field);
}
return false;
}
public function setPicklistDetails($module,$field,$picklistDetails){
if(isset($picklistDetails) && isset($field)){
self::set('PicklistDetails',$field,$picklistDetails);
}
}
private static $_module_ownedby;
public function getModuleOwned($module){
if(isset(self::$_module_ownedby[$module])){
return self::$_module_ownedby[$module];
}
return false;
}
public function setModuleOwned($module,$ownedby){
if(self::$cacheEnable){
self::$_module_ownedby[$module] = $ownedby;
}
}
public function getBlockInstance($block, $moduleName){
if(Vtiger_Cache::get('BlockInstance',$moduleName.'-'.$block)){
return Vtiger_Cache::get('BlockInstance',$moduleName.'-'.$block);
}
return false;
}
public function setBlockInstance($block, $moduleName, $instance){
if(isset($instance) && isset($block)){
Vtiger_Cache::set('BlockInstance',$moduleName.'-'.$block,$instance);
}
}
private static $_field_instance;
public function getFieldInstance($field,$moduleId){
if(isset(self::$_field_instance[$moduleId][$field])){
return self::$_field_instance[$moduleId][$field];
}
return false;
}
public function setFieldInstance($field,$moduleId,$instance){
if(self::$cacheEnable){
self::$_field_instance[$moduleId][$field] = $instance;
}
}
private static $_admin_user_id = false;
public function getAdminUserId(){
return self::$_admin_user_id;
}
public function setAdminUserId($userId){
if(self::$cacheEnable){
self::$_admin_user_id = $userId;
}
}
//cache for the module Instance
private static $_module_name = array();
public function getModuleName($moduleId){
if(isset(self::$_module_name[$moduleId])){
return self::$_module_name[$moduleId];
}
return false;
}
public function setModuleName($moduleId,$moduleName){
if(self::$cacheEnable){
self::$_module_name[$moduleId] = $moduleName;
}
}
//cache for the module Instance
private static $_workflow_for_module = array();
public function getWorkflowForModule($module){
if(isset(self::$_workflow_for_module[$module])){
return self::$_workflow_for_module[$module];
}
return false;
}
public function setWorkflowForModule($module,$workflows){
if(self::$cacheEnable){
self::$_workflow_for_module[$module] = $workflows;
}
}
//cache for the module Instance
private static $_workflow_for_module_supporting_comments = array();
public function getWorkflowForModuleSupportingComments($module){
if(isset(self::$_workflow_for_module_supporting_comments[$module])){
return self::$_workflow_for_module_supporting_comments[$module];
}
return false;
}
public function setWorkflowForModuleSupportingComments($module,$workflows){
if(self::$cacheEnable){
self::$_workflow_for_module_supporting_comments[$module] = $workflows;
}
}
//cache for the workflow, supporting product update from inventory
private static $_workflows_of_inventory_supporting_product_qty_update = array();
public function hasInventoryWorkflowsSupportingProductQtyUpdate($module) {
if(isset(self::$_workflows_of_inventory_supporting_product_qty_update[$module])) {
return true;
}
return false;
}
public function getInventoryWorkflowsSupportingProductQtyUpdate($module) {
return self::$_workflows_of_inventory_supporting_product_qty_update[$module];
}
public function setInventoryWorkflowsSupportingProductQtyUpdate($module, $workflows) {
if(self::$cacheEnable) {
self::$_workflows_of_inventory_supporting_product_qty_update[$module] = $workflows;
}
}
private static $_user_id ;
public function getUserId($userName){
if(isset(self::$_user_id[$userName])){
return self::$_user_id[$userName];
}
return false;
}
public function setUserId($userName,$userId){
if(self::$cacheEnable){
self::$_user_id[$userName] = $userId;
}
}
private static $_table_exists ;
public function getTableExists($tableName){
if(isset(self::$_table_exists[$tableName])){
return self::$_table_exists[$tableName];
}
return false;
}
public function setTableExists($tableName,$exists){
if(self::$cacheEnable){
self::$_table_exists[$tableName] = $exists;
}
}
private static $_picklist_id;
public function getPicklistId($fieldName,$moduleName){
if(isset(self::$_picklist_id[$moduleName][$fieldName])){
return self::$_picklist_id[$moduleName][$fieldName];
}
return false;
}
public function setPicklistId($fieldName,$moduleName,$picklistId){
if(self::$cacheEnable){
self::$_picklist_id[$moduleName][$fieldName] = $picklistId;
}
}
private static $_group_id;
public function getGroupId($groupName){
if(isset(self::$_group_id[$groupName])){
return self::$_group_id[$groupName];
}
return false;
}
public function setGroupId($groupName,$groupId){
if(self::$cacheEnable){
self::$_group_id[$groupName]=$groupId;
}
}
public function getAssignedPicklistValues($tableName,$roleId){
if(self::get('PicklistRoleBasedValues',$tableName.$roleId)){
return self::get('PicklistRoleBasedValues',$tableName.$roleId);
}
return false;
}
public function setAssignedPicklistValues($tableName,$roleId,$values){
if(isset($values)){
self::set('PicklistRoleBasedValues',$tableName.$roleId,$values);
}
}
public function hasAssignedPicklistValues($tableName, $roleId) {
$values = $this->getAssignedPicklistValues($tableName, $roleId);
return $values !== false;
}
public function getBlockFields($moduleName,$blockId){
if(Vtiger_Cache::get('BlockFields',$moduleName.'_'.$blockId)){
return Vtiger_Cache::get('BlockFields',$moduleName.'_'.$blockId);
}
return false;
}
public function setBlockFields($moduleName,$blockId,$fields){
Vtiger_Cache::set('BlockFields',$moduleName.'_'.$blockId,$fields);
}
private static $_name_fields;
public function getNameFields($module){
if(isset(self::$_name_fields[$module])){
return self::$_name_fields[$module];
}
return false;
}
public function setNameFields($module,$nameFields){
if(self::$cacheEnable){
self::$_name_fields[$module] = $nameFields;
}
}
public function purifyGet($key) {
if (self::$cacheEnable) {
return $this->connector->get('purify', $key);
}
return false;
}
public function purifySet($key, $value) {
if (self::$cacheEnable) {
$this->connector->set('purify', $key, $value);
}
}
private static $_owners_names_list;
public function getOwnerName($id){
if(isset(self::$_owners_names_list[$id])) {
return self::$_owners_names_list[$id];
}
return false;
}
public function setOwnerName($id, $value){
if(self::$cacheEnable){
self::$_owners_names_list[$id] = $value;
}
}
public function hasOwnerName($id) {
$value = $this->getOwnerName($id);
return $value !== false;
}
private static $_owners_db_names_list;
public function getOwnerDbName($id){
if(isset(self::$_owners_db_names_list[$id])) {
return self::$_owners_db_names_list[$id];
}
return false;
}
public function setOwnerDbName($id, $value){
if(self::$cacheEnable){
self::$_owners_db_names_list[$id] = $value;
}
}
public function hasOwnerDbName($id) {
$value = $this->getOwnerDbName($id);
return $value !== false;
}
private static $_creator_ids_list;
public function getCreator($id){
if(isset(self::$_creator_ids_list[$id])) {
return self::$_creator_ids_list[$id];
}
return false;
}
public function setCreator($id, $value){
if(self::$cacheEnable){
self::$_creator_ids_list[$id] = $value;
}
}
public function hasCreator($id) {
$value = $this->getCreator($id);
return $value !== false;
}
/**
* To clear module information from cache
* @param type $moduleName
*/
public static function flushModuleCache($moduleName) {
$module = Vtiger_Module_Model::getInstance($moduleName);
if (empty($module))
return;
Vtiger_Cache::delete('module', $moduleName);
Vtiger_Cache::delete('module', $module->id);
$moduleBlocks = $module->getBlocks();
foreach ($moduleBlocks as $label => $block) {
Vtiger_Cache::delete('BlockInstance', $module->id.'-'.$label);
Vtiger_Cache::delete('BlockInstance', $module->id.'-'.$block->id);
}
Vtiger_Cache::delete('ModuleFieldInfo', $moduleName);
Vtiger_Cache::delete('ModuleFieldInfo', $module->id);
Vtiger_Cache::delete('ModuleFields', $module->id);
Vtiger_Cache::delete('ModuleFields', $moduleName);
Vtiger_Cache::delete('ModuleBlocks', $moduleName);
Vtiger_Cache::delete('ModuleBlocks', $module->id);
}
/**
* Function to clear Picklist values from cache
* @param type $pickListName
* @param type $rolesList
*/
public static function flushPicklistCache($pickListName, $rolesList = false) {
Vtiger_Cache::delete('PicklistValues', $pickListName);
Vtiger_Cache::delete('EditablePicklistValues', $pickListName);
Vtiger_Cache::delete('NonEditablePicklistValues', $pickListName);
Vtiger_Cache::delete('AllPicklistValues', $pickListName);
Vtiger_Cache::delete('PicklistDetails', $pickListName);
if ($rolesList) {
foreach ($rolesList as $key => $roleId) {
Vtiger_Cache::delete('PicklistRoleBasedValues', $pickListName.$roleId);
}
}
}
/**
* Function to clear Module and Block Field data from cache
* @param type $module
* @param type $blockId
*/
public static function flushModuleandBlockFieldsCache($module, $blockId = false) {
Vtiger_Cache::delete('ModuleFieldInfo', $module->name);
Vtiger_Cache::delete('ModuleFields', $module->id);
if ($blockId) {
Vtiger_Cache::delete('BlockFields', $module->name.'_'.$blockId);
} else {
$blocks = $module->getBlocks();
foreach ($blocks as $label => $block) {
Vtiger_Cache::delete('BlockFields', $module->name.'_'.$block->id);
}
}
}
/**
* Function to clear module Block information from cache
* @param type $moduleInstance
* @param type $block
*/
static function flushModuleBlocksCache($moduleInstance, $block = null) {
if ($block == null) {
$moduleModel = Vtiger_Module_Model::getInstance($moduleInstance->name);
$moduleBlocks = $moduleModel->getBlocks();
Vtiger_Cache::delete('ModuleBlocks', $moduleInstance->id);
foreach ($moduleBlocks as $label => $block) {
Vtiger_Cache::delete('BlockInstance', $moduleInstance->id.'-'.$label);
Vtiger_Cache::delete('BlockInstance', $moduleInstance->id.'-'.$block->id);
Vtiger_Cache::delete('BlockFields', $moduleInstance->name.'_'.$block->label);
}
} else {
Vtiger_Cache::delete('ModuleBlocks', $moduleInstance->id);
Vtiger_Cache::delete('BlockInstance', $moduleInstance->id.'-'.$block->label);
Vtiger_Cache::delete('BlockInstance', $moduleInstance->id.'-'.$block->id);
Vtiger_Cache::delete('BlockFields', $moduleInstance->name.'_'.$block->id);
}
}
}