Beispiel #1
0
 public function process(Vtiger_Request $request)
 {
     $recordModel = $this->saveRecord($request);
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $recordFieldValue = $recordModel->get($fieldName);
         if (is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') {
             $recordFieldValue = implode(' |##| ', $recordFieldValue);
         }
         if (is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'sharedOwner') {
             $recordFieldValue = implode(',', $recordFieldValue);
         }
         $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue);
         if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') {
             $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId());
         }
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue);
     }
     //Handling salutation type
     if ($request->get('field') === 'firstname' && in_array($request->getModule(), array('Contacts'))) {
         $salutationType = $recordModel->getDisplayValue('salutationtype');
         $firstNameDetails = $result['firstname'];
         $firstNameDetails['display_value'] = $salutationType . " " . $firstNameDetails['display_value'];
         if ($salutationType != '--None--') {
             $result['firstname'] = $firstNameDetails;
         }
     }
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #2
0
 public function process(Vtiger_Request $request)
 {
     $mode = $request->get('mode');
     if (!empty($mode)) {
         $this->invokeExposedMethod($mode, $request);
         return;
     }
     $recordModel = $this->saveRecord($request);
     $settingsModuleModel = Settings_Users_Module_Model::getInstance();
     $settingsModuleModel->refreshSwitchUsers();
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordModel->get($fieldName));
         if ($fieldModel->getFieldDataType() !== 'currency') {
             $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId());
         }
         if ($fieldName == 'language') {
             $displayValue = Vtiger_Language_Handler::getLanguageLabel($fieldValue);
         }
         if (($fieldName == 'currency_decimal_separator' || $fieldName == 'currency_grouping_separator') && $displayValue == ' ') {
             $displayValue = vtranslate('LBL_SPACE', 'Users');
         }
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue);
     }
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #3
0
 public function process(Vtiger_Request $request)
 {
     $mode = $request->get('mode');
     if (!empty($mode)) {
         $this->invokeExposedMethod($mode, $request);
         return;
     }
     $recordModel = $this->saveRecord($request);
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordModel->get($fieldName));
         if ($fieldModel->getFieldDataType() !== 'currency') {
             $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId());
         }
         if ($fieldName == 'language') {
             $displayValue = Vtiger_Language_Handler::getLanguageLabel($fieldValue);
         }
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue);
     }
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #4
0
    public function process(Vtiger_Request $request) {
        $db = PearDatabase::getInstance();
        $db->pquery("DELETE FROM vtiger_vgsdupdect WHERE vgsdupdectid=?", array($request->get('record_id')));

        $response = new Vtiger_Response();
        $response->setEmitType(Vtiger_Response::$EMIT_JSON);
        $response->setResult(array('caption' => vtranslate('JS_DELETED_SUCCESSFULLY_FOR', 'VGSDuplicateDetector')));
        $response->emit();
    }
 /**
  * Function to get Module custom numbering data
  * @param Vtiger_Request $request
  */
 public function getModuleCustomNumberingData(Vtiger_Request $request)
 {
     $sourceModule = $request->get('sourceModule');
     $moduleModel = Settings_Vtiger_CustomRecordNumberingModule_Model::getInstance($sourceModule);
     $moduleData = $moduleModel->getModuleCustomNumberingData();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($moduleData);
     $response->emit();
 }
 /**
  * Function to get Module custom numbering data
  * @param Vtiger_Request $request
  */
 public function getModuleCustomNumberingData(Vtiger_Request $request)
 {
     $sourceModule = $request->get('sourceModule');
     $moduleModel = Settings_Vtiger_CustomRecordNumberingModule_Model::getInstance($sourceModule);
     // SalesPlatform.ru begin: Added separate numbering for self organizations
     $moduleData = $moduleModel->getModuleCustomNumberingData($request->get('spCompany'));
     //$moduleData = $moduleModel->getModuleCustomNumberingData();
     // SalesPlatform.ru end
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($moduleData);
     $response->emit();
 }
Beispiel #7
0
 function process($request)
 {
     $pbxmanagerController = new PBXManager_PBXManager_Controller();
     $connector = $pbxmanagerController->getConnector();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     if ($this->validateRequest($connector->getVtigerSecretKey(), $request)) {
         $crmUserExtension = $this->getCrmUserExtension($request->get('callerNumber'));
         $response->setResult(array('crmUserExtension' => $crmUserExtension));
     } else {
         $response->setError(400, 'Invalid request params');
     }
     $response->emit();
 }
