[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/actions/ -> MassSave.php (source)

   1  <?php
   2  /*+***********************************************************************************
   3   * The contents of this file are subject to the vtiger CRM Public License Version 1.0
   4   * ("License"); You may not use this file except in compliance with the License
   5   * The Original Code is:  vtiger CRM Open Source
   6   * The Initial Developer of the Original Code is vtiger.
   7   * Portions created by vtiger are Copyright (C) vtiger.
   8   * All Rights Reserved.
   9   *************************************************************************************/
  10  
  11  class Vtiger_MassSave_Action extends Vtiger_Mass_Action {
  12  
  13  	function checkPermission(Vtiger_Request $request) {
  14          $moduleName = $request->getModule();
  15          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  16          $currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
  17  
  18          if(!$currentUserPriviligesModel->hasModuleActionPermission($moduleModel->getId(), 'Save')) {
  19              throw new AppException(vtranslate($moduleName).' '.vtranslate('LBL_NOT_ACCESSIBLE'));
  20          }
  21      }
  22  
  23  	public function process(Vtiger_Request $request) {
  24          $moduleName = $request->getModule();
  25          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  26          $recordModels = $this->getRecordModelsFromRequest($request);
  27          foreach($recordModels as $recordId => $recordModel) {
  28              if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) {
  29                  $recordModel->save();
  30              }
  31          }
  32  
  33          $response = new Vtiger_Response();
  34          $response->setResult(true);
  35          $response->emit();
  36      }
  37  
  38      /**
  39       * Function to get the record model based on the request parameters
  40       * @param Vtiger_Request $request
  41       * @return Vtiger_Record_Model or Module specific Record Model instance
  42       */
  43  	function getRecordModelsFromRequest(Vtiger_Request $request) {
  44  
  45          $moduleName = $request->getModule();
  46          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  47          $recordIds = $this->getRecordsListFromRequest($request);
  48          $recordModels = array();
  49  
  50          $fieldModelList = $moduleModel->getFields();
  51          foreach($recordIds as $recordId) {
  52              $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleModel);
  53              $recordModel->set('id', $recordId);
  54              $recordModel->set('mode', 'edit');
  55  
  56              foreach ($fieldModelList as $fieldName => $fieldModel) {
  57                  $fieldValue = $request->get($fieldName, null);
  58                  $fieldDataType = $fieldModel->getFieldDataType();
  59                  if($fieldDataType == 'time'){
  60                      $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
  61                  }
  62                  if(isset($fieldValue) && $fieldValue != null) {
  63                      if(!is_array($fieldValue)) {
  64                          $fieldValue = trim($fieldValue);
  65                      }
  66                      $recordModel->set($fieldName, $fieldValue);
  67                  } else {
  68                      $uiType = $fieldModel->get('uitype');
  69                      if($uiType == 70) {
  70                          $recordModel->set($fieldName, $recordModel->get($fieldName));
  71                      }  else {
  72                          $uiTypeModel = $fieldModel->getUITypeModel();
  73                          $recordModel->set($fieldName, $uiTypeModel->getUserRequestValue($recordModel->get($fieldName)));
  74                      }
  75                  }
  76              }
  77              $recordModels[$recordId] = $recordModel;
  78          }
  79          return $recordModels;
  80      }
  81  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1