/** * Function to show result of import * @param Vtiger_Request $request */ public function importResult(Vtiger_Request $request) { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $userId = $currentUserModel->getId(); $moduleName = $request->getModule(); $viewer = $this->getViewer($request); $request->set('type', 'ics'); if (Import_Utils_Helper::validateFileUpload($request)) { $lastImport = new iCalLastImport(); $lastImport->clearRecords($userId); $eventModule = 'Events'; $todoModule = 'Calendar'; $skipFields = array($eventModule => array('duration_hours'), $todoModule => array('activitystatus')); $requiredFields = array(); $modules = array($eventModule, $todoModule); $calendarModel = Vtiger_Module_Model::getInstance($moduleName); foreach ($modules as $module) { $moduleRequiredFields = array_keys($calendarModel->getRequiredFields($module)); $requiredFields[$module] = array_diff($moduleRequiredFields, $skipFields[$module]); $totalCount[$module] = 0; $skipCount[$module] = 0; } $ical = new iCal(); $icalActivities = $ical->iCalReader("IMPORT_" . $userId); $noOfActivities = count($icalActivities); for ($i = 0; $i < $noOfActivities; $i++) { if ($icalActivities[$i]['TYPE'] == 'VEVENT') { $activity = new iCalendar_event(); $module = $eventModule; } else { $activity = new iCalendar_todo(); $module = $todoModule; } $totalCount[$module]++; $activityFieldsList = $activity->generateArray($icalActivities[$i]); if (!array_key_exists('visibility', $activityFieldsList)) { $activityFieldsList['visibility'] = ' '; } if (array_key_exists('taskpriority', $activityFieldsList)) { $priorityMap = array('0' => 'Medium', '1' => 'High', '2' => 'Medium', '3' => 'Low'); $priorityval = $activityFieldsList['taskpriority']; if (array_key_exists($priorityval, $priorityMap)) { $activityFieldsList['taskpriority'] = $priorityMap[$priorityval]; } } $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->setData($activityFieldsList); $recordModel->set('assigned_user_id', $userId); $skipRecord = false; foreach ($requiredFields[$module] as $key) { $value = $recordModel->get($key); if (empty($value)) { $skipCount[$module]++; $skipRecord = true; break; } } if ($skipRecord === true) { continue; } $recordModel->save(); $lastImport = new iCalLastImport(); $lastImport->setFields(array('userid' => $userId, 'entitytype' => $todoModule, 'crmid' => $recordModel->getId())); $lastImport->save(); if (!empty($icalActivities[$i]['VALARM'])) { $recordModel->setActivityReminder(0, '', ''); } } $importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule]; $importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule]; $viewer->assign('SUCCESS_EVENTS', $importedEvents); $viewer->assign('SKIPPED_EVENTS', $skipCount[$eventModule]); $viewer->assign('SUCCESS_TASKS', $importedTasks); $viewer->assign('SKIPPED_TASKS', $skipCount[$todoModule]); } else { $viewer->assign('ERROR_MESSAGE', $request->get('error_message')); } $viewer->assign('MODULE', $moduleName); $viewer->assign('VIEW', 'List'); $viewer->view('ImportResult.tpl', $moduleName); }
function uploadAndParse(Vtiger_Request $request) { if (Import_Utils_Helper::validateFileUpload($request)) { $moduleName = $request->getModule(); $user = Users_Record_Model::getCurrentUserModel(); $fileReader = Import_Utils_Helper::getFileReader($request, $user); if ($fileReader == null) { $request->set('error_message', vtranslate('LBL_INVALID_FILE', 'Import')); $this->importBasicStep($request); exit; } $hasHeader = $fileReader->hasHeader(); $rowData = $fileReader->getFirstRowData($hasHeader); $viewer = $this->getViewer($request); $autoMerge = $request->get('auto_merge'); if (!$autoMerge) { $request->set('merge_type', 0); $request->set('merge_fields', ''); } else { $viewer->assign('MERGE_FIELDS', Zend_Json::encode($request->get('merge_fields'))); } $moduleName = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $moduleMeta = $moduleModel->getModuleMeta(); $viewer->assign('DATE_FORMAT', $user->date_format); $viewer->assign('FOR_MODULE', $moduleName); $viewer->assign('MODULE', 'Import'); $viewer->assign('HAS_HEADER', $hasHeader); $viewer->assign('ROW_1_DATA', $rowData); $viewer->assign('USER_INPUT', $request); $viewer->assign('AVAILABLE_FIELDS', $moduleMeta->getImportableFields($moduleName)); $viewer->assign('ENCODED_MANDATORY_FIELDS', Zend_Json::encode($moduleMeta->getMandatoryFields($moduleName))); $viewer->assign('SAVED_MAPS', Import_Map_Model::getAllByModule($moduleName)); $viewer->assign('USERS_LIST', Import_Utils_Helper::getAssignedToUserList($moduleName)); $viewer->assign('GROUPS_LIST', Import_Utils_Helper::getAssignedToGroupList($moduleName)); return $viewer->view('ImportAdvanced.tpl', 'Import'); } else { $this->importBasicStep($request); } }