function save_module() { global $adb; //in ajax save we should not call this function, because this will delete all the existing product values if ($_REQUEST['action'] != 'QuotesAjax' && $_REQUEST['ajxaction'] != 'DETAILVIEW' && $_REQUEST['action'] != 'MassEditSave' && $_REQUEST['action'] != 'ProcessDuplicates' && $_REQUEST['action'] != 'SaveAjax' && $this->isLineItemUpdate != false) { //Based on the total Number of rows we will save the product relationship with this entity saveInventoryProductDetails($this, 'Quotes'); } // Update the currency id and the conversion rate for the quotes $update_query = "update vtiger_quotes set currency_id=?, conversion_rate=? where quoteid=?"; $update_params = array($this->column_fields['currency_id'], $this->column_fields['conversion_rate'], $this->id); $adb->pquery($update_query, $update_params); $tot_no_prod = $_REQUEST['totalProductCount']; $calculationList = array(); for ($i = 1; $i <= $tot_no_prod; $i++) { $calculationsid = vtlib_purify($_REQUEST['calculationId' . $i]); $calculationsid_old = vtlib_purify($_REQUEST['old_calculationId' . $i]); if ($calculationsid_old != '' && !in_array($calculationsid_old, $calculationList) && $calculationsid != $calculationsid_old) { $this->delete_related_module('Quotes', $this->id, 'Calculations', $calculationsid_old); } if ($calculationsid != '') { $calculationList[] = $calculationsid; $this->save_related_module('Quotes', $this->id, 'Calculations', $calculationsid); } } }
public function requestForgotPassword($request) { $request = new Vtiger_Request($request); $adb = PearDatabase::getInstance(); $username = vtlib_purify($request->get('user_name')); $result = $adb->pquery('select id,email1 from vtiger_users where user_name = ? ', array($username)); if ($adb->num_rows($result) > 0) { $email = $adb->query_result($result, 0, 'email1'); } if (strcasecmp($request->get('emailId'), $email) === 0) { $userId = $adb->query_result($result, 0, 'id'); $time = time(); $options = array('handler_path' => 'modules/Users/handlers/ForgotPassword.php', 'handler_class' => 'Users_ForgotPassword_Handler', 'handler_function' => 'changePassword', 'handler_data' => array('username' => $username, 'email' => $email, 'time' => $time, 'hash' => md5($username . $time))); $trackURL = Vtiger_ShortURL_Helper::generateURL($options); $data = ['sysname' => 'UsersForgotPassword', 'to_email' => $email, 'module' => 'Users', 'record' => $userId, 'trackURL' => $trackURL]; $recordModel = Vtiger_Record_Model::getCleanInstance('OSSMailTemplates'); $status = $recordModel->sendMailFromTemplate($data); $site_URL = vglobal('site_URL') . 'index.php?modules=Users&view=Login'; if ($status === 1) { header('Location: ' . $site_URL . '&status=1'); } else { header('Location: ' . $site_URL . '&statusError=1'); } } else { $site_URL = vglobal('site_URL') . 'index.php?modules=Users&view=Login'; header('Location: ' . $site_URL . '&fpError=1'); } }
function vtDeleteWorkflow($adb, $request) { $util = new VTWorkflowUtils(); $module = new VTWorkflowApplication("deltetask"); $mod = return_module_language($current_language, $module->name); if (!$util->checkAdminAccess()) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NOT_ADMIN']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NOT_ADMIN']); return; } $wm = new VTTaskManager($adb); $wm->deleteTask($request['task_id']); if (isset($request["return_url"])) { $returnUrl = vtlib_purify($request["return_url"]); } else { $returnUrl = $module->editWorkflowUrl($wf->id); } ?> <script type="text/javascript" charset="utf-8"> window.location="<?php echo $returnUrl; ?> "; </script> <a href="<?php echo $returnUrl; ?> ">Return</a> <?php }
function RBSearch($module) { global $log; $log->debug("Entering RBSearch(" . $module . ") method ..."); $url_string = ''; if (isset($_REQUEST['search_field']) && $_REQUEST['search_field'] != "") { $search_column = vtlib_purify($_REQUEST['search_field']); } if (isset($_REQUEST['search_text']) && $_REQUEST['search_text'] != "") { $search_string = $_REQUEST['search_text']; } if (isset($_REQUEST['searchtype']) && $_REQUEST['searchtype'] != "") { $search_type = vtlib_purify($_REQUEST['searchtype']); if ($search_type == "BasicSearch") { $where = basicRBsearch($module, $search_column, $search_string); } else { } $url_string = "&search_field=" . $search_column . "&search_text=" . $search_string . "&searchtype=BasicSearch"; if (isset($_REQUEST['type']) && $_REQUEST['type'] != '') { $url_string .= "&type=" . vtlib_purify($_REQUEST['type']); } return $where . "#@@#" . $url_string; $log->debug("Exiting RBSearch method ..."); } }
/** * Function to get relation query for particular module with function name * @param <record> $recordId * @param <String> $functionName * @param Vtiger_Module_Model $relatedModule * @return <String> */ public function getRelationQuery($recordId, $functionName, $relatedModule, $relationModel = false) { if ($functionName === 'get_activities') { $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN {$userNameSql} ELSE vtiger_groups.groupname END AS user_name,\n\t\t\t\t\t\tvtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start,\n\t\t\t\t\t\tvtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility,\n\t\t\t\t\t\tCASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status\n\t\t\t\t\t\tFROM vtiger_activity\n\t\t\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid\n\t\t\t\t\t\tLEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid\n\t\t\t\t\t\tLEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid\n\t\t\t\t\t\t\tWHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.process = " . $recordId; $time = vtlib_purify($_REQUEST['time']); if ($time == 'current') { $query .= " AND ((vtiger_activity.activitytype='Task' and vtiger_activity.status not in ('Completed','Deferred'))\n\t\t\t\tOR (vtiger_activity.activitytype not in ('Emails','Task') and vtiger_activity.eventstatus not in ('','Held')))"; } if ($time == 'history') { $query .= " AND ((vtiger_activity.activitytype='Task' and vtiger_activity.status in ('Completed','Deferred'))\n\t\t\t\tOR (vtiger_activity.activitytype not in ('Emails','Task') and vtiger_activity.eventstatus in ('','Held')))"; } $relatedModuleName = $relatedModule->getName(); $query .= $this->getSpecificRelationQuery($relatedModuleName); $instance = CRMEntity::getInstance($relatedModuleName); $securityParameter = $instance->getUserAccessConditionsQuerySR($relatedModuleName); if ($securityParameter != '') { $sql .= $securityParameter; } } elseif ($functionName === 'get_mails' && $relatedModule->getName() == 'OSSMailView') { $query = OSSMailView_Record_Model::getMailsQuery($recordId, $relatedModule->getName()); } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationModel); } return $query; }
/** * Function to get relation query for particular module with function name * @param <record> $recordId * @param <String> $functionName * @param Vtiger_Module_Model $relatedModule * @return <String> */ public function getRelationQuery($recordId, $functionName, $relatedModule, $relationModel = false) { if ($functionName === 'get_activities') { $focus = CRMEntity::getInstance($this->getName()); $focus->id = $recordId; $entityIds = $focus->getRelatedContactsIds(); $entityIds[] = $recordId; $entityIds = implode(',', $entityIds); $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN {$userNameSql} ELSE vtiger_groups.groupname END AS user_name,\n\t\t\t\t\t\tvtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start,\n\t\t\t\t\t\tvtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, \n\t\t\t\t\t\tvtiger_activity.status AS status\n\t\t\t\t\t\tFROM vtiger_activity\n\t\t\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid\n\t\t\t\t\t\tLEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid\n\t\t\t\t\t\tLEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid\n\t\t\t\t\t\tWHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.link IN (" . $entityIds . ')'; $time = vtlib_purify($_REQUEST['time']); if ($time == 'current') { $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('current'); $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails') AND vtiger_activity.status IN ('" . implode("','", $stateActivityLabels) . "'))"; } if ($time == 'history') { $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('history'); $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails') AND vtiger_activity.status IN ('" . implode("','", $stateActivityLabels) . "'))"; } $relatedModuleName = $relatedModule->getName(); $query .= $this->getSpecificRelationQuery($relatedModuleName); $instance = CRMEntity::getInstance($relatedModuleName); $securityParameter = $instance->getUserAccessConditionsQuerySR($relatedModuleName, false, $recordId); if ($securityParameter != '') { $query .= $securityParameter; } // There could be more than one contact for an activity. $query .= ' GROUP BY vtiger_activity.activityid'; } elseif ($functionName === 'get_mails' && $relatedModule->getName() == 'OSSMailView') { $query = OSSMailView_Record_Model::getMailsQuery($recordId, $relatedModule->getName()); } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationModel); } return $query; }
/** * Process the request for Folder opertions * @global <type> $list_max_entries_per_page * @param MailManager_Request $request * @return MailManager_Response */ function process(MailManager_Request $request) { global $list_max_entries_per_page, $current_user; $response = new Vtiger_Response(); if ('open' == $request->getOperationArg()) { $q = $request->get('q'); $foldername = $request->get('_folder'); $type = $request->get('type'); $connector = $this->getConnector($foldername); $folder = $connector->folderInstance($foldername); if (empty($q)) { $connector->folderMails($folder, intval($request->get('_page', 0)), $list_max_entries_per_page); } else { if (empty($type)) { $type = 'ALL'; } if ($type == 'ON') { $dateFormat = $current_user->date_format; if ($dateFormat == 'mm-dd-yyyy') { $dateArray = explode('-', $q); $temp = $dateArray[0]; $dateArray[0] = $dateArray[1]; $dateArray[1] = $temp; $q = implode('-', $dateArray); } $query = date('d M Y', strtotime($q)); $q = '' . $type . ' "' . vtlib_purify($query) . '"'; } else { $q = '' . $type . ' "' . vtlib_purify($q) . '"'; } $connector->searchMails($q, $folder, intval($request->get('_page', 0)), $list_max_entries_per_page); } $folderList = $connector->getFolderList(); $viewer = $this->getViewer(); $viewer->assign('TYPE', $type); $viewer->assign('QUERY', $request->get('q')); $viewer->assign('FOLDER', $folder); $viewer->assign('FOLDERLIST', $folderList); $viewer->assign('SEARCHOPTIONS', self::getSearchOptions()); $viewer->assign("JS_DATEFORMAT", parse_calendardate(getTranslatedString('NTC_DATE_FORMAT'))); $response->setResult($viewer->fetch($this->getModuleTpl('FolderOpen.tpl'))); } elseif ('drafts' == $request->getOperationArg()) { $q = $request->get('q'); $type = $request->get('type'); $page = intval($request->get('_page', 0)); $connector = $this->getConnector('__vt_drafts'); $folder = $connector->folderInstance(); if (empty($q)) { $draftMails = $connector->getDrafts($page, $list_max_entries_per_page, $folder); } else { $draftMails = $connector->searchDraftMails($q, $type, $page, $list_max_entries_per_page, $folder); } $viewer = $this->getViewer(); $viewer->assign('MAILS', $draftMails); $viewer->assign('FOLDER', $folder); $viewer->assign('SEARCHOPTIONS', MailManager_DraftController::getSearchOptions()); $response->setResult($viewer->fetch($this->getModuleTpl('FolderDrafts.tpl'))); } return $response; }
/** function used to show the error message occured during import process * @param string $message - Error message to display in the screen, where the passed error message will be displayed in screen using Importerror.tpl file */ function show_error_import($message) { global $import_mod_strings; global $theme; global $log; global $mod_strings; global $app_strings; $theme_path = "themes/" . $theme . "/"; $image_path = $theme_path . "images/"; $log->info("Upload Error"); $smarty = new vtigerCRM_Smarty(); $smarty->assign("MOD", $mod_strings); $smarty->assign("APP", $app_strings); if (isset($_REQUEST['return_module'])) { $smarty->assign("RETURN_MODULE", vtlib_purify($_REQUEST['return_module'])); } if (isset($_REQUEST['return_action'])) { $smarty->assign("RETURN_ACTION", vtlib_purify($_REQUEST['return_action'])); } $smarty->assign("THEME", $theme); $category = getParenttab(); $smarty->assign("CATEGORY", $category); $smarty->assign("IMAGE_PATH", $image_path); $smarty->assign("PRINT_URL", "phprint.php?jt=" . session_id() . $GLOBALS['request_string']); $smarty->assign("MODULE", vtlib_purify($_REQUEST['module'])); $smarty->assign("MESSAGE", $message); $smarty->display('Importerror.tpl'); }
/** * Get key value (otherwise default value) */ function get($key, $defvalue = '') { $value = $defvalue; if (isset($this->valuemap[$key])) { $value = $this->valuemap[$key]; } if ($value === '' && isset($this->defaultmap[$key])) { $value = $this->defaultmap[$key]; } $isJSON = false; if (is_string($value)) { // NOTE: Zend_Json or json_decode gets confused with big-integers (when passed as string) // and convert them to ugly exponential format - to overcome this we are performin a pre-check if (strpos($value, "[") === 0 || strpos($value, "{") === 0) { $isJSON = true; } } if ($isJSON) { $oldValue = Zend_Json::$useBuiltinEncoderDecoder; Zend_Json::$useBuiltinEncoderDecoder = false; $decodeValue = Zend_Json::decode($value); if (isset($decodeValue)) { $value = $decodeValue; } Zend_Json::$useBuiltinEncoderDecoder = $oldValue; } //Handled for null because vtlib_purify returns empty string if (!empty($value)) { $value = vtlib_purify($value); } return $value; }
function process(Mobile_API_Request $request) { $mode = $request->get('mode'); $module = $this->cachedModule($request->get('module')); $searchIn = $this->cachedSearchFields($module->name()); if ($mode == 'update') { $searchIn = array(); foreach ($_REQUEST as $k => $v) { if (preg_match("/field_(.*)/i", $k, $m)) { $searchIn[] = vtlib_purify($m[1]); } } $this->cacheSearchFields($module->name(), $searchIn); header("Location: index.php?_operation=listModuleRecords&module={$module->name()}&mode=search"); exit; } $request->setDefault('record', "{$module->id()}x0"); $wsResponse = parent::process($request); $wsResponseResult = $wsResponse->getResult(); $templateRecord = Mobile_UI_ModuleRecordModel::buildModelFromResponse($wsResponseResult['record']); $viewer = new Mobile_UI_Viewer(); $viewer->assign('_MODULE', $module); $viewer->assign('_RECORD', $templateRecord); $viewer->assign('_SEARCHIN', $searchIn); $viewer->assign('_SEARCHIN_ALL', empty($searchIn)); $response = $viewer->process('generic/SearchConfig.tpl'); return $response; }
function vtSaveWorkflowTemplate($adb, $request) { $util = new VTWorkflowUtils(); $module = new VTWorkflowApplication("savetemplate"); $mod = return_module_language($current_language, $module->name); if (!$util->checkAdminAccess()) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NOT_ADMIN']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NOT_ADMIN']); return; } $title = vtlib_purifyForSql($request['title']); $workflowId = $request['workflow_id']; $wfs = new VTworkflowManager($adb); $workflow = $wfs->retrieve($workflowId); $tm = new VTWorkflowTemplateManager($adb); $tpl = $tm->newTemplate($title, $workflow); $tm->saveTemplate($tpl); $returnUrl = vtlib_purify($request['return_url']); ?> <script type="text/javascript" charset="utf-8"> window.location="<?php echo $returnUrl; ?> "; </script> <a href="<?php echo $returnUrl; ?> ">Return</a> <?php }
public function process(Vtiger_Request $request) { // SalesPlatform.ru begin require_once 'includes/SalesPlatform/NetIDNA/idna_convert.class.php'; // SalesPlatform.ru end $outgoingServerSettingsModel = Settings_Vtiger_Systems_Model::getInstanceFromServerType('email', 'OutgoingServer'); $loadDefaultSettings = $request->get('default'); if ($loadDefaultSettings == "true") { $outgoingServerSettingsModel->loadDefaultValues(); } else { $outgoingServerSettingsModel->setData($request->getAll()); } $response = new Vtiger_Response(); // SalesPlatform.ru begin $idn = new idna_convert(); $server_username = $idn->encode(vtlib_purify($request->get('server'))); $from_email_field = $idn->encode(vtlib_purify($request->get('from_email_field'))); $request->set('server_username', $server_username); $request->set('from_email_field', $from_email_field); // SalesPlatform.ru end try { $id = $outgoingServerSettingsModel->save($request); $data = $outgoingServerSettingsModel->getData(); $response->setResult($data); } catch (Exception $e) { $response->setError($e->getCode(), $e->getMessage()); } $response->emit(); }
function vtSaveTask($adb, $request) { $util = new VTWorkflowUtils(); $module = new VTWorkflowApplication("savetask"); $mod = return_module_language($current_language, $module->name); if (!$util->checkAdminAccess()) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NOT_ADMIN']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NOT_ADMIN']); return; } $tm = new VTTaskManager($adb); if (isset($request["task_id"])) { $task = $tm->retrieveTask($request["task_id"]); } else { $taskType = vtlib_purifyForSql($request["task_type"]); $workflowId = $request["workflow_id"]; $task = $tm->createTask($taskType, $workflowId); } $task->summary = $request["summary"]; if ($request["active"] == "true") { $task->active = true; } else { if ($request["active"] == "false") { $task->active = false; } } if (isset($request['check_select_date'])) { $trigger = array('days' => ($request['select_date_direction'] == 'after' ? 1 : -1) * (int) $request['select_date_days'], 'field' => $request['select_date_field']); $task->trigger = $trigger; } else { $task->trigger = null; } $fieldNames = $task->getFieldNames(); foreach ($fieldNames as $fieldName) { $task->{$fieldName} = $request[$fieldName]; if ($fieldName == 'calendar_repeat_limit_date') { $task->{$fieldName} = DateTimeField::convertToDBFormat($request[$fieldName]); } } $tm->saveTask($task); if (isset(vtlib_purify($request["return_url"]))) { $returnUrl = vtlib_purify($request["return_url"]); } else { $returnUrl = $module->editTaskUrl($task->id); } ?> <script type="text/javascript" charset="utf-8"> window.location="<?php echo $returnUrl; ?> "; </script> <a href="<?php echo $returnUrl; ?> ">Return</a> <?php }
function vtWorkflowSave($adb, $request) { $util = new VTWorkflowUtils(); $module = new VTWorkflowApplication("saveworkflow"); $mod = return_module_language($current_language, $module->name); $request = vtlib_purify($request); // this cleans all values of the array if (!$util->checkAdminAccess()) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NOT_ADMIN']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NOT_ADMIN']); return; } $description = from_html($request["description"]); $moduleName = $request["module_name"]; $conditions = $request["conditions"]; $taskId = $request["task_id"]; $saveType = $request["save_type"]; $executionCondition = $request['execution_condition']; $wm = new VTWorkflowManager($adb); if ($saveType == 'new') { $wf = $wm->newWorkflow($moduleName); $wf->description = $description; $wf->test = $conditions; $wf->taskId = $taskId; $wf->executionConditionAsLabel($executionCondition); $wm->save($wf); } else { if ($saveType == 'edit') { $wf = $wm->retrieve($request["workflow_id"]); $wf->description = $description; $wf->test = $conditions; $wf->taskId = $taskId; $wf->executionConditionAsLabel($executionCondition); $wm->save($wf); } else { throw new Exception(); } } if (isset($request["return_url"])) { $returnUrl = $request["return_url"]; } else { $returnUrl = $module->editWorkflowUrl($wf->id); } ?> <script type="text/javascript" charset="utf-8"> window.location="<?php echo $returnUrl; ?> "; </script> <a href="<?php echo $returnUrl; ?> ">Return</a> <?php }
function get($key, $defvalue = '', $purify = true) { if (isset($this->valuemap[$key])) { return $purify ? vtlib_purify($this->valuemap[$key]) : $this->valuemap[$key]; } if ($defvalue === '' && isset($this->defaultmap[$key])) { $defvalue = $this->defaultmap[$key]; } return $defvalue; }
function get($key, $defvalue = '') { $value = $defvalue; if (isset($this->valuemap[$key])) { $value = $this->valuemap[$key]; } if (!empty($value)) { $value = vtlib_purify($value); } return $value; }
function getFromContext($key, $purify = false) { if ($this->context) { $value = $this->context[$key]; if ($purify && !empty($value)) { $value = vtlib_purify($value); } return $value; } return false; }
function getString($key) { if (isset($this->valuemap[$key])) { $value = $this->valuemap[$key]; if (Zend_Json::decode($value) != null) { return $this->valuemap[$key]; } else { return vtlib_purify($this->valuemap[$key]); } } return ''; }
function vtWorkflowEdit($adb, $request, $requestUrl, $current_language, $app_strings) { global $theme; $util = new VTWorkflowUtils(); $image_path = "themes/{$theme}/images/"; $module = new VTWorkflowApplication("editworkflow"); $mod = return_module_language($current_language, $module->name); if (!$util->checkAdminAccess()) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NOT_ADMIN']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NOT_ADMIN']); return; } $smarty = new vtigerCRM_Smarty(); if ($request['source'] == 'from_template') { $tm = new VTWorkflowTemplateManager($adb); $template = $tm->retrieveTemplate($request['template_id']); $workflow = $tm->createWorkflow($template); } else { $wfs = new VTWorkflowManager($adb); if (isset($request["workflow_id"])) { $workflow = $wfs->retrieve($request["workflow_id"]); } else { $moduleName = $request["module_name"]; $workflow = $wfs->newWorkflow($moduleName); } } if ($workflow == null) { $errorUrl = $module->errorPageUrl($mod['LBL_ERROR_NO_WORKFLOW']); $util->redirectTo($errorUrl, $mod['LBL_ERROR_NO_WORKFLOW']); return; } $workflow->test = addslashes($workflow->test); $tm = new VTTaskManager($adb); $tasks = $tm->getTasksForWorkflow($workflow->id); $smarty->assign("tasks", $tasks); $taskTypes = $tm->getTaskTypes($workflow->moduleName); $smarty->assign("taskTypes", $taskTypes); $smarty->assign("newTaskReturnUrl", vtlib_purify($requestUrl)); $smarty->assign("returnUrl", vtlib_purify($request["return_url"])); $smarty->assign("APP", $app_strings); $smarty->assign("MOD", array_merge(return_module_language($current_language, 'Settings'), return_module_language($current_language, $module->name))); $smarty->assign("THEME", $theme); $smarty->assign("IMAGE_PATH", $image_path); $smarty->assign("MODULE_NAME", $module->label); $smarty->assign("PAGE_NAME", $mod['LBL_EDIT_WORKFLOW']); $smarty->assign("PAGE_TITLE", $mod['LBL_EDIT_WORKFLOW_TITLE']); $smarty->assign("workflow", $workflow); $smarty->assign("saveType", isset($workflow->id) ? "edit" : "new"); $smarty->assign("module", $module); $smarty->assign("WORKFLOW_TRIGGER_TYPES_HELP_LINK", WORKFLOW_TRIGGER_TYPES); $smarty->display("{$module->name}/EditWorkflow.tpl"); }
/** * Process the request for Folder opertions * @global <type> $list_max_entries_per_page * @param MailManager_Request $request * @return MailManager_Response */ function process(MailManager_Request $request) { global $list_max_entries_per_page; $response = new MailManager_Response(); if ('open' == $request->getOperationArg()) { $q = $request->get('q'); $foldername = $request->get('_folder'); $type = $request->get('type'); $connector = $this->getConnector($foldername); $folder = $connector->folderInstance($foldername); if (empty($q)) { $connector->folderMails($folder, intval($request->get('_page', 0)), $list_max_entries_per_page); } else { if (empty($type)) { $type = 'ALL'; } $q = '' . $type . ' "' . vtlib_purify($q) . '"'; $connector->searchMails($q, $folder, intval($request->get('_page', 0)), $list_max_entries_per_page); } $folderList = $connector->getFolderList(); $viewer = $this->getViewer(); $viewer->assign('TYPE', $type); $viewer->assign('QUERY', $request->get('q')); $viewer->assign('FOLDER', $folder); $viewer->assign('FOLDERLIST', $folderList); $viewer->assign('SEARCHOPTIONS', self::getSearchOptions()); $response->setResult($viewer->fetch($this->getModuleTpl('Folder.Open.tpl'))); } elseif ('drafts' == $request->getOperationArg()) { $q = $request->get('q'); $type = $request->get('type'); $page = intval($request->get('_page', 0)); $connector = $this->getConnector('__vt_drafts'); $folder = $connector->folderInstance(); if (empty($q)) { $draftMails = $connector->getDrafts($page, $list_max_entries_per_page, $folder); } else { $draftMails = $connector->searchDraftMails($q, $type, $page, $list_max_entries_per_page, $folder); } $viewer = $this->getViewer(); $viewer->assign('MAILS', $draftMails); $viewer->assign('FOLDER', $folder); $viewer->assign('SEARCHOPTIONS', MailManager_DraftController::getSearchOptions()); $response->setResult($viewer->fetch($this->getModuleTpl('Folder.Drafts.tpl'))); } return $response; }
function process(Mobile_API_Request $request) { $response = new Mobile_API_Response(); global $adb; global $current_language; $current_language = Mobile_API_Session::get('language'); //never trust an entry $sSearch = vtlib_purify($request->get('term')); $sResult = ""; $arrayName = array(); $ModuleArray = explode(',', vtlib_purify($request->get('relmodule'))); $ModuleLabels = array(); foreach ($ModuleArray as $Module) { $translatedModule = getTranslatedString($Module, 'Mobile'); $arrayName[$translatedModule] = array(); $moduleWSID = Mobile_WS_Utils::getEntityModuleWSId($Module); // get related module fields $query = "SELECT tablename,fieldname,entityidfield FROM vtiger_entityname WHERE modulename = ?"; $result = $adb->pquery($query, array($Module)); if (!$result or $adb->num_rows($result) == 0) { $response->setError(1407, 'Error: Could not fetch entity info'); return $response; } $tablename = $adb->query_result($result, 0, 'tablename'); $fieldname = $adb->query_result($result, 0, 'fieldname'); $entityidfield = $adb->query_result($result, 0, 'entityidfield'); $fieldname = explode(',', $fieldname); $fieldname = $fieldname[0]; //START DATABASE ACCOUNT SEARCH $minhaquery = "SELECT " . $fieldname . "," . $entityidfield . " FROM " . $tablename . " \n\t\t\t\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = " . $tablename . "." . $entityidfield . "\n\t\t\t\t\t\t\tWHERE deleted = 0 AND " . $fieldname . " LIKE ? ORDER BY " . $fieldname . ""; $params = $sSearch . "%"; $result = $adb->pquery($minhaquery, array($params)); if (!$result) { $response->setError(1408, 'Error: Could not fetch entity data'); return $response; } for ($i = 0; $i < $adb->num_rows($result); $i++) { $arrayName[$translatedModule][] = array($moduleWSID . 'x' . $adb->query_result($result, $i, $entityidfield), decode_html($adb->query_result($result, $i, $fieldname))); } } $sResult = $arrayName; $sResult = json_encode($sResult); $response->setResult($sResult); return $response; }
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(); } }
public function importUserModuleStep2(Vtiger_Request $request) { $viewer = $this->getViewer($request); $uploadDir = Settings_ModuleManager_Module_Model::getUploadDirectory(); $qualifiedModuleName = $request->getModule(false); $uploadFile = 'usermodule_' . time() . '.zip'; $uploadFileName = "{$uploadDir}/{$uploadFile}"; $error = ''; checkFileAccess($uploadDir); if (!move_uploaded_file($_FILES['moduleZip']['tmp_name'], $uploadFileName)) { $error = 'LBL_ERROR_MOVE_UPLOADED_FILE'; } else { $package = new Vtiger_Package(); $importModuleName = $package->getModuleNameFromZip($uploadFileName); $importModuleDepVtVersion = $package->getDependentVtigerVersion(); if ($importModuleName == null) { $error = $package->_errorText; checkFileAccessForDeletion($uploadFileName); unlink($uploadFileName); } else { // We need these information to push for Update if module is detected to be present. $moduleLicence = vtlib_purify($package->getLicense()); $viewer->assign('MODULEIMPORT_FILE', $uploadFile); $viewer->assign('MODULEIMPORT_TYPE', $package->type()); $viewer->assign('MODULEIMPORT_NAME', $importModuleName); $viewer->assign('MODULEIMPORT_PACKAGE', $package); $viewer->assign('MODULEIMPORT_DEP_VTVERSION', $importModuleDepVtVersion); $viewer->assign('MODULEIMPORT_LICENSE', $moduleLicence); $viewer->assign('MODULEIMPORT_PARAMETERS', $package->getParameters()); if (!$package->isLanguageType() && !$package->isUpdateType() && !$package->isModuleBundle()) { $moduleInstance = Vtiger_Module::getInstance($importModuleName); $moduleimport_exists = $moduleInstance ? "true" : "false"; $moduleimport_dir_name = "modules/{$importModuleName}"; $moduleimport_dir_exists = is_dir($moduleimport_dir_name) ? "true" : "false"; $viewer->assign('MODULEIMPORT_EXISTS', $moduleimport_exists); $viewer->assign('MODULEIMPORT_DIR', $moduleimport_dir_name); $viewer->assign('MODULEIMPORT_DIR_EXISTS', $moduleimport_dir_exists); } } } $viewer->assign('MODULEIMPORT_ERROR', $error); $viewer->view('ImportUserModuleStep2.tpl', $qualifiedModuleName); }
protected function sendResponse($url, $success = false, $failure = false) { if (empty($url)) { if ($success) { $response = Zend_Json::encode(array('success' => true, 'result' => $success)); } else { $response = Zend_Json::encode(array('success' => false, 'error' => array('message' => $failure))); } // Support JSONP if (!empty($_REQUEST['callback'])) { $callback = vtlib_purify($_REQUEST['callback']); echo sprintf("%s(%s)", $callback, $response); } else { echo $response; } } else { header(sprintf("Location: http://%s?%s=%s", $url, $success ? 'success' : 'error', $success ? $success : $failure)); } }
/** To get the customViewId of the specified module * @param $module -- The module Name:: Type String * @returns customViewId :: Type Integer */ function getViewId($module) { global $adb, $current_user; $now_action = vtlib_purify($_REQUEST['action']); if (isset($_REQUEST['viewname']) == false) { if (isset($_SESSION['lvs'][$module]["viewname"]) && $_SESSION['lvs'][$module]["viewname"] != '') { $viewid = $_SESSION['lvs'][$module]["viewname"]; } elseif ($this->setdefaultviewid != "") { $viewid = $this->setdefaultviewid; } else { $defcv_result = $adb->pquery("select default_cvid from vtiger_user_module_preferences where userid = ? and tabid =?", array($current_user->id, getTabid($module))); if ($adb->num_rows($defcv_result) > 0) { $viewid = $adb->query_result($defcv_result, 0, 'default_cvid'); } else { $query = "select cvid from vtiger_customview where setdefault=1 and entitytype=?"; $cvresult = $adb->pquery($query, array($module)); if ($adb->num_rows($cvresult) > 0) { $viewid = $adb->query_result($cvresult, 0, 'cvid'); } else { $viewid = ''; } } } if ($viewid == '' || $viewid == 0 || $this->isPermittedCustomView($viewid, $now_action, $module) != 'yes') { $query = "select cvid from vtiger_customview where viewname='All' and entitytype=?"; $cvresult = $adb->pquery($query, array($module)); $viewid = $adb->query_result($cvresult, 0, 'cvid'); } } else { $viewname = vtlib_purify($_REQUEST['viewname']); if (is_string($viewname) && strtolower($viewname) == 'all' || $viewname == 0) { $viewid = $this->getViewIdByName('All', $module); } else { $viewid = $viewname; } if ($this->isPermittedCustomView($viewid, $now_action, $this->customviewmodule) != 'yes') { $viewid = 0; } } $_SESSION['lvs'][$module]["viewname"] = $viewid; return $viewid; }
function insertIntoAttachment($entity) { global $adb, $current_user; $CRMEntity = new CRMEntity(); // en el objeto $entity tenemos toda la información relacionada con el registro que se esta guardando. // Esta linea debe de colocarse siempre para registrar en el Vtiger que ha sido llamada la función $entity->focus->called = true; $module = $entity->getModuleName(); /* El id devuelto por $entity->getId() esta en el formato 1xNNNN en donde NNNN es el ID (en este caso 1x es para el modulo de SalesOrder) * tomamos la parte que esta a al derecha de la "x" y ese es el correspondiente ID de pedido */ list($mod, $id) = split("x", $entity->getId()); foreach ($_FILES as $fileindex => $files) { //$old_attachmentid = $adb->query_result($adb->pquery("select vtiger_crmentity.crmid from vtiger_seattachmentsrel inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_seattachmentsrel.attachmentsid where vtiger_seattachmentsrel.crmid=?", array($id)),0,'crmid'); if ($files['name'][0] != '') { $files['original_name'] = vtlib_purify($_REQUEST[$fileindex . '_hidden']); $file_saved = $CRMEntity->uploadAndSaveFile($id, $module, $files); } } return true; }
/** * Function to get relation query for particular module with function name * @param <record> $recordId * @param <String> $functionName * @param Vtiger_Module_Model $relatedModule * @return <String> */ public function getRelationQuery($recordId, $functionName, $relatedModule, $relationModel = false) { if ($functionName === 'get_activities') { $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN $userNameSql ELSE vtiger_groups.groupname END AS user_name, vtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start, vtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, CASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status FROM vtiger_activity INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid WHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.process = " . $recordId; $time = vtlib_purify($_REQUEST['time']); if ($time == 'current') { $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('current'); $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails') AND vtiger_activity.status IN ('" . implode("','", $stateActivityLabels) . "'))"; } if ($time == 'history') { $stateActivityLabels = Calendar_Module_Model::getComponentActivityStateLabel('history'); $query .= " AND (vtiger_activity.activitytype NOT IN ('Emails') AND vtiger_activity.status IN ('" . implode("','", $stateActivityLabels) . "'))"; } $relatedModuleName = $relatedModule->getName(); $query .= $this->getSpecificRelationQuery($relatedModuleName); $instance = CRMEntity::getInstance($relatedModuleName); $securityParameter = $instance->getUserAccessConditionsQuerySR($relatedModuleName, false, $recordId); if ($securityParameter != '') $query .= $securityParameter; } elseif ($functionName === 'get_mails' && $relatedModule->getName() == 'OSSMailView') { $query = OSSMailView_Record_Model::getMailsQuery($recordId, $relatedModule->getName()); } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationModel); } return $query; }
function DelImage($id) { global $adb; $imgmod = vtlib_purify($_REQUEST['ImageModule']); if (empty($imgmod)) { $imgmod = 'Contacts'; } if ($imgmod == 'Contacts') { $imageattachment = 'Image'; } else { $imageattachment = 'Attachment'; } $aname = vtlib_purify($_REQUEST['attachmentname']); $query = "select vtiger_seattachmentsrel.attachmentsid\n\t from vtiger_seattachmentsrel\n\t inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_seattachmentsrel.attachmentsid\n\t inner join vtiger_attachments on vtiger_crmentity.crmid=vtiger_attachments.attachmentsid\n\t where vtiger_crmentity.setype='{$imgmod} {$imageattachment}'\n\t and vtiger_attachments.name=?\n\t and vtiger_seattachmentsrel.crmid=?"; $result = $adb->pquery($query, array($aname, $id)); if ($result and $adb->num_rows($result) == 1) { $attachmentsid = $adb->query_result($result, 0, "attachmentsid"); $rel_delquery = 'delete from vtiger_seattachmentsrel where crmid=? and attachmentsid=?'; $adb->pquery($rel_delquery, array($id, $attachmentsid)); $crm_delquery = "delete from vtiger_crmentity where crmid=?"; $adb->pquery($crm_delquery, array($attachmentsid)); $sql = 'SELECT tablename,columnname,fieldname FROM vtiger_field WHERE uitype=69 and vtiger_field.tabid = ? and fieldname = ?'; $tabid = getTabid($imgmod); $fname = vtlib_purify($_REQUEST['fieldname']); $result = $adb->pquery($sql, array($tabid, $fname)); if ($result and $adb->num_rows($result) == 1) { include_once "modules/{$imgmod}/{$imgmod}.php"; $crmmod = new $imgmod(); $tblname = $adb->query_result($result, $fnum, 'tablename'); $colname = $adb->query_result($result, $fnum, 'columnname'); $upd = "update {$tblname} set {$colname}='' where " . $crmmod->tab_name_index[$tblname] . '=?'; $adb->pquery($upd, array($id)); } } }
/** * Function to get relation query for particular module with function name * @param <record> $recordId * @param <String> $functionName * @param Vtiger_Module_Model $relatedModule * @return <String> */ public function getRelationQuery($recordId, $functionName, $relatedModule, $relationModel = false) { if ($functionName === 'get_activities') { $focus = CRMEntity::getInstance($this->getName()); $focus->id = $recordId; $entityIds = $focus->getRelatedContactsIds(); $entityIds[] = $recordId; $entityIds = implode(',', $entityIds); $userNameSql = getSqlForNameInDisplayFormat(array('first_name' => 'vtiger_users.first_name', 'last_name' => 'vtiger_users.last_name'), 'Users'); $query = "SELECT CASE WHEN (vtiger_users.user_name not like '') THEN {$userNameSql} ELSE vtiger_groups.groupname END AS user_name,\n\t\t\t\t\t\tvtiger_crmentity.*, vtiger_activity.activitytype, vtiger_activity.subject, vtiger_activity.date_start, vtiger_activity.time_start,\n\t\t\t\t\t\tvtiger_activity.recurringtype, vtiger_activity.due_date, vtiger_activity.time_end, vtiger_activity.visibility, \n\t\t\t\t\t\tCASE WHEN (vtiger_activity.activitytype = 'Task') THEN (vtiger_activity.status) ELSE (vtiger_activity.eventstatus) END AS status\n\t\t\t\t\t\tFROM vtiger_activity\n\t\t\t\t\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_activity.activityid\n\t\t\t\t\t\tLEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid\n\t\t\t\t\t\tLEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid\n\t\t\t\t\t\tWHERE vtiger_crmentity.deleted = 0 AND vtiger_activity.link IN (" . $entityIds . ')'; $time = vtlib_purify($_REQUEST['time']); if ($time == 'current') { $query .= " AND ((vtiger_activity.activitytype='Task' and vtiger_activity.status not in ('Completed','Deferred'))\n\t\t\t\tOR (vtiger_activity.activitytype not in ('Emails','Task') and vtiger_activity.eventstatus not in ('','Held')))"; } if ($time == 'history') { $query .= " AND ((vtiger_activity.activitytype='Task' and vtiger_activity.status in ('Completed','Deferred'))\n\t\t\t\tOR (vtiger_activity.activitytype not in ('Emails','Task') and vtiger_activity.eventstatus in ('','Held')))"; } $relatedModuleName = $relatedModule->getName(); $query .= $this->getSpecificRelationQuery($relatedModuleName); $instance = CRMEntity::getInstance($relatedModuleName); $securityParameter = $instance->getUserAccessConditionsQuerySR($relatedModuleName); if ($securityParameter != '') { $query .= $securityParameter; } // There could be more than one contact for an activity. $query .= ' GROUP BY vtiger_activity.activityid'; } elseif ($functionName === 'get_dependents_list' && $relatedModule->getName() == 'OutsourcedProducts') { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationModel); $query .= " OR potential IN (SELECT potentialid FROM vtiger_potential INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_potential.potentialid WHERE vtiger_crmentity.deleted = 0 AND related_to = '{$recordId}')"; } elseif ($functionName === 'get_mails' && $relatedModule->getName() == 'OSSMailView') { $query = OSSMailView_Record_Model::getMailsQuery($recordId, $relatedModule->getName()); } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationModel); } return $query; }
<?php /*+******************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *********************************************************************************/ require_once 'Smarty_setup.php'; global $mod_strings, $app_strings, $theme, $adb; $smarty = new vtigerCRM_Smarty(); $module = vtlib_purify($_REQUEST['formodule']); $menu_array = array(); $menu_array['CustomFields']['location'] = 'index.php?module=Settings&action=CustomFieldList&parenttab=Settings&formodule=' . $module; $menu_array['CustomFields']['image_src'] = vtiger_imageurl('orgshar.gif', $theme); $menu_array['CustomFields']['desc'] = getTranslatedString('LBL_USER_CUSTOMFIELDS_DESCRIPTION', 'Users'); $menu_array['CustomFields']['label'] = getTranslatedString('LBL_USER_CUSTOMFIELDS', 'Users'); //add blanks for 3-column layout $count = count($menu_array) % 3; if ($count > 0) { for ($i = 0; $i < 3 - $count; $i++) { $menu_array[] = array(); } } $smarty->assign("MOD", $mod_strings); $smarty->assign("APP", $app_strings); $smarty->assign("IMAGE_PATH", "themes/{$theme}/images/"); $smarty->assign('MODULE', $module); $smarty->assign('MODULE_LBL', getTranslatedString($module));