晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/modules/com_vtiger_workflow/tasks/ |
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.
************************************************************************************/
require_once('include/Webservices/Utils.php');
require_once("include/Webservices/VtigerCRMObject.php");
require_once("include/Webservices/VtigerCRMObjectMeta.php");
require_once("include/Webservices/DataTransform.php");
require_once("include/Webservices/WebServiceError.php");
require_once 'include/Webservices/ModuleTypes.php';
require_once('include/Webservices/Create.php');
require_once 'include/Webservices/DescribeObject.php';
require_once 'include/Webservices/WebserviceField.php';
require_once 'include/Webservices/EntityMeta.php';
require_once 'include/Webservices/VtigerWebserviceObject.php';
require_once("modules/Users/Users.php");
class VTCreateTodoTask extends VTTask{
public $executeImmediately = true;
public function getFieldNames(){return array('todo', 'description', 'sendNotification', 'time', 'date', 'status', 'priority', 'days', 'direction', 'datefield', 'sendNotification', 'assigned_user_id');}
function getAdmin(){
$user = Users::getActiveAdminUser();
global $current_user;
$this->originalUser = $current_user;
$current_user = $user;
return $user;
}
public function doTask($entityData){
$moduleName = 'Calendar';
if(!vtlib_isModuleActive($moduleName)) {
return;
}
global $adb, $current_user;
$userId = $entityData->get('assigned_user_id');
if($userId===null){
$userId = vtws_getWebserviceEntityId('Users', 1);
}
$baseDate = $entityData->get($this->datefield);
$dateTime = explode(' ', $baseDate);
if($dateTime[1]){
$userFormatDate = DateTimeField::convertToUserTimeZone($baseDate);
$baseDate = $userFormatDate->format('Y-m-d H:i:s');
$baseTime = $userFormatDate->format('H:i:s');
}
if($baseDate == '') {
$baseDate = date('Y-m-d H:i:s');
$userFormatDate = DateTimeField::convertToUserTimeZone($baseDate);
$baseDate = $userFormatDate->format('Y-m-d H:i:s');
}
$days = $this->days;
if($days == '') {
$days = '0';
}
preg_match('/\d\d\d\d-\d\d-\d\d/', $baseDate, $match);
$baseDate = strtotime($match[0]);
$date = strftime('%Y-%m-%d', $baseDate+$days*24*60*60*(strtolower($this->direction)=='before'?-1:1));
// Added to check if the user/group is active
if(!empty($this->assigned_user_id)) {
$userExists = $adb->pquery('SELECT 1 FROM vtiger_users WHERE id = ? AND status = ?', array($this->assigned_user_id, 'Active'));
if($adb->num_rows($userExists)) {
$assignedUserId = vtws_getWebserviceEntityId('Users', $this->assigned_user_id);
$userId = $assignedUserId;
} else {
$groupExist = $adb->pquery('SELECT 1 FROM vtiger_groups WHERE groupid = ?', array($this->assigned_user_id));
if($adb->num_rows($groupExist)) {
$assignedGroupId = vtws_getWebserviceEntityId('Groups', $this->assigned_user_id);
$userId = $assignedGroupId;
}
else{
if($this->assigned_user_id == 'copyParentOwner'){
$userId = $entityData->get('assigned_user_id');
}
}
}
}
if($this->time) {
$timeWithSec = Vtiger_Time_UIType::getTimeValueWithSeconds($this->time);
$dbInsertDateTime = DateTimeField::convertToDBTimeZone($date.' '.$timeWithSec);
$startDate = $dbInsertDateTime->format('Y-m-d');
$time = $dbInsertDateTime->format('H:i:s');
} else {
if($baseTime) {
$userTimeValue = $baseTime;
} else {
$time = date('H:i:s');
$userTime = DateTimeField::convertToUserTimeZone($time);
$userTimeValue = $userTime->format('H:i:s');
}
$dbInsertDateTime = DateTimeField::convertToDBTimeZone($date.' '.$userTimeValue);
$startDate = $dbInsertDateTime->format('Y-m-d');
$time = $dbInsertDateTime->format('H:i:s');
}
$fields = array(
'activitytype'=>'Task',
'description'=> decode_html($this->description),
'subject'=> decode_html($this->todo),
'taskpriority'=>$this->priority,
'taskstatus'=>$this->status,
'assigned_user_id'=>$userId,
'time_start'=> $time,
'sendnotification'=>($this->sendNotification!='' && $this->sendNotification!='N') ? true: false,
'date_start'=>$startDate,
'due_date'=>$date,
'visibility'=>'Private',
'eventstatus'=>''
);
$parentModuleName = $entityData->getModuleName();
$adminUser = $this->getAdmin();
$id = $entityData->getId();
if($parentModuleName=='Contacts'){
$fields['contact_id'] = $id;
}else{
$data = vtws_describe($moduleName, $adminUser);
$fieldInfo = $data['fields'];
foreach($fieldInfo as $field){
if($field['name']=='parent_id'){
$parentIdField = $field;
}
}
$refersTo = $parentIdField['type']['refersTo'];
if(in_array($parentModuleName, $refersTo)){
$fields['parent_id'] = $id;
}
}
$entityModuleHandler = vtws_getModuleHandlerFromName($moduleName, $current_user);
$handlerMeta = $entityModuleHandler->getMeta();
$mandatoryFields = $handlerMeta->getMandatoryFields();
$moduleFields = $handlerMeta->getModuleFields();
foreach ($moduleFields as $name => $fieldModel) {
if(!empty($fields[$name])) {
continue;
} else if(!empty($this->$name)) {
$fields[$name] = $this->$name;
}
}
foreach ($mandatoryFields as $fieldName) {
$fieldInstance = $moduleFields[$fieldName];
$fieldDataType = $fieldInstance->getFieldDataType();
if(!empty($fields[$fieldName])) {
continue;
} else {
$fieldValue = $this->$fieldName;
if(empty($fieldValue)) {
$defaultValue = $fieldInstance->getDefault();
$fieldValue = $defaultValue;
}
if(empty($fieldValue)) {
$fieldValue = Vtiger_Util_Helper::getDefaultMandatoryValue($fieldDataType);
if($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist') {
$picklistValues = $fieldInstance->getPickListOptions();
$fieldValue = $picklistValues[0]['label'];
}
}
$fields[$fieldName] = $fieldValue;
}
}
try {
$fields['source'] = 'WORKFLOW';
$todo = vtws_create($moduleName, $fields, $adminUser);
$todoIdDetails = vtws_getIdComponents($todo['id']);
$entityIdDetails = vtws_getIdComponents($id);
relateEntities(CRMEntity::getInstance($parentModuleName), $parentModuleName, $entityIdDetails[1], $moduleName, $todoIdDetails[1]);
} catch (DuplicateException $e) {
$workFlowManager = new VTWorkflowManager($adb);
$workFlow = $workFlowManager->retrieve($this->workflowId);
$mailBody = vtranslate('LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS', $moduleName, vtranslate('SINGLE_'.$moduleName, $moduleName),
decode_html($workFlow->workflowname), vtranslate('SINGLE_'.$moduleName, $moduleName));
sendMailToUserOnDuplicationPrevention($moduleName, $fields, $mailBody);
} catch (Exception $e) {
}
global $current_user;
$current_user = $this->originalUser;
}
static function conv12to24hour($timeStr){
$arr = array();
preg_match('/(\d{1,2}):(\d{1,2})(am|pm)/', $timeStr, $arr);
if($arr[3]=='am'){
$hours = ((int)$arr[1]) % 12;
}else{
$hours = ((int)$arr[1]) % 12 + 12;
}
return str_pad($hours, 2, '0', STR_PAD_LEFT).':'.str_pad($arr[2], 2, '0', STR_PAD_LEFT);
}
public function getTimeFieldList() {
return array('time');
}
}
?>