晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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.1
* ("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.
* ***********************************************************************************/
require_once 'include/Webservices/Retrieve.php';
require_once 'include/Webservices/Create.php';
require_once 'include/Webservices/Delete.php';
require_once 'include/Webservices/DescribeObject.php';
require_once 'includes/Loader.php';
vimport('includes.runtime.Globals');
vimport('includes.runtime.BaseModel');
function vtws_convertPotential($entityvalues, $user) {
global $adb, $log;
if (empty($entityvalues['assignedTo'])) {
$entityvalues['assignedTo'] = vtws_getWebserviceEntityId('Users', $user->id);
}
if (empty($entityvalues['transferRelatedRecordsTo'])) {
$entityvalues['transferRelatedRecordsTo'] = 'Project';
}
$potentialObject = VtigerWebserviceObject::fromName($adb, 'Potentials');
$handlerPath = $potentialObject->getHandlerPath();
$handlerClass = $potentialObject->getHandlerClass();
require_once $handlerPath;
$potentialHandler = new $handlerClass($potentialObject, $user, $adb, $log);
$potentialInfo = vtws_retrieve($entityvalues['potentialId'], $user);
$sql = 'SELECT converted FROM vtiger_potential WHERE converted=1 AND potentialid=?';
$potentialIdComponents = vtws_getIdComponents($entityvalues['potentialId']);
$result = $adb->pquery($sql, array($potentialIdComponents[1]));
if ($result === false) {
throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, vtws_getWebserviceTranslatedString('LBL_'.WebServiceErrorCode::$DATABASEQUERYERROR));
}
$rowCount = $adb->num_rows($result);
if ($rowCount > 0) {
throw new WebServiceException(WebServiceErrorCode::$POTENTIAL_ALREADY_CONVERTED, 'Potential is already converted');
}
$entityIds = array();
$availableModules = array('Project');
if (!(($entityvalues['entities']['Project']['create']))) {
return null;
}
foreach ($availableModules as $entityName) {
if ($entityvalues['entities'][$entityName]['create']) {
$entityvalue = $entityvalues['entities'][$entityName];
$entityObject = VtigerWebserviceObject::fromName($adb, $entityvalue['name']);
$handlerPath = $entityObject->getHandlerPath();
$handlerClass = $entityObject->getHandlerClass();
require_once $handlerPath;
$entityHandler = new $handlerClass($entityObject, $user, $adb, $log);
$entityObjectValues = array();
$entityObjectValues['assigned_user_id'] = $entityvalues['assignedTo'];
$entityObjectValues = vtws_populateConvertPotentialEntities($entityvalue, $entityObjectValues, $entityHandler, $potentialHandler, $potentialInfo);
try {
$entityObjectValues['isconvertedfrompotential'] = 1;
$entityRecord = vtws_create($entityvalue['name'], $entityObjectValues, $user);
$entityIds[$entityName] = $entityRecord['id'];
} catch (DuplicateException $e) {
throw $e;
} catch (Exception $e) {
throw new WebServiceException(WebServiceErrorCode::$FAILED_TO_CREATE, $e->getMessage().' : '.$entityvalue['name']);
}
}
}
try {
vtws_convertPotentialTransferHandler($potentialIdComponents, $entityIds, $entityvalues);
vtws_updateConvertPotentialStatus($entityIds, $entityvalues['potentialId'], $user);
} catch (Exception $e) {
foreach ($entityIds as $entity => $id) {
vtws_delete($id, $user);
}
return null;
}
return $entityIds;
}
/*
* populate the entity fields with the Potential info.
* if mandatory field is not provided populate with '????'
* returns the entity array.
*/
function vtws_populateConvertPotentialEntities($entityvalue, $entity, $entityHandler, $potentialHandler, $potentialinfo) {
global $adb, $log;
$entityName = $entityvalue['name'];
$sql = 'SELECT * FROM vtiger_convertpotentialmapping';
$result = $adb->pquery($sql, array());
if ($adb->num_rows($result)) {
$column = 'potentialfid';
if ($entityName == 'Project') {
$column = 'projectfid';
}
$potentialFields = $potentialHandler->getMeta()->getModuleFields();
$entityFields = $entityHandler->getMeta()->getModuleFields();
$row = $adb->fetch_array($result);
$count = 1;
do {
$entityField = vtws_getFieldfromFieldId($row[$column], $entityFields);
if ($entityField == null) {
//user doesn't have access so continue.TODO update even if user doesn't have access
continue;
}
$potentialField = vtws_getFieldfromFieldId($row['potentialfid'], $potentialFields);
if ($potentialField == null) {
//user doesn't have access so continue.TODO update even if user doesn't have access
continue;
}
$potentialFieldName = $potentialField->getFieldName();
$entityFieldName = $entityField->getFieldName();
$entity[$entityFieldName] = $potentialinfo[$potentialFieldName];
$count++;
} while ($row = $adb->fetch_array($result));
foreach ($entityFields as $fieldName => $fieldModel) {
if (!empty($entityFields[$fieldName]) && $fieldModel->getDefault() && $fieldName != 'isconvertedfrompotential') {
if (!isset($entityvalue[$fieldName]) && empty($entity[$fieldName])) {
$entityvalue[$fieldName] = $fieldModel->getDefault();
}
}
}
foreach ($entityvalue as $fieldname => $fieldvalue) {
if (!empty($fieldvalue)) {
$entity[$fieldname] = $fieldvalue;
}
}
$entity['potentialid'] = $potentialinfo['id'];
$entity = vtws_validateConvertEntityMandatoryValues($entity, $entityHandler, $entityName);
}
return $entity;
}
/**
* function to handle the transferring of related records for Potential
* @param <Array> $potentialIdComponents - Exploded Webservice Id
* @param <Array> $entityIds - Converted Project Id
* @param <Array> $entityvalues - Mapped Potential and Project values
* @return <Boolean>
*/
function vtws_convertPotentialTransferHandler($potentialIdComponents, $entityIds, $entityvalues) {
try {
$entityidComponents = vtws_getIdComponents($entityIds[$entityvalues['transferRelatedRecordsTo']]);
vtws_transferPotentialRelatedRecords($potentialIdComponents[1], $entityidComponents[1], $entityvalues['transferRelatedRecordsTo']);
} catch (Exception $e) {
return false;
}
return true;
}
function vtws_updateConvertPotentialStatus($entityIds, $potentialId, $user) {
global $adb, $log;
$potentialIdComponents = vtws_getIdComponents($potentialId);
if ($entityIds['Project'] != '' || $entityIds['Contacts'] != '') {
$sql = 'UPDATE vtiger_potential SET converted=1 where potentialid=?';
$result = $adb->pquery($sql, array($potentialIdComponents[1]));
if ($result === false) {
throw new WebServiceException(WebServiceErrorCode::$FAILED_TO_MARK_POTENTIAL_CONVERTED, 'Failed mark potential converted');
}
//update the modifiedtime and modified by information for the record
$potentialModifiedTime = $adb->formatDate(date('Y-m-d H:i:s'), true);
$crmentityUpdateSql = 'UPDATE vtiger_crmentity SET modifiedtime=?, modifiedby=? WHERE crmid=?';
$adb->pquery($crmentityUpdateSql, array($potentialModifiedTime, $user->id, $potentialIdComponents[1]));
}
}