[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/actions/ -> Save.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_Save_Action extends Vtiger_Action_Controller {
  12  
  13  	public function checkPermission(Vtiger_Request $request) {
  14          $moduleName = $request->getModule();
  15          $record = $request->get('record');
  16  
  17          if(!Users_Privileges_Model::isPermitted($moduleName, 'Save', $record)) {
  18              throw new AppException('LBL_PERMISSION_DENIED');
  19          }
  20      }
  21  
  22  	public function process(Vtiger_Request $request) {
  23          $recordModel = $this->saveRecord($request);
  24          if($request->get('relationOperation')) {
  25              $parentModuleName = $request->get('sourceModule');
  26              $parentRecordId = $request->get('sourceRecord');
  27              $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName);
  28              //TODO : Url should load the related list instead of detail view of record
  29              $loadUrl = $parentRecordModel->getDetailViewUrl();
  30          } else if ($request->get('returnToList')) {
  31              $loadUrl = $recordModel->getModule()->getListViewUrl();
  32          } else {
  33              $loadUrl = $recordModel->getDetailViewUrl();
  34          }
  35          header("Location: $loadUrl");
  36      }
  37  
  38      /**
  39       * Function to save record
  40       * @param <Vtiger_Request> $request - values of the record
  41       * @return <RecordModel> - record Model of saved record
  42       */
  43  	public function saveRecord($request) {
  44          $recordModel = $this->getRecordModelFromRequest($request);
  45          $recordModel->save();
  46          if($request->get('relationOperation')) {
  47              $parentModuleName = $request->get('sourceModule');
  48              $parentModuleModel = Vtiger_Module_Model::getInstance($parentModuleName);
  49              $parentRecordId = $request->get('sourceRecord');
  50              $relatedModule = $recordModel->getModule();
  51              $relatedRecordId = $recordModel->getId();
  52  
  53              $relationModel = Vtiger_Relation_Model::getInstance($parentModuleModel, $relatedModule);
  54              $relationModel->addRelation($parentRecordId, $relatedRecordId);
  55          }
  56          if($request->get('imgDeleted')) {
  57              $imageIds = $request->get('imageid');
  58              foreach($imageIds as $imageId) {
  59                  $status = $recordModel->deleteImage($imageId);
  60              }
  61          }
  62          return $recordModel;
  63      }
  64  
  65      /**
  66       * Function to get the record model based on the request parameters
  67       * @param Vtiger_Request $request
  68       * @return Vtiger_Record_Model or Module specific Record Model instance
  69       */
  70  	protected function getRecordModelFromRequest(Vtiger_Request $request) {
  71  
  72          $moduleName = $request->getModule();
  73          $recordId = $request->get('record');
  74  
  75          $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  76  
  77          if(!empty($recordId)) {
  78              $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
  79              $modelData = $recordModel->getData();
  80              $recordModel->set('id', $recordId);
  81              $recordModel->set('mode', 'edit');
  82          } else {
  83              $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
  84              $modelData = $recordModel->getData();
  85              $recordModel->set('mode', '');
  86          }
  87  
  88          $fieldModelList = $moduleModel->getFields();
  89          foreach ($fieldModelList as $fieldName => $fieldModel) {
  90              $fieldValue = $request->get($fieldName, null);
  91              $fieldDataType = $fieldModel->getFieldDataType();
  92              if($fieldDataType == 'time'){
  93                  $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
  94              }
  95              if($fieldValue !== null) {
  96                  if(!is_array($fieldValue)) {
  97                      $fieldValue = trim($fieldValue);
  98                  }
  99                  $recordModel->set($fieldName, $fieldValue);
 100              }
 101          }
 102          return $recordModel;
 103      }
 104          
 105          public function validateRequest(Vtiger_Request $request) { 
 106              return $request->validateWriteAccess(); 
 107          } 
 108  }


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