Beispiel #8
0
 public function process(Vtiger_Request $request)
 {
     global $log, $adb, $moduleName;
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $request->set('assigned_user_id', $currentUserModel->getId());
     $request->set('userid', $currentUserModel->getId());
     $recordModel = $this->saveRecord($request);
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $recordModel->get($fieldName);
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $fieldModel->getDisplayValue($fieldValue));
     }
     $result['id'] = $recordModel->getId();
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     //modify by jmangarret 11jun2015 Enviar email
     $idCaso = $request->get("related_to");
     $userid = $request->get("userid");
     $comment = $request->get("commentcontent");
     $query = $adb->pquery("select smcreatorid, smownerid from vtiger_crmentity where setype='HelpDesk' and crmid = ? ", array($idCaso));
     $row = $adb->fetchByAssoc($query);
     $idowner = $row['smownerid'];
     $idcreator = $row['smcreatorid'];
     if ($userid == $idowner) {
         $userid = $idcreator;
     } else {
         $userid = $idowner;
     }
     $query = $adb->pquery("select * from vtiger_troubletickets where ticketid = ? ", array($idCaso));
     $row = $adb->fetchByAssoc($query);
     $title = $row['title'];
     //Para Validar si es un comentario de un caso
     $ticket = $row['ticket_no'];
     //Para Validar si es un comentario de un caso
     if ($title && $idowner != $idcreator) {
         $query = $adb->pquery("select * from vtiger_users where id = ? ", array($userid));
         $row = $adb->fetchByAssoc($query);
         $email = $row["email1"];
         $nombre = $row["first_name"];
         $asunto = "Informacion";
         $mensaje = " \n\t\t\t\t<html> \n\t\t\t\t<head> \n\t\t\t\t<title>Info - Tu Agencia 24</title> \n\t\t\t\t</head> \n\t\t\t\t<body> \n\t\t\t\t<p>" . $nombre . ",</p>\n\t\t\t\t<p>El siguiente caso ha sido comentado:</p>\n\t\t\t\t<p><b>Nro. Ticket: </b>" . $ticket . "</p>\n\t\t\t\t<p><b>Caso: </b>" . $title . "</p>\n\t\t\t\t<p><b>Comentario: </b>" . $comment . "</p>\n\t\t\t\t<BR><BR><BR>\n\t\t\t\t<i>\n\t\t\t\tGracias,\t\t\n\t\t\t\t<p>Equipo TuAgencia24.com</p>\n\t\t\t\t</i>\n\t\t\t\t</body> \n\t\t\t\t</html> ";
         enviarEmail($email, $asunto, $mensaje);
     }
     //Fin enviar email
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #9
0
 /**
  * Function returns the number of records for the current filter
  * @param Vtiger_Request $request
  */
 function getRecordsCount(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $cvId = $request->get('viewname');
     $count = $this->getListViewCount($request);
     $result = array();
     $result['module'] = $moduleName;
     $result['viewname'] = $cvId;
     $result['count'] = $count;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #10
0
 public function deleteRule(Vtiger_Request $request)
 {
     $forModule = $request->get('for_module');
     $ruleId = $request->get('record');
     $moduleModel = Settings_SharingAccess_Module_Model::getInstance($forModule);
     $ruleModel = Settings_SharingAccess_Rule_Model::getInstance($moduleModel, $ruleId);
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     try {
         $ruleModel->delete();
     } catch (AppException $e) {
         $response->setError('Deleting Sharing Access Rule failed');
     }
     $response->emit();
 }
Beispiel #11
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $recordId = $request->get('record');
     $parentRoleId = $request->get('parent_roleid');
     $parentRole = Settings_Roles_Record_Model::getInstanceById($parentRoleId);
     $recordModel = Settings_Roles_Record_Model::getInstanceById($recordId);
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     try {
         $recordModel->moveTo($parentRole);
     } catch (AppException $e) {
         $response->setError('Move Role Failed');
     }
     $response->emit();
 }
