[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
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_Save_Action extends Vtiger_Save_Action { 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 $loadUrl = $recordModel->getDetailViewUrl(); 25 26 if($request->get('relationOperation')) { 27 $parentModuleName = $request->get('sourceModule'); 28 $parentRecordId = $request->get('sourceRecord'); 29 $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); 30 //TODO : Url should load the related list instead of detail view of record 31 $loadUrl = $parentRecordModel->getDetailViewUrl(); 32 } else if ($request->get('returnToList')) { 33 $moduleModel = $recordModel->getModule(); 34 $listViewUrl = $moduleModel->getListViewUrl(); 35 36 if ($recordModel->get('visibility') === 'Private') { 37 $loadUrl = $listViewUrl; 38 } else { 39 $userId = $recordModel->get('assigned_user_id'); 40 $sharedType = $moduleModel->getSharedType($userId); 41 if ($sharedType === 'selectedusers') { 42 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 43 $sharedUserIds = Calendar_Module_Model::getCaledarSharedUsers($userId); 44 if (!array_key_exists($currentUserModel->id, $sharedUserIds)) { 45 $loadUrl = $listViewUrl; 46 } 47 } else if ($sharedType === 'private') { 48 $loadUrl = $listViewUrl; 49 } 50 } 51 } 52 header("Location: $loadUrl"); 53 } 54 55 /** 56 * Function to save record 57 * @param <Vtiger_Request> $request - values of the record 58 * @return <RecordModel> - record Model of saved record 59 */ 60 public function saveRecord($request) { 61 $recordModel = $this->getRecordModelFromRequest($request); 62 $recordModel->save(); 63 if($request->get('relationOperation')) { 64 $parentModuleName = $request->get('sourceModule'); 65 $parentModuleModel = Vtiger_Module_Model::getInstance($parentModuleName); 66 $parentRecordId = $request->get('sourceRecord'); 67 $relatedModule = $recordModel->getModule(); 68 if($relatedModule->getName() == 'Events'){ 69 $relatedModule = Vtiger_Module_Model::getInstance('Calendar'); 70 } 71 $relatedRecordId = $recordModel->getId(); 72 73 $relationModel = Vtiger_Relation_Model::getInstance($parentModuleModel, $relatedModule); 74 $relationModel->addRelation($parentRecordId, $relatedRecordId); 75 } 76 return $recordModel; 77 } 78 79 /** 80 * Function to get the record model based on the request parameters 81 * @param Vtiger_Request $request 82 * @return Vtiger_Record_Model or Module specific Record Model instance 83 */ 84 protected function getRecordModelFromRequest(Vtiger_Request $request) { 85 $moduleName = $request->getModule(); 86 $recordId = $request->get('record'); 87 88 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 89 90 if(!empty($recordId)) { 91 $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); 92 $modelData = $recordModel->getData(); 93 $recordModel->set('id', $recordId); 94 $recordModel->set('mode', 'edit'); 95 //Due to dependencies on the activity_reminder api in Activity.php(5.x) 96 $_REQUEST['mode'] = 'edit'; 97 } else { 98 $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); 99 $modelData = $recordModel->getData(); 100 $recordModel->set('mode', ''); 101 } 102 103 $fieldModelList = $moduleModel->getFields(); 104 foreach ($fieldModelList as $fieldName => $fieldModel) { 105 $fieldValue = $request->get($fieldName, null); 106 // For custom time fields in Calendar, it was not converting to db insert format(sending as 10:00 AM/PM) 107 $fieldDataType = $fieldModel->getFieldDataType(); 108 if($fieldDataType == 'time'){ 109 $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); 110 } 111 // End 112 if($fieldValue !== null) { 113 if(!is_array($fieldValue)) { 114 $fieldValue = trim($fieldValue); 115 } 116 $recordModel->set($fieldName, $fieldValue); 117 } 118 } 119 120 //Start Date and Time values 121 $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('time_start')); 122 $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('date_start')." ".$startTime); 123 list($startDate, $startTime) = explode(' ', $startDateTime); 124 125 $recordModel->set('date_start', $startDate); 126 $recordModel->set('time_start', $startTime); 127 128 //End Date and Time values 129 $endTime = $request->get('time_end'); 130 $endDate = Vtiger_Date_UIType::getDBInsertedValue($request->get('due_date')); 131 132 if ($endTime) { 133 $endTime = Vtiger_Time_UIType::getTimeValueWithSeconds($endTime); 134 $endDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('due_date')." ".$endTime); 135 list($endDate, $endTime) = explode(' ', $endDateTime); 136 } 137 138 $recordModel->set('time_end', $endTime); 139 $recordModel->set('due_date', $endDate); 140 141 $activityType = $request->get('activitytype'); 142 if(empty($activityType)) { 143 $recordModel->set('activitytype', 'Task'); 144 $recordModel->set('visibility', 'Private'); 145 } 146 147 //Due to dependencies on the older code 148 $setReminder = $request->get('set_reminder'); 149 if($setReminder) { 150 $_REQUEST['set_reminder'] = 'Yes'; 151 } else { 152 $_REQUEST['set_reminder'] = 'No'; 153 } 154 155 $time = strtotime($request->get('due_date'))-strtotime($request->get('date_start')); 156 $hours = (float)$time/3600; 157 $minutes = ((float)$hours-(int)$hours)*60; 158 $recordModel->set('duration_hours', (int)$hours); 159 $recordModel->set('duration_minutes', $minutes); 160 161 return $recordModel; 162 } 163 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |