[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Vtiger/actions/ -> SaveAjax.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_SaveAjax_Action extends Vtiger_Save_Action {
  12  
  13  	public function process(Vtiger_Request $request) {
  14          $recordModel = $this->saveRecord($request);
  15  
  16          $fieldModelList = $recordModel->getModule()->getFields();
  17          $result = array();
  18          foreach ($fieldModelList as $fieldName => $fieldModel) {
  19              $recordFieldValue = $recordModel->get($fieldName);
  20              if(is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') {
  21                  $recordFieldValue = implode(' |##| ', $recordFieldValue);
  22              }
  23              $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue);
  24              if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') { 
  25                  $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); 
  26              }
  27              
  28              $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue);
  29          }
  30  
  31          //Handling salutation type
  32          if ($request->get('field') === 'firstname' && in_array($request->getModule(), array('Contacts', 'Leads'))) {
  33              $salutationType = $recordModel->getDisplayValue('salutationtype');
  34              $firstNameDetails = $result['firstname'];
  35              $firstNameDetails['display_value'] = $salutationType. " " .$firstNameDetails['display_value'];
  36              if ($salutationType != '--None--') $result['firstname'] = $firstNameDetails;
  37          }
  38  
  39          $result['_recordLabel'] = $recordModel->getName();
  40          $result['_recordId'] = $recordModel->getId();
  41  
  42          $response = new Vtiger_Response();
  43          $response->setEmitType(Vtiger_Response::$EMIT_JSON);
  44          $response->setResult($result);
  45          $response->emit();
  46      }
  47  
  48      /**
  49       * Function to get the record model based on the request parameters
  50       * @param Vtiger_Request $request
  51       * @return Vtiger_Record_Model or Module specific Record Model instance
  52       */
  53  	public function getRecordModelFromRequest(Vtiger_Request $request) {
  54          $moduleName = $request->getModule();
  55          $recordId = $request->get('record');
  56  
  57          if(!empty($recordId)) {
  58              $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
  59              $recordModel->set('id', $recordId);
  60              $recordModel->set('mode', 'edit');
  61  
  62              $fieldModelList = $recordModel->getModule()->getFields();
  63              foreach ($fieldModelList as $fieldName => $fieldModel) {
  64                  //For not converting craetedtime and modified time to user format
  65                  $uiType = $fieldModel->get('uitype');
  66                  if ($uiType == 70) {
  67                      $fieldValue = $recordModel->get($fieldName);
  68                  } else {
  69                      $fieldValue = $fieldModel->getUITypeModel()->getUserRequestValue($recordModel->get($fieldName));
  70                  }
  71                  
  72  
  73                  if ($fieldName === $request->get('field')) {
  74                      $fieldValue = $request->get('value');
  75                  }
  76                  $fieldDataType = $fieldModel->getFieldDataType();
  77                  if ($fieldDataType == 'time') {
  78                      $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
  79                  }
  80                  if ($fieldValue !== null) {
  81                      if (!is_array($fieldValue)) {
  82                          $fieldValue = trim($fieldValue);
  83                      }
  84                      $recordModel->set($fieldName, $fieldValue);
  85                  }
  86                  $recordModel->set($fieldName, $fieldValue);
  87              }
  88          } else {
  89              $moduleModel = Vtiger_Module_Model::getInstance($moduleName);
  90  
  91              $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
  92              $recordModel->set('mode', '');
  93  
  94              $fieldModelList = $moduleModel->getFields();
  95              foreach ($fieldModelList as $fieldName => $fieldModel) {
  96                  if ($request->has($fieldName)) {
  97                      $fieldValue = $request->get($fieldName, null);
  98                  } else {
  99                      $fieldValue = $fieldModel->getDefaultFieldValue();
 100                  }
 101                  $fieldDataType = $fieldModel->getFieldDataType();
 102                  if ($fieldDataType == 'time') {
 103                      $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 104                  }
 105                  if ($fieldValue !== null) {
 106                      if (!is_array($fieldValue)) {
 107                          $fieldValue = trim($fieldValue);
 108                      }
 109                      $recordModel->set($fieldName, $fieldValue);
 110                  }
 111              } 
 112          }
 113  
 114          return $recordModel;
 115      }
 116  }


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