[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Calendar/actions/ -> ExportData.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  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  }


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