/** * 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); }
public function process(Vtiger_Request $request) { $moduleName = $request->getModule(); $ics = $request->get('ics') . '.ics'; $icsUrl = 'cache/import/' . $ics; if (file_exists($icsUrl)) { $currentUserModel = Users_Record_Model::getCurrentUserModel(); $userId = $currentUserModel->getId(); $lastImport = new iCalLastImport(); $lastImport->clearRecords($userId); $eventModule = 'Events'; $todoModule = 'Calendar'; $skipFields = array($eventModule => array('duration_hours'), $todoModule => array('eventstatus')); $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($ics); $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; } } $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, '', ''); } } $return = 'LBL_IMPORT_ICS_ERROR_NO_RECORD'; $importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule]; $importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule]; if ($importedEvents > 0 || $importedTasks > 0) { $return = 'LBL_IMPORT_ICS_SUCCESS'; } @unlink($icsUrl); } else { $return = 'LBL_IMPORT_ICS_ERROR_NO_RECORD'; } $response = new Vtiger_Response(); $response->setResult(vtranslate($return, $moduleName)); $response->emit(); }
$required_fields[$module] = array_diff($val, $skip_fields[$module]); } $ical = new iCal(); $ical_activities = $ical->iCalReader($binFile); $count['Events'] = $count['Calendar'] = $skip_count['Events'] = $skip_count['Calendar'] = 0; for ($i = 0; $i < count($ical_activities); $i++) { if ($ical_activities[$i]['TYPE'] == 'VEVENT') { $activity = new iCalendar_event(); $module = 'Events'; } else { $activity = new iCalendar_todo(); $module = 'Calendar'; } $count[$module]++; $calendar = CRMEntity::getInstance('Calendar'); $calendar->column_fields = $activity->generateArray($ical_activities[$i]); $calendar->column_fields['assigned_user_id'] = $current_user->id; foreach ($required_fields[$module] as $key) { if (empty($calendar->column_fields[$key])) { $skip_count[$module]++; break; } } $calendar->save('Calendar'); $last_import = new UsersLastImport(); $last_import->assigned_user_id = $current_user->id; $last_import->bean_type = 'Calendar'; $last_import->bean_id = $calendar->id; $last_import->save(); if (!empty($ical_activities[$i]['VALARM'])) { $calendar->activity_reminder($calendar->id, $calendar->column_fields['reminder_time'], 0, '', '');