晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/Settings/Picklist/actions/ |
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.
************************************************************************************/
class Settings_Picklist_SaveAjax_Action extends Settings_Vtiger_Basic_Action {
function __construct() {
$this->exposeMethod('add');
$this->exposeMethod('rename');
$this->exposeMethod('remove');
$this->exposeMethod('assignValueToRole');
$this->exposeMethod('saveOrder');
$this->exposeMethod('enableOrDisable');
$this->exposeMethod('edit');
}
public function process(Vtiger_Request $request) {
$mode = $request->get('mode');
$this->invokeExposedMethod($mode, $request);
}
/*
* @function updates user tables with new picklist value for default event and status fields
*/
public function updateDefaultPicklistValues($pickListFieldName,$oldValue,$newValue) {
// No change in value - likely a color change.
if ($oldValue == $newValue) {
return;
}
$db = PearDatabase::getInstance();
if($pickListFieldName == 'activitytype')
$defaultFieldName = 'defaultactivitytype';
else
$defaultFieldName = 'defaulteventstatus';
$queryToGetId = 'SELECT id FROM vtiger_users WHERE '.$defaultFieldName.' IN (';
if(is_array($oldValue)) {
for($i=0;$i<count($oldValue);$i++) {
$queryToGetId .= '"'.$oldValue[$i].'"';
if($i<(count($oldValue)-1)) {
$queryToGetId .= ',';
}
}
$queryToGetId .= ')';
}
else {
$queryToGetId .= '"'.$oldValue.'")';
}
$result = $db->pquery($queryToGetId, array());
$rowCount = $db->num_rows($result);
for($i=0; $i<$rowCount; $i++) {
$recordId = $db->query_result_rowdata($result, $i);
$recordId = $recordId['id'];
$record = Vtiger_Record_Model::getInstanceById($recordId, 'Users');
$record->set('mode','edit');
$record->set($defaultFieldName,$newValue);
$record->save();
}
}
public function add(Vtiger_Request $request) {
$newValues = $request->getRaw('newValue');
$pickListName = $request->get('picklistName');
$moduleName = $request->get('source_module');
$selectedColor = $request->get('selectedColor');
$moduleModel = Settings_Picklist_Module_Model::getInstance($moduleName);
$fieldModel = Settings_Picklist_Field_Model::getInstance($pickListName, $moduleModel);
$rolesSelected = array();
if($fieldModel->isRoleBased()) {
$userSelectedRoles = $request->get('rolesSelected',array());
//selected all roles option
if(in_array('all',$userSelectedRoles)) {
$roleRecordList = Settings_Roles_Record_Model::getAll();
foreach($roleRecordList as $roleRecord) {
$rolesSelected[] = $roleRecord->getId();
}
}else{
$rolesSelected = $userSelectedRoles;
}
}
$response = new Vtiger_Response();
try{
$newValuesArray = explode(',', $newValues);
$result = array();
foreach($newValuesArray as $i => $newValue) {
$id = $moduleModel->addPickListValues($fieldModel, trim($newValue), $rolesSelected, $selectedColor);
$result['id'.$i] = $id['id'];
}
$moduleModel->handleLabels($moduleName, $newValuesArray, array(), 'add');
$response->setResult($result);
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function rename(Vtiger_Request $request) {
$moduleName = $request->get('source_module');
$newValue = $request->getRaw('newValue');
$pickListFieldName = $request->get('picklistName');
// we should clear cache to update with latest values
$rolesList = $request->get('rolesList');
$color = $request->get('selectedColor');
$oldValue = $request->getRaw('oldValue');
$id = $request->getRaw('id');
if($moduleName == 'Events' && ($pickListFieldName == 'activitytype' || $pickListFieldName == 'eventstatus')) {
$this->updateDefaultPicklistValues($pickListFieldName,$oldValue,$newValue);
}
$moduleModel = new Settings_Picklist_Module_Model();
$response = new Vtiger_Response();
try{
$status = $moduleModel->renamePickListValues($pickListFieldName, $oldValue, $newValue, $moduleName, $id, $rolesList, $color);
$moduleModel->handleLabels($moduleName,$newValue,$oldValue,'rename');
$response->setResult(array('success',$status));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function remove(Vtiger_Request $request) {
$moduleName = $request->get('source_module');
$valueToDelete = $request->getRaw('delete_value');
$replaceValue = $request->getRaw('replace_value');
$pickListFieldName = $request->get('picklistName');
$moduleModel = Settings_Picklist_Module_Model::getInstance($moduleName);
$pickListDeleteValue = $moduleModel->getActualPicklistValues($valueToDelete,$pickListFieldName);
if($moduleName == 'Events' && ($pickListFieldName == 'activitytype' || $pickListFieldName == 'eventstatus')) {
$db = PearDatabase::getInstance();
$primaryKey = Vtiger_Util_Helper::getPickListId($pickListFieldName);
$replaceValueQuery = $db->pquery("SELECT $pickListFieldName FROM ".$moduleModel->getPickListTableName($pickListFieldName)." WHERE $primaryKey IN (".generateQuestionMarks($replaceValue).")",array($replaceValue));
$actualReplaceValue = decode_html($db->query_result($replaceValueQuery,0,$pickListFieldName));
$this->updateDefaultPicklistValues($pickListFieldName,$pickListDeleteValue,$actualReplaceValue);
}
$response = new Vtiger_Response();
try{
$status = $moduleModel->remove($pickListFieldName, $valueToDelete, $replaceValue, $moduleName);
$moduleModel->handleLabels($moduleName,array(),$pickListDeleteValue,'delete');
$response->setResult(array('success',$status));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
/**
* Function which will assign existing values to the roles
* @param Vtiger_Request $request
*/
public function assignValueToRole(Vtiger_Request $request) {
$pickListFieldName = $request->get('picklistName');
$valueToAssign = $request->getRaw('assign_values');
$userSelectedRoles = $request->get('rolesSelected');
$roleIdList = array();
//selected all roles option
if(in_array('all',$userSelectedRoles)) {
$roleRecordList = Settings_Roles_Record_Model::getAll();
foreach($roleRecordList as $roleRecord) {
$roleIdList[] = $roleRecord->getId();
}
}else{
$roleIdList = $userSelectedRoles;
}
$moduleModel = new Settings_Picklist_Module_Model();
$response = new Vtiger_Response();
try{
$moduleModel->enableOrDisableValuesForRole($pickListFieldName, $valueToAssign, array(),$roleIdList);
$response->setResult(array('success',true));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function saveOrder(Vtiger_Request $request) {
$pickListFieldName = $request->get('picklistName');
// we should clear cache to update with latest values
$rolesList = $request->get('rolesList');
$picklistValues = $request->getRaw('picklistValues');
$moduleModel = new Settings_Picklist_Module_Model();
$response = new Vtiger_Response();
try{
$moduleModel->updateSequence($pickListFieldName, $picklistValues, $rolesList);
$response->setResult(array('success',true));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function enableOrDisable(Vtiger_Request $request) {
$pickListFieldName = $request->get('picklistName');
$enabledValues = $request->getRaw('enabled_values',array());
$disabledValues = $request->getRaw('disabled_values',array());
$roleSelected = $request->get('rolesSelected');
$moduleModel = new Settings_Picklist_Module_Model();
$response = new Vtiger_Response();
try{
$moduleModel->enableOrDisableValuesForRole($pickListFieldName, $enabledValues, $disabledValues,array($roleSelected));
$response->setResult(array('success',true));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
$response->emit();
}
public function validateRequest(Vtiger_Request $request) {
$request->validateWriteAccess();
}
public function edit(Vtiger_Request $request) {
$moduleName = $request->get('source_module');
$newValue = $request->getRaw('newValue');
$pickListFieldName = $request->get('picklistName');
$nonEditablePicklistValues = Settings_Picklist_Field_Model::getNonEditablePicklistValues($pickListFieldName);
// we should clear cache to update with latest values
$rolesList = $request->get('rolesList');
$color = $request->get('selectedColor');
$oldValue = $request->getRaw('oldValue');
$id = $request->getRaw('id');
if($moduleName == 'Events' && ($pickListFieldName == 'activitytype' || $pickListFieldName == 'eventstatus')) {
$this->updateDefaultPicklistValues($pickListFieldName,$oldValue,$newValue);
}
$moduleModel = new Settings_Picklist_Module_Model();
$response = new Vtiger_Response();
if($oldValue != $newValue && empty($nonEditablePicklistValues[$id])) {
try{
$status = $moduleModel->renamePickListValues($pickListFieldName, $oldValue, $newValue, $moduleName, $id, $rolesList, $color);
$response->setResult(array('success',$status));
} catch (Exception $e) {
$response->setError($e->getCode(), $e->getMessage());
}
} else {
if($color) {
$status = $moduleModel->updatePicklistColor($pickListFieldName, $id, $color);
$response->setResult(array('success',$status));
}
}
$response->emit();
}
}