diff --git a/modules/Accounts/actions/CheckDuplicate.php b/modules/Accounts/actions/CheckDuplicate.php deleted file mode 100644 index e236a78753495f3515094d7c21051dd5b6c5fe34..0000000000000000000000000000000000000000 --- a/modules/Accounts/actions/CheckDuplicate.php +++ /dev/null @@ -1,47 +0,0 @@ -<?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. - *************************************************************************************/ - -class Accounts_CheckDuplicate_Action extends Vtiger_Action_Controller { - - function checkPermission(Vtiger_Request $request) { - return; - } - - public function process(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $accountName = $request->get('accountname'); - $record = $request->get('record'); - - if ($record) { - $recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName); - } else { - $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); - } - - $recordModel->set('label', $accountName); - - if ($accountName == $recordModel->get('accountname')) { - $status = false; - } else { - if($record) { - $recordModel->set('accountname', $accountName); - } - $status = $recordModel->checkDuplicate(); - } - if (!$status) { - $result = array('success'=>false); - } else { - $result = array('success'=>true, 'message'=>vtranslate('LBL_DUPLICATES_EXIST', $moduleName)); - } - $response = new Vtiger_Response(); - $response->setResult($result); - $response->emit(); - } -} diff --git a/modules/Accounts/actions/TransferOwnership.php b/modules/Accounts/actions/TransferOwnership.php index 689877ac7072b3c21acdc09c16b0fc757838a6d5..cf959e1f51c2e47daddd04fcaac11df50d1dccd4 100644 --- a/modules/Accounts/actions/TransferOwnership.php +++ b/modules/Accounts/actions/TransferOwnership.php @@ -10,13 +10,25 @@ class Accounts_TransferOwnership_Action extends Vtiger_Action_Controller { - function checkPermission(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $moduleModel = Vtiger_Module_Model::getInstance($moduleName); - $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); - - if(!$currentUserPriviligesModel->hasModuleActionPermission($moduleModel->getId(), 'Save')) { - throw new AppException(vtranslate($moduleName, $moduleName).' '.vtranslate('LBL_NOT_ACCESSIBLE')); + public function requiredPermission(Vtiger_Request $request){ + $permission = array(); + //Basic permission for this action performed + array_push($permission, 'EditView'); + return $permission; + } + + public function checkPermission(Vtiger_Request $request) { + $requiredPermission = $this->requiredPermission($request); + $recordIds = $this->getRecordIds($request); + foreach ($requiredPermission as $key => $checkPermission) { + foreach ($recordIds as $key => $recordId) { + $moduleName = getSalesEntityType($recordId); + $permission = Users_Privileges_Model::isPermitted($moduleName, $checkPermission); + if(!$permission){ + $exceptionMessage = vtranslate($moduleName).' '. vtranslate('LBL_PERMISSION_DENIED'); + throw new AppException($exceptionMessage); + } + } } } @@ -24,25 +36,33 @@ class Accounts_TransferOwnership_Action extends Vtiger_Action_Controller { $module = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($module); $transferOwnerId = $request->get('transferOwnerId'); + $recordIds = $this->getRecordIds($request); + + $result = $moduleModel->transferRecordsOwnership($transferOwnerId, $recordIds); + $response = new Vtiger_Response(); + if ($result === true) { + $response->setResult(true); + } else { + $response->setError($result); + } + $response->emit(); + } + + public function getRecordIds(Vtiger_Request $request) { + $module = $request->getModule(); + $moduleModel = Vtiger_Module_Model::getInstance($module); $record = $request->get('record'); if(empty($record)) $recordIds = $this->getBaseModuleRecordIds($request); else $recordIds[] = $record; + $relatedModuleRecordIds = $moduleModel->getRelatedModuleRecordIds($request, $recordIds); foreach ($recordIds as $key => $recordId) { array_push($relatedModuleRecordIds, $recordId); } array_merge($relatedModuleRecordIds, $recordIds); - - $result = $moduleModel->transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds); - $response = new Vtiger_Response(); - if ($result === true) { - $response->setResult(true); - } else { - $response->setError($result); - } - $response->emit(); + return $relatedModuleRecordIds; } protected function getBaseModuleRecordIds(Vtiger_Request $request) { diff --git a/modules/Vtiger/models/Module.php b/modules/Vtiger/models/Module.php index 529209f690557deb2ab5a8c5b0f3268f5c3d8e99..c4e5e2909bab1b754d29872a5110a373c3b557a2 100644 --- a/modules/Vtiger/models/Module.php +++ b/modules/Vtiger/models/Module.php @@ -1715,19 +1715,18 @@ class Vtiger_Module_Model extends Vtiger_Module { public function transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds){ $moduleName = $this->getName(); foreach($relatedModuleRecordIds as $recordId) { - if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { - try { - $recordModel = Vtiger_Record_Model::getInstanceById($recordId); - $recordModel->set('assigned_user_id', $transferOwnerId); - $recordModel->set('mode', 'edit'); - // Transferring ownership with related module as Inventory modules, removes line item details. - // So setting $_REQUEST['ajxaction'] to DETAILVIEW - $_REQUEST['ajxaction'] = 'DETAILVIEW'; - $recordModel->save(); - } catch (DuplicateException $e) { - return $e->getDuplicationMessage(); - } catch (Exception $e) { - } + $moduleName = getSalesEntityType($recordId); + try { + $recordModel = Vtiger_Record_Model::getInstanceById($recordId); + $recordModel->set('assigned_user_id', $transferOwnerId); + $recordModel->set('mode', 'edit'); + // Transferring ownership with related module as Inventory modules, removes line item details. + // So setting $_REQUEST['ajxaction'] to DETAILVIEW + $_REQUEST['ajxaction'] = 'DETAILVIEW'; + $recordModel->save(); + } catch (DuplicateException $e) { + return $e->getDuplicationMessage(); + } catch (Exception $e) { } } }