function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $source_module = $request->getModule(); $viewId = $request->get('viewname'); $selectedIds = $request->get('selected_ids'); $excludedIds = $request->get('excluded_ids'); $page = $request->get('page'); $viewer->assign('SELECTED_IDS', $selectedIds); $viewer->assign('EXCLUDED_IDS', $excludedIds); $viewer->assign('VIEWID', $viewId); $viewer->assign('PAGE', $page); $viewer->assign('SOURCE_MODULE', $source_module); $viewer->assign('MODULE', 'Export'); //SalesPlatform.ru add encoding and delimiter support $viewer->assign('SUPPORTED_FILE_ENCODING', Import_Utils_Helper::getSupportedFileEncoding()); $viewer->assign('SUPPORTED_DELIMITERS', Import_Utils_Helper::getSupportedDelimiters()); //SalesPlatform.ru end $searchKey = $request->get('search_key'); $searchValue = $request->get('search_value'); $operator = $request->get('operator'); if (!empty($operator)) { $viewer->assign('OPERATOR', $operator); $viewer->assign('ALPHABET_VALUE', $searchValue); $viewer->assign('SEARCH_KEY', $searchKey); } $viewer->assign('SEARCH_PARAMS', $request->get('search_params')); $viewer->view('Export.tpl', $source_module); }
public static function validateFileUpload($request) { $current_user = Users_Record_Model::getCurrentUserModel(); $uploadMaxSize = self::getMaxUploadSize(); $importDirectory = self::getImportDirectory(); $temporaryFileName = self::getImportFilePath($current_user); if ($_FILES['import_file']['error']) { $request->set('error_message', self::fileUploadErrorMessage($_FILES['import_file']['error'])); return false; } if (!is_uploaded_file($_FILES['import_file']['tmp_name'])) { $request->set('error_message', vtranslate('LBL_FILE_UPLOAD_FAILED', 'Import')); return false; } if ($_FILES['import_file']['size'] > $uploadMaxSize) { $request->set('error_message', vtranslate('LBL_IMPORT_ERROR_LARGE_FILE', 'Import') . $uploadMaxSize . ' ' . vtranslate('LBL_IMPORT_CHANGE_UPLOAD_SIZE', 'Import')); return false; } if (!is_writable($importDirectory)) { $request->set('error_message', vtranslate('LBL_IMPORT_DIRECTORY_NOT_WRITABLE', 'Import')); return false; } $fileCopied = move_uploaded_file($_FILES['import_file']['tmp_name'], $temporaryFileName); if (!$fileCopied) { $request->set('error_message', vtranslate('LBL_IMPORT_FILE_COPY_FAILED', 'Import')); return false; } $fileReader = Import_Utils_Helper::getFileReader($request, $current_user); if ($fileReader == null) { $request->set('error_message', vtranslate('LBL_INVALID_FILE', 'Import')); return false; } $hasHeader = $fileReader->hasHeader(); $firstRow = $fileReader->getFirstRowData($hasHeader); if ($firstRow === false) { $request->set('error_message', vtranslate('LBL_NO_ROWS_FOUND', 'Import')); return false; } return true; }
public function addRecordToDB($columnNames, $fieldValues) { $db = PearDatabase::getInstance(); $tableName = Import_Utils_Helper::getDbTableName($this->user); $db->pquery('INSERT INTO ' . $tableName . ' (' . implode(',', $columnNames) . ') VALUES (' . generateQuestionMarks($fieldValues) . ')', $fieldValues); $this->numberOfRecordsRead++; }
public static function getImportDetails($user) { $adb = PearDatabase::getInstance(); $tableName = Import_Utils_Helper::getDbTableName($user); $result = $adb->pquery("SELECT * FROM {$tableName} where status IN (?,?)", array(self::$IMPORT_RECORD_SKIPPED, self::$IMPORT_RECORD_FAILED)); $importRecords = array(); if ($result) { $headers = $adb->getColumnNames($tableName); $numOfHeaders = count($headers); for ($i = 0; $i < 10; $i++) { if ($i >= 3 && $i < $numOfHeaders) { $importRecords['headers'][] = $headers[$i]; } } $noOfRows = $adb->num_rows($result); for ($i = 0; $i < $noOfRows; ++$i) { $row = $adb->fetchByAssoc($result, $i); $record = new Vtiger_Base_Model(); foreach ($importRecords['headers'] as $header) { $record->set($header, $row[$header]); } if ($row['status'] == self::$IMPORT_RECORD_SKIPPED) { $importRecords['skipped'][] = $record; } else { $importRecords['failed'][] = $record; } } return $importRecords; } }
function undoLastImport($obj, $user) { $adb = PearDatabase::getInstance(); $moduleName = $obj->get('module'); $ownerId = $obj->get('foruser'); $owner = new Users(); $owner->id = $ownerId; $owner->retrieve_entity_info($ownerId, 'Users'); $dbTableName = Import_Utils_Helper::getDbTableName($owner); if (!is_admin($user) && $user->id != $owner->id) { $viewer = new Vtiger_Viewer(); $viewer->view('OperationNotPermitted.tpl', 'Vtiger'); exit; } $result = $adb->query("SELECT recordid FROM {$dbTableName} WHERE temp_status = " . Import_Data_Controller::$IMPORT_RECORD_CREATED . " AND recordid IS NOT NULL;"); $noOfRecords = $adb->num_rows($result); $noOfRecordsDeleted = 0; for ($i = 0; $i < $noOfRecords; ++$i) { $recordId = $adb->query_result($result, $i, 'recordid'); if (isRecordExists($recordId) && isPermitted($moduleName, 'Delete', $recordId) == 'yes') { $focus = CRMEntity::getInstance($moduleName); $focus->id = $recordId; $focus->trash($moduleName, $recordId); $noOfRecordsDeleted++; } } $viewer = new Vtiger_Viewer(); $viewer->assign('FOR_MODULE', $moduleName); $viewer->assign('TOTAL_RECORDS', $noOfRecords); $viewer->assign('DELETED_RECORDS_COUNT', $noOfRecordsDeleted); $viewer->view('ImportUndoResult.tpl'); }
/** * 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 getLastImportedRecord() { $db = PearDatabase::getInstance(); $user = Users_Record_Model::getCurrentUserModel(); $userDBTableName = Import_Utils_Helper::getDbTableName($user); $result = $db->pquery('SELECT recordid FROM ' . $userDBTableName . ' WHERE status NOT IN (?,?) AND recordid IS NOT NULL', array(Import_Data_Action::$IMPORT_RECORD_FAILED, Import_Data_Action::$IMPORT_RECORD_SKIPPED)); $noOfRecords = $db->num_rows($result); $importedRecordIds = array(); for ($i = 0; $i < $noOfRecords; ++$i) { $importedRecordIds[] = $db->query_result($result, $i, 'recordid'); } return $importedRecordIds; }
public function copyFromFileToDB() { $fileReader = Import_Utils_Helper::getFileReader($this->request, $this->user); $fileReader->read(); $fileReader->deleteFile(); if ($fileReader->getStatus() == 'success') { $this->numberOfRecords = $fileReader->getNumberOfRecordsRead(); return true; } else { Import_Utils_Helper::showErrorPage(vtranslate('ERR_FILE_READ_FAILED', 'Import') . ' - ' . vtranslate($fileReader->getErrorMessage(), 'Import')); return false; } }
function checkImportStatus(Vtiger_Request $request) { $moduleName = $request->getModule(); $user = Users_Record_Model::getCurrentUserModel(); $mode = $request->getMode(); // Check if import on the module is locked $lockInfo = Import_Lock_Action::isLockedForModule($moduleName); if ($lockInfo != null) { $lockedBy = $lockInfo['userid']; if ($user->id != $lockedBy && !$user->isAdminUser()) { Import_Utils_Helper::showImportLockedError($lockInfo); exit; } else { if ($mode == 'continueImport' && $user->id == $lockedBy) { $importController = new Import_Main_View($request, $user); $importController->triggerImport(true); } else { $importInfo = Import_Queue_Action::getImportInfoById($lockInfo['importid']); $lockOwner = $user; if ($user->id != $lockedBy) { $lockOwner = Users_Record_Model::getInstanceById($lockInfo['userid'], 'Users'); } Import_Main_View::showImportStatus($importInfo, $lockOwner); } exit; } } if (Import_Utils_Helper::isUserImportBlocked($user)) { $importInfo = Import_Queue_Action::getUserCurrentImportInfo($user); if ($importInfo != null) { Import_Main_View::showImportStatus($importInfo, $user); exit; } else { Import_Utils_Helper::showImportTableBlockedError($moduleName, $user); exit; } } Import_Utils_Helper::clearUserImportInfo($user); }