[ 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 vimport('modules.Calendar.iCal.iCalendar_rfc2445'); 12 vimport('modules.Calendar.iCal.iCalendar_components'); 13 vimport('modules.Calendar.iCal.iCalendar_properties'); 14 vimport('modules.Calendar.iCal.iCalendar_parameters'); 15 16 class Calendar_ExportData_Action extends Vtiger_ExportData_Action { 17 18 /** 19 * Function that generates Export Query based on the mode 20 * @param Vtiger_Request $request 21 * @return <String> export query 22 */ 23 public function getExportQuery(Vtiger_Request $request) { 24 $moduleName = $request->getModule(); 25 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 26 27 return $moduleModel->getExportQuery('',''); 28 } 29 30 /** 31 * Function returns the export type - This can be extended to support different file exports 32 * @param Vtiger_Request $request 33 * @return <String> 34 */ 35 public function getExportContentType(Vtiger_Request $request) { 36 return 'text/calendar'; 37 } 38 39 /** 40 * Function exports the data based on the mode 41 * @param Vtiger_Request $request 42 */ 43 public function ExportData(Vtiger_Request $request) { 44 $db = PearDatabase::getInstance(); 45 $moduleModel = Vtiger_Module_Model::getInstance($request->getModule()); 46 47 $moduleModel->setEventFieldsForExport(); 48 $moduleModel->setTodoFieldsForExport(); 49 50 $query = $this->getExportQuery($request); 51 $result = $db->pquery($query, array()); 52 53 $this->output($request, $result, $moduleModel); 54 } 55 56 /** 57 * Function that create the exported file 58 * @param Vtiger_Request $request 59 * @param <Array> $result 60 * @param Vtiger_Module_Model $moduleModel 61 */ 62 public function output($request, $result, $moduleModel) { 63 $fileName = $request->get('filename'); 64 $exportType = $this->getExportContentType($request); 65 66 // Send the right content type and filename 67 header("Content-type: $exportType"); 68 header("Content-Disposition: attachment; filename={$fileName}.ics"); 69 70 $timeZone = new iCalendar_timezone; 71 $timeZoneId = split('/', date_default_timezone_get()); 72 73 if(!empty($timeZoneId[1])) { 74 $zoneId = $timeZoneId[1]; 75 } else { 76 $zoneId = $timeZoneId[0]; 77 } 78 79 $timeZone->add_property('TZID', $zoneId); 80 $timeZone->add_property('TZOFFSETTO', date('O')); 81 82 if(date('I') == 1) { 83 $timeZone->add_property('DAYLIGHTC', date('I')); 84 } else { 85 $timeZone->add_property('STANDARDC', date('I')); 86 } 87 88 $myiCal = new iCalendar; 89 $myiCal->add_component($timeZone); 90 91 while (!$result->EOF) { 92 $eventFields = $result->fields; 93 $id = $eventFields['activityid']; 94 $type = $eventFields['activitytype']; 95 if($type != 'Task') { 96 $temp = $moduleModel->get('eventFields'); 97 foreach($temp as $fieldName => $access) { 98 /* Priority property of ical is Integer 99 * http://kigkonsult.se/iCalcreator/docs/using.html#PRIORITY 100 */ 101 if($fieldName == 'priority'){ 102 $priorityMap = array('High'=>'1','Medium'=>'2','Low'=>'3'); 103 $priorityval = $eventFields[$fieldName]; 104 $icalZeroPriority = 0; 105 if(array_key_exists($priorityval, $priorityMap)) 106 $temp[$fieldName] = $priorityMap[$priorityval]; 107 else 108 $temp[$fieldName] = $icalZeroPriority; 109 } 110 else 111 $temp[$fieldName] = $eventFields[$fieldName]; 112 } 113 $temp['id'] = $id; 114 115 $iCalTask = new iCalendar_event; 116 $iCalTask->assign_values($temp); 117 118 $iCalAlarm = new iCalendar_alarm; 119 $iCalAlarm->assign_values($temp); 120 $iCalTask->add_component($iCalAlarm); 121 } else { 122 $temp = $moduleModel->get('todoFields'); 123 foreach($temp as $fieldName => $access) { 124 if($fieldName == 'priority'){ 125 $priorityMap = array('High'=>'1','Medium'=>'2','Low'=>'3'); 126 $priorityval = $eventFields[$fieldName]; 127 $icalZeroPriority = 0; 128 if(array_key_exists($priorityval, $priorityMap)) 129 $temp[$fieldName] = $priorityMap[$priorityval]; 130 else 131 $temp[$fieldName] = $icalZeroPriority; 132 } 133 else 134 $temp[$fieldName] = $eventFields[$fieldName]; 135 } 136 $iCalTask = new iCalendar_todo; 137 $iCalTask->assign_values($temp); 138 } 139 140 $myiCal->add_component($iCalTask); 141 $result->MoveNext(); 142 } 143 echo $myiCal->serialize(); 144 } 145 }
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 |