晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/include/Webservices/ |
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.
*************************************************************************************/
function setBuiltIn($json){
$json->useBuiltinEncoderDecoder = true;
}
class OperationManager{
private $format;
private $formatsData=array(
"json"=>array(
"includePath"=>"include/Zend/Json.php",
"class"=>"Zend_Json",
"encodeMethod"=>"encode",
"decodeMethod"=>"decode",
"postCreate"=>"setBuiltIn"
)
);
private $operationMeta = null;
private $formatObjects ;
private $inParamProcess ;
private $sessionManager;
private $pearDB;
private $operationName;
private $type;
private $handlerPath;
private $handlerMethod;
private $preLogin;
private $operationId;
private $operationParams;
function OperationManager($adb,$operationName,$format, $sessionManager){
$this->format = strtolower($format);
$this->sessionManager = $sessionManager;
$this->formatObjects = array();
foreach($this->formatsData as $frmt=>$frmtData){
require_once($frmtData["includePath"]);
$instance = new $frmtData["class"]();
$this->formatObjects[$frmt]["encode"] = array(&$instance,$frmtData["encodeMethod"]);
$this->formatObjects[$frmt]["decode"] = array(&$instance,$frmtData["decodeMethod"]);
if($frmtData["postCreate"]){
call_user_func($frmtData["postCreate"],$instance);
}
}
$this->pearDB = $adb;
$this->operationName = $operationName;
$this->inParamProcess = array();
$this->inParamProcess["encoded"] = &$this->formatObjects[$this->format]["decode"];
$this->fillOperationDetails($operationName);
}
function isPreLoginOperation(){
return $this->preLogin == 1;
}
private function fillOperationDetails($operationName){
$sql = "select * from vtiger_ws_operation where name=?";
$result = $this->pearDB->pquery($sql,array($operationName));
if($result){
$rowCount = $this->pearDB->num_rows($result);
if($rowCount > 0){
$row = $this->pearDB->query_result_rowdata($result,0);
$this->type = $row['type'];
$this->handlerMethod = $row['handler_method'];
$this->handlerPath = $row['handler_path'];
$this->preLogin = $row['prelogin'];
$this->operationName = $row['name'];
$this->operationId = $row['operationid'];
$this->fillOperationParameters();
return;
}
}
throw new WebServiceException(WebServiceErrorCode::$UNKNOWNOPERATION,"Unknown operation requested");
}
private function fillOperationParameters(){
$sql = "select * from vtiger_ws_operation_parameters where operationid=? order by sequence";
$result = $this->pearDB->pquery($sql,array($this->operationId));
$this->operationParams = array();
if($result){
$rowCount = $this->pearDB->num_rows($result);
if($rowCount > 0){
for ($i=0;$i<$rowCount;++$i){
$row = $this->pearDB->query_result_rowdata($result,$i);
array_push($this->operationParams,array($row['name']=>$row['type']));
}
}
}
}
public function getOperationInput(){
$type = strtolower($this->type);
switch($type){
case 'get': $input = &$_GET;
return $input;
case 'post': $input = &$_POST;
return $input;
default: $input = &$_REQUEST;
return $input;
}
}
function sanitizeOperation($input){
return $this->sanitizeInputForType($input);
}
function sanitizeInputForType($input){
$sanitizedInput = array();
foreach($this->operationParams as $ind=>$columnDetails){
foreach ($columnDetails as $columnName => $type) {
$sanitizedInput[$columnName] = $this->handleType($type,vtws_getParameter($input,$columnName));;
}
}
return $sanitizedInput;
}
function handleType($type,$value){
$result;
$value = stripslashes($value);
$type = strtolower($type);
if($this->inParamProcess[$type]){
$result = call_user_func($this->inParamProcess[$type],$value);
}else{
$result = $value;
}
return $result;
}
function runOperation($params,$user){
global $API_VERSION;
try{
$operation = strtolower($this->operationName);
if(!$this->preLogin){
$params[] = $user;
return call_user_func_array($this->handlerMethod,$params);
}else{
$userDetails = call_user_func_array($this->handlerMethod,$params);
if(is_array($userDetails)){
return $userDetails;
}else{
$this->sessionManager->set("authenticatedUserId", $userDetails->id);
global $adb;
$webserviceObject = VtigerWebserviceObject::fromName($adb,"Users");
$userId = vtws_getId($webserviceObject->getEntityId(),$userDetails->id);
$vtigerVersion = vtws_getVtigerVersion();
$resp = array("sessionName"=>$this->sessionManager->getSessionId(),"userId"=>$userId,"version"=>$API_VERSION,"vtigerVersion"=>$vtigerVersion);
return $resp;
}
}
} catch (DuplicateException $e) {
throw $e;
}catch(WebServiceException $e){
throw $e;
}catch(Exception $e){
throw new WebServiceException(WebServiceErrorCode::$INTERNALERROR,"Unknown Error while processing request");
}
}
function encode($param){
return call_user_func($this->formatObjects[$this->format]["encode"],$param);
}
function getOperationIncludes(){
$includes = array();
array_push($includes,$this->handlerPath);
return $includes;
}
}
?>