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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
/** * 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(); }
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(); }
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(); }
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(); }
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(); }
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(); } }
/** * 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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
/** * 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(); }
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(); }
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); } }
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(); }
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(); }
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(); } }
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(); }
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; } }