[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* +*********************************************************************************** 4 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 5 * ("License"); You may not use this file except in compliance with the License 6 * The Original Code is: vtiger CRM Open Source 7 * The Initial Developer of the Original Code is vtiger. 8 * Portions created by vtiger are Copyright (C) vtiger. 9 * All Rights Reserved. 10 * *********************************************************************************** */ 11 12 vimport('~~/modules/Calendar/iCal/iCalendar_rfc2445.php'); 13 vimport('~~/modules/Calendar/iCal/iCalendar_components.php'); 14 vimport('~~/modules/Calendar/iCal/iCalendar_properties.php'); 15 vimport('~~/modules/Calendar/iCal/iCalendar_parameters.php'); 16 vimport('~~/modules/Calendar/iCal/ical-parser-class.php'); 17 vimport('~~/modules/Calendar/iCalLastImport.php'); 18 19 class Calendar_Import_View extends Vtiger_Import_View { 20 21 function __construct() { 22 parent::__construct(); 23 $this->exposeMethod('import'); 24 $this->exposeMethod('importResult'); 25 $this->exposeMethod('undoImport'); 26 } 27 28 public function preprocess(Vtiger_Request $request) { 29 $mode = $request->getMode(); 30 if (!empty ($mode)) { 31 parent::preProcess($request); 32 } 33 } 34 35 public function process(Vtiger_Request $request) { 36 $mode = $request->getMode(); 37 if(!empty($mode)) { 38 echo $this->invokeExposedMethod($mode, $request); 39 return; 40 } 41 echo $this->import($request); 42 } 43 44 public function postprocess(Vtiger_Request $request) { 45 $mode = $request->getMode(); 46 if (!empty ($mode)) { 47 parent::postProcess($request); 48 } 49 } 50 51 /** 52 * Function to show import UI in Calendar Module 53 * @param Vtiger_Request $request 54 */ 55 public function import(Vtiger_Request $request) { 56 $moduleName = $request->getModule(); 57 $viewer = $this->getViewer($request); 58 59 $viewer->assign('MODULE', $moduleName); 60 $viewer->view('Import.tpl', $moduleName); 61 } 62 63 /** 64 * Function to show result of import 65 * @param Vtiger_Request $request 66 */ 67 public function importResult(Vtiger_Request $request) { 68 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 69 $userId = $currentUserModel->getId(); 70 $moduleName = $request->getModule(); 71 $viewer = $this->getViewer($request); 72 $request->set('type', 'ics'); 73 74 if (Import_Utils_Helper::validateFileUpload($request)) { 75 $lastImport = new iCalLastImport(); 76 $lastImport->clearRecords($userId); 77 78 $eventModule = 'Events'; 79 $todoModule = 'Calendar'; 80 81 $skipFields = array( 82 $eventModule => array('duration_hours'), 83 $todoModule => array('eventstatus') 84 ); 85 86 $requiredFields = array(); 87 $modules = array($eventModule, $todoModule); 88 $calendarModel = Vtiger_Module_Model::getInstance($moduleName); 89 90 foreach($modules as $module) { 91 $moduleRequiredFields = array_keys($calendarModel->getRequiredFields($module)); 92 $requiredFields[$module] = array_diff($moduleRequiredFields, $skipFields[$module]); 93 $totalCount[$module] = 0; 94 $skipCount[$module] = 0; 95 } 96 97 $ical = new iCal(); 98 $icalActivities = $ical->iCalReader("IMPORT_".$userId); 99 $noOfActivities = count($icalActivities); 100 101 for($i=0; $i<$noOfActivities; $i++) { 102 if($icalActivities[$i]['TYPE'] == 'VEVENT') { 103 $activity = new iCalendar_event; 104 $module = $eventModule; 105 } else { 106 $activity = new iCalendar_todo; 107 $module = $todoModule; 108 } 109 110 $totalCount[$module]++; 111 $activityFieldsList = $activity->generateArray($icalActivities[$i]); 112 if (!array_key_exists('visibility', $activityFieldsList)) { 113 $activityFieldsList['visibility'] = ' '; 114 } 115 if(array_key_exists('taskpriority',$activityFieldsList)) { 116 $priorityMap = array('0'=>'Medium','1'=>'High','2'=>'Medium','3'=>'Low'); 117 $priorityval = $activityFieldsList['taskpriority']; 118 if(array_key_exists($priorityval,$priorityMap)) 119 $activityFieldsList['taskpriority'] = $priorityMap[$priorityval]; 120 } 121 122 $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); 123 $recordModel->setData($activityFieldsList); 124 $recordModel->set('assigned_user_id', $userId); 125 126 $skipRecord = false; 127 foreach($requiredFields[$module] as $key) { 128 $value = $recordModel->get($key); 129 if(empty ($value)) { 130 $skipCount[$module]++; 131 $skipRecord = true; 132 break; 133 } 134 } 135 if($skipRecord === true) { 136 continue; 137 } 138 $recordModel->save(); 139 140 $lastImport = new iCalLastImport(); 141 $lastImport->setFields(array('userid' => $userId, 'entitytype' => $todoModule, 'crmid' => $recordModel->getId())); 142 $lastImport->save(); 143 144 if(!empty($icalActivities[$i]['VALARM'])) { 145 $recordModel->setActivityReminder(0, '', ''); 146 } 147 } 148 149 $importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule]; 150 $importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule]; 151 152 $viewer->assign('SUCCESS_EVENTS', $importedEvents); 153 $viewer->assign('SKIPPED_EVENTS', $skipCount[$eventModule]); 154 $viewer->assign('SUCCESS_TASKS', $importedTasks); 155 $viewer->assign('SKIPPED_TASKS', $skipCount[$todoModule]); 156 157 } else { 158 $viewer->assign('ERROR_MESSAGE', $request->get('error_message')); 159 } 160 161 $viewer->assign('MODULE', $moduleName); 162 $viewer->assign('VIEW', 'List'); 163 164 $viewer->view('ImportResult.tpl', $moduleName); 165 } 166 167 /** 168 * Function to show result of undo import 169 * @param Vtiger_Request $request 170 */ 171 public function undoImport(Vtiger_Request $request) { 172 $currentUserModel = Users_Record_Model::getCurrentUserModel(); 173 $moduleName = $request->getModule(); 174 175 $lastImport = new iCalLastImport(); 176 $returnValue = $lastImport->undo($moduleName, $currentUserModel->getId()); 177 if(!empty($returnValue)) { 178 $undoStatus = true; 179 } else { 180 $undoStatus = false; 181 } 182 183 $viewer = $this->getViewer($request); 184 $viewer->assign('MODULE', $moduleName); 185 $viewer->assign('VIEW', 'List'); 186 $viewer->assign('UNDO_STATUS', $undoStatus); 187 188 $viewer->view('ImportFinalResult.tpl', $moduleName); 189 } 190 191 }
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 |