Beispiel #12
0
 public function process(Vtiger_Request $request)
 {
     $db = PearDatabase::getInstance();
     //result array to send as json response
     $result = array();
     $moduleName = $request->getModule();
     $moduleModel = Settings_GravityForm_Module_Model::getInstance($moduleName);
     $moduleModel->set('url', $request->get('url'));
     $moduleModel->set('api_key', $request->get('api_key'));
     $moduleModel->set('private_key', $request->get('private_key'));
     $moduleModel->save_config($request);
     $result['success'] = true;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #13
0
 public function process(Vtiger_Request $request)
 {
     $modulePermissions = $request->get('permissions');
     $modulePermissions[4] = $modulePermissions[6];
     foreach ($modulePermissions as $tabId => $permission) {
         $moduleModel = Settings_SharingAccess_Module_Model::getInstance($tabId);
         $moduleModel->set('permission', $permission);
         try {
             $moduleModel->save();
         } catch (AppException $e) {
         }
     }
     Settings_SharingAccess_Module_Model::recalculateSharingRules();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->emit();
 }
Beispiel #14
0
 protected function sendResponse($success, $callId)
 {
     $response = new Vtiger_Response();
     if ($success) {
         $response->setResult(array('success' => true, 'callId' => $callId));
     } else {
         $response->setResult(array('success' => false, 'callId' => $callId));
     }
     // Support JSONP
     if (!empty($_REQUEST['callback'])) {
         $callback = vtlib_purify($_REQUEST['callback']);
         $response->setEmitType('4');
         $response->setEmitJSONP($callback);
         $response->emit();
     } else {
         $response->emit();
     }
 }
Beispiel #15
0
 /**
  * Function to get related Records count from this relation
  * @param <Vtiger_Request> $request
  * @return <Number> Number of record from this relation
  */
 public function getRecordsCount(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $relatedModuleName = $request->get('relatedModule');
     $parentId = $request->get('record');
     $label = $request->get('tab_label');
     $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentId, $moduleName);
     $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $label);
     $count = $relationListView->getRelatedEntriesCount();
     $result = array();
     $result['module'] = $moduleName;
     $result['viewname'] = $cvId;
     $result['count'] = $count;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #16
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $request->set('assigned_user_id', $currentUserModel->getId());
     $request->set('userid', $currentUserModel->getId());
     $this->saveRecord($request);
     $recordModel = ModComments_Record_Model::getInstanceById($recordId);
     $result['success'] = true;
     $result['reasontoedit'] = $recordModel->get('reasontoedit');
     $result['commentcontent'] = $recordModel->get('commentcontent');
     $result['modifiedtime'] = Vtiger_Util_Helper::formatDateDiffInStrings($recordModel->get('modifiedtime'));
     $result['modifiedtimetitle'] = Vtiger_Util_Helper::formatDateTimeIntoDayString($recordModel->get('modifiedtime'));
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #17
0
 public function process(Vtiger_Request $request)
 {
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $request->set('assigned_user_id', $currentUserModel->getId());
     $request->set('userid', $currentUserModel->getId());
     $recordModel = $this->saveRecord($request);
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = $recordModel->get($fieldName);
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $fieldModel->getDisplayValue($fieldValue));
     }
     $result['id'] = $recordModel->getId();
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #18
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $currentUserModel = Users_Record_Model::getCurrentUserModel();
     $request->set('assigned_user_id', $currentUserModel->getId());
     $request->set('userid', $currentUserModel->getId());
     $recordModel = $this->saveRecord($request);
     $responseFieldsToSent = array('reasontoedit', 'commentcontent');
     $fieldModelList = $recordModel->getModule()->getFields();
     foreach ($responseFieldsToSent as $fieldName) {
         $fieldModel = $fieldModelList[$fieldName];
         $fieldValue = $recordModel->get($fieldName);
         $result[$fieldName] = $fieldModel->getDisplayValue(Vtiger_Util_Helper::toSafeHTML($fieldValue));
     }
     $result['success'] = true;
     $result['modifiedtime'] = Vtiger_Util_Helper::formatDateDiffInStrings($recordModel->get('modifiedtime'));
     $result['modifiedtimetitle'] = Vtiger_Util_Helper::formatDateTimeIntoDayString($recordModel->get('modifiedtime'));
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #19
0
 public function process(Vtiger_Request $request)
 {
     $tablePrefix = 'vtiger_';
     $unique_keyword = $request->get('unique_keyword');
     $sourceModule = $request->getForSql('source_module');
     $record = $request->getForSql('record');
     $feildName = $request->getForSql('field_name');
     $moduleName = $tablePrefix . $sourceModule;
     $db = PearDatabase::getInstance();
     $ExcludeSql = empty($record) || $record == 'null' ? '' : " AND " . $this->getKeyField($sourceModule) . " != " . $record;
     $sql = "SELECT {$feildName} FROM {$moduleName} WHERE {$feildName} = '" . $unique_keyword . "'" . $ExcludeSql;
     $result = $db->query($sql);
     $result = $db->num_rows($result);
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     if (!$result) {
         $response->setResult(array('success' => true, 'message' => vtranslate('LBL_RECORD_NONE')));
     } else {
         //存在重复记录
         $response->setResult(array('success' => false, 'message' => vtranslate('LBL_RECORD_EXIST')));
     }
     $response->emit();
 }
