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);
 }
Exemple #2
0
 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++;
 }
Exemple #4
0
 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');
}
Exemple #6
0
 /**
  * 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;
 }
Exemple #8
0
 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;
     }
 }
Exemple #9
0
 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);
 }