[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Calendar/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 Calendar_SaveAjax_Action extends Vtiger_SaveAjax_Action {
  12  
  13  	public function process(Vtiger_Request $request) {
  14          $user = Users_Record_Model::getCurrentUserModel();
  15  
  16          $recordModel = $this->saveRecord($request);
  17  
  18          $fieldModelList = $recordModel->getModule()->getFields();
  19          $result = array();
  20          foreach ($fieldModelList as $fieldName => $fieldModel) {
  21              $fieldValue =  Vtiger_Util_Helper::toSafeHTML($recordModel->get($fieldName));
  22              $result[$fieldName] = array();
  23              if($fieldName == 'date_start') {
  24                  $timeStart = $recordModel->get('time_start');
  25                  $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart);
  26  
  27                  $fieldValue = $fieldValue.' '.$timeStart;
  28  
  29                  $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
  30                  $dateTimeComponents = explode(' ',$userDateTimeString);
  31                  $dateComponent = $dateTimeComponents[0];
  32                  //Conveting the date format in to Y-m-d . since full calendar expects in the same format
  33                  $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format'));
  34                  $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString.' '. $dateTimeComponents[1];
  35              } else if($fieldName == 'due_date') {
  36                  $timeEnd = $recordModel->get('time_end');
  37                  $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd);
  38  
  39                  $fieldValue = $fieldValue.' '.$timeEnd;
  40  
  41                  $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
  42                  $dateTimeComponents = explode(' ',$userDateTimeString);
  43                  $dateComponent = $dateTimeComponents[0];
  44                  //Conveting the date format in to Y-m-d . since full calendar expects in the same format
  45                  $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format'));
  46                  $result[$fieldName]['calendar_display_value']   =  $dataBaseDateFormatedString.' '. $dateTimeComponents[1];
  47              }
  48              $result[$fieldName]['value'] = $fieldValue;
  49              $result[$fieldName]['display_value'] = decode_html($fieldModel->getDisplayValue($fieldValue));
  50          }
  51  
  52          $result['_recordLabel'] = $recordModel->getName();
  53          $result['_recordId'] = $recordModel->getId();
  54  
  55          // Handled to save follow up event
  56          $followupMode = $request->get('followup');
  57  
  58          if($followupMode == 'on') {
  59              //Start Date and Time values
  60              $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start'));
  61              $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime);
  62              list($startDate, $startTime) = explode(' ', $startDateTime);
  63  
  64              $subject = $request->get('subject');
  65              if($startTime != '' && $startDate != ''){
  66                  $recordModel->set('eventstatus', 'Planned');
  67                  $recordModel->set('subject','[Followup] '.$subject);
  68                  $recordModel->set('date_start',$startDate);
  69                  $recordModel->set('time_start',$startTime);
  70  
  71                  $currentUser = Users_Record_Model::getCurrentUserModel();
  72                  $activityType = $recordModel->get('activitytype');
  73                  if($activityType == 'Call') {
  74                      $minutes = $currentUser->get('callduration');
  75                  } else {
  76                      $minutes = $currentUser->get('othereventduration');
  77                  }
  78                  $dueDateTime = date('Y-m-d H:i:s', strtotime("$startDateTime+$minutes minutes"));
  79                  list($endDate, $endTime) = explode(' ', $dueDateTime);
  80  
  81                  $recordModel->set('due_date',$endDate);
  82                  $recordModel->set('time_end',$endTime);
  83                  $recordModel->set('mode', 'create');
  84                  $recordModel->save();
  85              }
  86          }
  87          $response = new Vtiger_Response();
  88          $response->setEmitType(Vtiger_Response::$EMIT_JSON);
  89          $response->setResult($result);
  90          $response->emit();
  91      }
  92  
  93      /**
  94       * Function to get the record model based on the request parameters
  95       * @param Vtiger_Request $request
  96       * @return Vtiger_Record_Model or Module specific Record Model instance
  97       */
  98  	public function getRecordModelFromRequest(Vtiger_Request $request) {
  99          $recordModel = parent::getRecordModelFromRequest($request);
 100  
 101          $startDate = $request->get('date_start');
 102          if(!empty($startDate)) {
 103              //Start Date and Time values
 104              $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start'));
 105              $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start')." ".$startTime);
 106              list($startDate, $startTime) = explode(' ', $startDateTime);
 107  
 108              $recordModel->set('date_start', $startDate);
 109              $recordModel->set('time_start', $startTime);
 110          }
 111  
 112          $endDate = $request->get('due_date');
 113          if(!empty($endDate)) {
 114              //End Date and Time values
 115              $endTime = $request->get('time_end');
 116              $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date'));
 117  
 118              if ($endTime) {
 119                  $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime);
 120                  $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date')." ".$endTime);
 121                  list($endDate, $endTime) = explode(' ', $endDateTime);
 122              }
 123  
 124              $recordModel->set('time_end', $endTime);
 125              $recordModel->set('due_date', $endDate);
 126          }
 127  
 128          $activityType = $request->get('activitytype');
 129          $visibility = $request->get('visibility');
 130          if(empty($activityType)) {
 131              $recordModel->set('activitytype', 'Task');
 132              $visibility = 'Private';
 133              $recordModel->set('visibility', $visibility);
 134          }
 135  
 136          if(empty($visibility)) {
 137              $assignedUserId = $recordModel->get('assigned_user_id');
 138              $sharedType = Calendar_Module_Model::getSharedType($assignedUserId);
 139              if($sharedType == 'selectedusers') {
 140                  $sharedType = 'public';
 141              }
 142              $recordModel->set('visibility', ucfirst($sharedType));
 143          }
 144  
 145          return $recordModel;
 146      }
 147  }


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