Beispiel #20
0
 public function process(Vtiger_Request $request)
 {
     if (isset($_SESSION['authenticated_user_id'])) {
         $user_id = $_SESSION['authenticated_user_id'];
     }
     $fieldValue = $request->get('fieldValue');
     $companyName = $request->get('companyName');
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     if (isset($user_id) && !empty($companyName) && '已独占' == $fieldValue) {
         $db = PearDatabase::getInstance();
         $sql = "SELECT leadid FROM vtiger_leaddetails WHERE company LIKE '%{$companyName}%' limit 1";
         $result = $db->query($sql);
         $data = $db->fetch_array($result);
         if (!empty($data['leadid'])) {
             $sql = "SELECT id FROM vtiger_lead_exclusives WHERE leadid={$data['leadid']} AND userid != {$user_id}";
             $result = $db->query($sql);
             $data = $db->fetch_array($result);
             if (!empty($data['id'])) {
                 $response->setResult(array('success' => false, 'message' => 'repeat'));
                 $response->emit();
                 exit;
             }
         }
     }
     if (isset($user_id)) {
         $result = GetExclusiveCounts($_SESSION['authenticated_user_id']);
     } else {
         $result = false;
     }
     if ($result !== false) {
         $response->setResult(array('success' => true, 'message' => $result));
     } else {
         $response->setResult(array('success' => false, 'message' => vtranslate('LBL_PLEASE_LOGIN')));
     }
     $response->emit();
 }
