[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Calendar/views/ -> Import.php (source)

   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  }


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