Beispiel #21
0
 /**
  * Function returns the number of records for the current filter
  * @param Vtiger_Request $request
  */
 function getRecordsCount(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $sourceModule = $request->get('sourceModule');
     $listViewModel = RecycleBin_ListView_Model::getInstance($moduleName, $sourceModule);
     $count = $listViewModel->getListViewCount();
     $result = array();
     $result['module'] = $moduleName;
     $result['count'] = $count;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #22
0
 function process(Vtiger_Request $request)
 {
     vglobal('log', LoggerManager::getLogger('System'));
     Vtiger_Session::init();
     $forceSSL = vglobal('forceSSL');
     if ($forceSSL && !Vtiger_Functions::getBrowserInfo()->https) {
         header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
     }
     // Better place this here as session get initiated
     //skipping the csrf checking for the forgot(reset) password
     $csrfProtection = vglobal('csrfProtection');
     if ($csrfProtection) {
         if ($request->get('mode') != 'reset' && $request->get('action') != 'Login') {
             require_once 'libraries/csrf-magic/csrf-magic.php';
         }
         require_once 'config/csrf_config.php';
     }
     // TODO - Get rid of global variable $current_user
     // common utils api called, depend on this variable right now
     $currentUser = $this->getLogin();
     vglobal('current_user', $currentUser);
     $currentLanguage = Vtiger_Language_Handler::getLanguage();
     vglobal('current_language', $currentLanguage);
     $module = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     if ($currentUser && $qualifiedModuleName) {
         $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage, $qualifiedModuleName);
         vglobal('mod_strings', $moduleLanguageStrings['languageStrings']);
     }
     if ($currentUser) {
         $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage);
         vglobal('app_strings', $moduleLanguageStrings['languageStrings']);
     }
     $view = $request->get('view');
     $action = $request->get('action');
     $response = false;
     try {
         if ($this->isInstalled() === false && $module != 'Install') {
             header('Location:install/Install.php');
             exit;
         }
         if (empty($module)) {
             if ($this->hasLogin()) {
                 $defaultModule = vglobal('default_module');
                 if (!empty($defaultModule) && $defaultModule != 'Home') {
                     $module = $defaultModule;
                     $qualifiedModuleName = $defaultModule;
                     $view = 'List';
                     if ($module == 'Calendar') {
                         // To load MyCalendar instead of list view for calendar
                         //TODO: see if it has to enhanced and get the default view from module model
                         $view = 'Calendar';
                     }
                 } else {
                     $module = 'Home';
                     $qualifiedModuleName = 'Home';
                     $view = 'DashBoard';
                 }
             } else {
                 $module = 'Users';
                 $qualifiedModuleName = 'Settings:Users';
                 $view = 'Login';
             }
             $request->set('module', $module);
             $request->set('view', $view);
         }
         if (!empty($action)) {
             $componentType = 'Action';
             $componentName = $action;
         } else {
             $componentType = 'View';
             if (empty($view)) {
                 $view = 'Index';
             }
             $componentName = $view;
         }
         $handlerClass = Vtiger_Loader::getComponentClassName($componentType, $componentName, $qualifiedModuleName);
         $handler = new $handlerClass();
         if ($handler) {
             vglobal('currentModule', $module);
             $csrfProtection = vglobal('csrfProtection');
             if ($csrfProtection) {
                 // Ensure handler validates the request
                 $handler->validateRequest($request);
             }
             if ($handler->loginRequired()) {
                 $this->checkLogin($request);
             }
             //TODO : Need to review the design as there can potential security threat
             $skipList = array('Users', 'Home', 'CustomView', 'Import', 'Export', 'Inventory', 'Vtiger', 'PriceBooks', 'Migration', 'Install');
             if (!in_array($module, $skipList) && stripos($qualifiedModuleName, 'Settings') === false) {
                 $this->triggerCheckPermission($handler, $request);
             }
             // Every settings page handler should implement this method
             if (stripos($qualifiedModuleName, 'Settings') === 0 || $module == 'Users') {
                 $handler->checkPermission($request);
             }
             $notPermittedModules = array('ModComments', 'Integration', 'DashBoard');
             if (in_array($module, $notPermittedModules) && $view == 'List') {
                 header('Location:index.php?module=Home&view=DashBoard');
             }
             $this->triggerPreProcess($handler, $request);
             $response = $handler->process($request);
             $this->triggerPostProcess($handler, $request);
         } else {
             throw new AppException(vtranslate('LBL_HANDLER_NOT_FOUND'));
         }
     } catch (Exception $e) {
         if ($view) {
             // Log for developement.
             error_log($e->getTraceAsString(), E_NOTICE);
             Vtiger_Functions::throwNewException($e->getMessage());
         } else {
             $response = new Vtiger_Response();
             $response->setEmitType(Vtiger_Response::$EMIT_JSON);
             $response->setError($e->getMessage());
             //Vtiger_Functions::throwNewException($e->getMessage());
         }
     }
     if ($response) {
         $response->emit();
     }
 }
 /**
  * Function returns the number of records for the current filter
  * @param Vtiger_Request $request
  */
 function getRecordsCount(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $duplicateSearchFields = $request->get('fields');
     $dataModelInstance = Vtiger_FindDuplicate_Model::getInstance($moduleName);
     $ignoreEmpty = $request->get('ignoreEmpty');
     $ignoreEmptyValue = false;
     if ($ignoreEmpty == 'on' || $ignoreEmpty == 'true' || $ignoreEmpty == '1') {
         $ignoreEmptyValue = true;
     }
     $dataModelInstance->set('ignoreEmpty', $ignoreEmptyValue);
     $dataModelInstance->set('fields', $duplicateSearchFields);
     $count = $dataModelInstance->getRecordCount();
     $result = array();
     $result['module'] = $moduleName;
     $result['count'] = $count;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #24
0
 static function throwNewException($message)
 {
     $request = new Vtiger_Request($_REQUEST);
     if ($request->isAjax()) {
         $response = new Vtiger_Response();
         $response->setEmitType(Vtiger_Response::$EMIT_JSON);
         $response->setError($message);
         $response->emit();
     } else {
         $viewer = new Vtiger_Viewer();
         $viewer->assign('MESSAGE', $message);
         $text = $viewer->view('OperationNotPermitted.tpl', 'Vtiger', true);
         die($text);
     }
 }
Beispiel #25
0
 public function process(Vtiger_Request $request)
 {
     $user = Users_Record_Model::getCurrentUserModel();
     $allDay = $request->get('allday');
     if ('on' == $allDay) {
         $request->set('time_start', NULL);
         $request->set('time_end', NULL);
     }
     $recordModel = $this->saveRecord($request);
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $fieldValue = Vtiger_Util_Helper::toSafeHTML($recordModel->get($fieldName));
         $result[$fieldName] = array();
         if ($fieldName == 'date_start') {
             $timeStart = $recordModel->get('time_start');
             $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart);
             $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
             $dateTimeComponents = explode(' ', $userDateTimeString);
             $dateComponent = $dateTimeComponents[0];
             //Conveting the date format in to Y-m-d . since full calendar expects in the same format
             $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format'));
             $result[$fieldName]['value'] = $fieldValue;
             $result[$fieldName]['display_value'] = $dataBaseDateFormatedString;
         } else {
             if ($fieldName == 'due_date') {
                 $timeEnd = $recordModel->get('time_end');
                 $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd);
                 $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
                 $dateTimeComponents = explode(' ', $userDateTimeString);
                 $dateComponent = $dateTimeComponents[0];
                 //Conveting the date format in to Y-m-d . since full calendar expects in the same format
                 $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format'));
                 $result[$fieldName]['value'] = $fieldValue;
                 $result[$fieldName]['display_value'] = $dataBaseDateFormatedString;
             } else {
                 if ($fieldName == 'time_end') {
                     $dueDate = $recordModel->get('due_date');
                     $dateTimeFieldInstance = new DateTimeField($dueDate . ' ' . $fieldValue);
                     $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
                     $dateTimeComponents = explode(' ', $userDateTimeString);
                     $result[$fieldName]['value'] = $fieldValue;
                     $result[$fieldName]['display_value'] = $dateTimeComponents[1];
                 } else {
                     if ($fieldName == 'time_start') {
                         $startDate = $recordModel->get('date_start');
                         $dateTimeFieldInstance = new DateTimeField($startDate . ' ' . $fieldValue);
                         $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue();
                         $dateTimeComponents = explode(' ', $userDateTimeString);
                         $result[$fieldName]['value'] = $fieldValue;
                         $result[$fieldName]['display_value'] = $dateTimeComponents[1];
                     } else {
                         if ('time_start' != $fieldName && 'time_end' != $fieldName && 'duration_hours' != $fieldName) {
                             $result[$fieldName]['value'] = $fieldValue;
                             $result[$fieldName]['display_value'] = decode_html($fieldModel->getDisplayValue($fieldValue));
                         } else {
                             $result[$fieldName]['value'] = $result[$fieldName]['display_value'] = $fieldValue;
                         }
                     }
                 }
             }
         }
     }
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     // Handled to save follow up event
     $followupMode = $request->get('followup');
     if ($followupMode == 'on') {
         //Start Date and Time values
         $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start'));
         $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime);
         list($startDate, $startTime) = explode(' ', $startDateTime);
         $subject = $request->get('subject');
         if ($startTime != '' && $startDate != '') {
             $recordModel->set('eventstatus', 'Planned');
             $recordModel->set('subject', '[Followup] ' . $subject);
             $recordModel->set('date_start', $startDate);
             $recordModel->set('time_start', $startTime);
             $currentUser = Users_Record_Model::getCurrentUserModel();
             $activityType = $recordModel->get('activitytype');
             if ($activityType == 'Call') {
                 $minutes = $currentUser->get('callduration');
             } else {
                 $minutes = $currentUser->get('othereventduration');
             }
             $dueDateTime = date('Y-m-d H:i:s', strtotime("{$startDateTime}+{$minutes} minutes"));
             list($endDate, $endTime) = explode(' ', $dueDateTime);
             $recordModel->set('due_date', $endDate);
             $recordModel->set('time_end', $endTime);
             $recordModel->set('mode', 'create');
             $recordModel->save();
         }
     }
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #26
0
 public function process(Vtiger_Request $request)
 {
     $db = PearDatabase::getInstance();
     $log = vglobal('log');
     $log->debug('Starting Quick Edit OSSPasswords');
     // czy to 'password'????
     $isPassword = $request->get('field') == 'password' ? true : false;
     // check if password was added thrue related module view
     $isRelatedPassword = $request->get('password') != '' && $request->get('password') != '**********' ? true : false;
     // check if encryption is enabled
     $config == false;
     if (file_exists('modules/OSSPasswords/config.ini.php')) {
         $config = parse_ini_file('modules/OSSPasswords/config.ini.php');
     }
     // force updateing password
     if ($isPassword) {
         $recordId = $request->get('record');
         $properPassword = $isPassword ? $request->get('value') : '**********';
         $log->debug('recordid: ' . $recordId . ' properpass:'******'**********') == 0) {
             $log->debug('Hidden password...');
             if ($config) {
                 // when encryption is on
                 $log->debug('Get encrypted password.');
                 $sql = "SELECT AES_DECRYPT(`password`, '" . $config['key'] . "') AS pass FROM `vtiger_osspasswords` WHERE `osspasswordsid` = ?;";
                 $result = $db->pquery($sql, array($recordId), true);
                 $properPassword = $db->query_result($result, 0, 'pass');
             } else {
                 // encryption mode is off
                 $log->debug('Get plain text password.');
                 $sql = "SELECT `password` AS pass FROM `vtiger_osspasswords` WHERE `osspasswordsid` = ?;";
                 $result = $db->pquery($sql, array($recordId), true);
                 $properPassword = $db->query_result($result, 0, 'pass');
                 $log->debug('Plain text pass: '******'value', $properPassword);
     }
     $recordModel = $this->saveRecord($request);
     // apply encryption if encryption mode is on
     if ($isPassword && $config) {
         $log->debug('Encrypt new password: '******'key'], $recordId), true);
     } else {
         if ($isRelatedPassword && $config) {
             $record = $recordModel->getId();
             $properPassword = $request->get('password');
             $log->debug('Encrypt new related module password: '******'key'], $record), true);
         }
     }
     $fieldModelList = $recordModel->getModule()->getFields();
     $result = array();
     foreach ($fieldModelList as $fieldName => $fieldModel) {
         $recordFieldValue = $recordModel->get($fieldName);
         if (is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') {
             $recordFieldValue = implode(' |##| ', $recordFieldValue);
         }
         $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue);
         if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'time' && $fieldModel->getFieldDataType() !== 'date') {
             $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId());
         }
         $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue);
     }
     // Handling salutation type
     if ($request->get('field') === 'firstname' && in_array($request->getModule(), array('Contacts', 'Leads'))) {
         $salutationType = $recordModel->getDisplayValue('salutationtype');
         $firstNameDetails = $result['firstname'];
         $firstNameDetails['display_value'] = $salutationType . " " . $firstNameDetails['display_value'];
         if ($salutationType != '--None--') {
             $result['firstname'] = $firstNameDetails;
         }
     }
     $result['_recordLabel'] = $recordModel->getName();
     $result['_recordId'] = $recordModel->getId();
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #27
0
 function process(Vtiger_Request $request)
 {
     Vtiger_Session::init();
     // Better place this here as session get initiated
     //skipping the csrf checking for the forgot(reset) password
     if ($request->get('mode') != 'reset' && $request->get('action') != 'Login') {
         require_once 'libraries/csrf-magic/csrf-magic.php';
     }
     // TODO - Get rid of global variable $current_user
     // common utils api called, depend on this variable right now
     $currentUser = $this->getLogin();
     vglobal('current_user', $currentUser);
     global $default_language;
     vglobal('default_language', $default_language);
     $currentLanguage = Vtiger_Language_Handler::getLanguage();
     vglobal('current_language', $currentLanguage);
     $module = $request->getModule();
     $qualifiedModuleName = $request->getModule(false);
     if ($currentUser && $qualifiedModuleName) {
         $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage, $qualifiedModuleName);
         vglobal('mod_strings', $moduleLanguageStrings['languageStrings']);
     }
     if ($currentUser) {
         $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage);
         vglobal('app_strings', $moduleLanguageStrings['languageStrings']);
     }
     $view = $request->get('view');
     $action = $request->get('action');
     $response = false;
     try {
         if ($this->isInstalled() === false && $module != 'Install') {
             header('Location:index.php?module=Install&view=Index');
             exit;
         }
         if (empty($module)) {
             if ($this->hasLogin()) {
                 $defaultModule = vglobal('default_module');
                 if (!empty($defaultModule) && $defaultModule != 'Home') {
                     $module = $defaultModule;
                     $qualifiedModuleName = $defaultModule;
                     $view = 'List';
                     if ($module == 'Calendar') {
                         // To load MyCalendar instead of list view for calendar
                         //TODO: see if it has to enhanced and get the default view from module model
                         $view = 'Calendar';
                     }
                 } else {
                     $module = 'Home';
                     $qualifiedModuleName = 'Home';
                     $view = 'DashBoard';
                 }
             } else {
                 $module = 'Users';
                 $qualifiedModuleName = 'Settings:Users';
                 $view = 'Login';
             }
             $request->set('module', $module);
             $request->set('view', $view);
         }
         if (!empty($action)) {
             $componentType = 'Action';
             $componentName = $action;
         } else {
             $componentType = 'View';
             if (empty($view)) {
                 $view = 'Index';
             }
             $componentName = $view;
         }
         $handlerClass = Vtiger_Loader::getComponentClassName($componentType, $componentName, $qualifiedModuleName);
         $handler = new $handlerClass();
         if ($handler) {
             vglobal('currentModule', $module);
             // Ensure handler validates the request
             $handler->validateRequest($request);
             if ($handler->loginRequired()) {
                 $this->checkLogin($request);
             }
             //TODO : Need to review the design as there can potential security threat
             $skipList = array('Users', 'Home', 'CustomView', 'Import', 'Export', 'Inventory', 'Vtiger', 'PriceBooks', 'Migration', 'Install');
             if (!in_array($module, $skipList) && stripos($qualifiedModuleName, 'Settings') === false) {
                 $this->triggerCheckPermission($handler, $request);
             }
             // Every settings page handler should implement this method
             if (stripos($qualifiedModuleName, 'Settings') === 0 || $module == 'Users') {
                 $handler->checkPermission($request);
             }
             $notPermittedModules = array('ModComments', 'Integration', 'DashBoard');
             if (in_array($module, $notPermittedModules) && $view == 'List') {
                 header('Location:index.php?module=Home&view=DashBoard');
             }
             $this->triggerPreProcess($handler, $request);
             /** EventHandler START */
             list($handler, $request) = EventHandler_Module_Model::do_filter(array("vtiger.filter.process." . strtolower($module . '.' . $componentName . "." . $componentType) . ".before", "vtiger.filter.process." . strtolower($componentName . "." . $componentType) . ".before"), array($handler, $request));
             /** EventHandler ENDE */
             $response = $handler->process($request);
             /** EventHandler START */
             list($handler, $request) = EventHandler_Module_Model::do_filter(array("vtiger.filter.process." . strtolower($module . '.' . $componentName . "." . $componentType) . ".after", "vtiger.filter.process." . strtolower($componentName . "." . $componentType) . ".after"), array($handler, $request));
             /** EventHandler ENDE */
             $this->triggerPostProcess($handler, $request);
         } else {
             throw new AppException(vtranslate('LBL_HANDLER_NOT_FOUND'));
         }
     } catch (Exception $e) {
         if ($view) {
             // Log for developement.
             error_log($e->getTraceAsString(), E_NOTICE);
             $viewer = new Vtiger_Viewer();
             $viewer->assign('MESSAGE', $e->getMessage());
             $viewer->view('OperationNotPermitted.tpl', 'Vtiger');
         } else {
             $response = new Vtiger_Response();
             $response->setEmitType(Vtiger_Response::$EMIT_JSON);
             $response->setError($e->getMessage());
         }
     }
     /** EventHandler START */
     EventHandler_Module_Model::do_action("vtiger.process.finish", array($module, $componentName, $componentType));
     EventHandler_Module_Model::do_action("vtiger.process." . strtolower($module . '.' . $componentName . "." . $componentType) . ".finish", array($module, $componentName, $componentType));
     /** EventHandler ENDE */
     if ($response) {
         $response->emit();
     }
 }
Beispiel #28
0
 public static function throwNoPermittedException($message, $die = true)
 {
     $request = new Vtiger_Request($_REQUEST);
     $db = PearDatabase::getInstance();
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $db->insert('s_yf_accesstorecord', ['username' => $currentUser->getDisplayName(), 'date' => date('Y-m-d H:i:s'), 'ip' => self::getRemoteIP(), 'record' => $request->get('record'), 'module' => $request->get('module'), 'url' => Vtiger_Functions::getBrowserInfo()->url, 'description' => '', 'agent' => $_SERVER['HTTP_USER_AGENT']]);
     if ($request->isAjax()) {
         $response = new Vtiger_Response();
         $response->setEmitType(Vtiger_Response::$EMIT_JSON);
         $response->setError($message);
         $response->emit();
     } else {
         $viewer = new Vtiger_Viewer();
         $viewer->assign('MESSAGE', $message);
         $viewer->view('NoPermissionsForRecord.tpl', 'Vtiger');
     }
     if ($die) {
         exit;
     }
 }
 /**
  * Function returns the number of records for the current filter
  * @param Vtiger_Request $request
  */
 function getRecordsCount(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $duplicateSearchFields = $request->get('fields');
     $dataModelInstance = Vtiger_FindDuplicate_Model::getInstance($moduleName);
     $dataModelInstance->set('fields', $duplicateSearchFields);
     $count = $dataModelInstance->getRecordCount();
     $result = array();
     $result['module'] = $moduleName;
     $result['count'] = $count;
     $response = new Vtiger_Response();
     $response->setEmitType(Vtiger_Response::$EMIT_JSON);
     $response->setResult($result);
     $response->emit();
 }
Beispiel #30
0
 public static function throwNewException($message, $die = true, $tpl = 'OperationNotPermitted.tpl')
 {
     $request = new Vtiger_Request($_REQUEST);
     if ($request->isAjax()) {
         $response = new Vtiger_Response();
         $response->setEmitType(Vtiger_Response::$EMIT_JSON);
         $response->setError($message);
         $response->emit();
     } else {
         $viewer = new Vtiger_Viewer();
         $viewer->assign('MESSAGE', $message);
         $viewer->view($tpl, 'Vtiger');
     }
     if ($die) {
         exit;
     }
 }