function process(Mobile_API_Request $request) { $response = new Mobile_API_Response(); $username = $request->get('username'); $password = $request->get('password'); $current_user = CRMEntity::getInstance('Users'); $current_user->column_fields['user_name'] = $username; if (vtlib_isModuleActive('Mobile') === false) { $response->setError(1501, 'Service not available'); return $response; } if (!$current_user->doLogin($password)) { $response->setError(1210, 'Authentication Failed'); } else { // Start session now $sessionid = Mobile_API_Session::init(); if ($sessionid === false) { echo "Session init failed {$sessionid}\n"; } $current_user->id = $current_user->retrieve_user_id($username); $current_user->retrieveCurrentUserInfoFromFile($current_user->id); $this->setActiveUser($current_user); $result = array(); $result['login'] = array('userid' => $current_user->id, 'crm_tz' => DateTimeField::getDBTimeZone(), 'user_tz' => $current_user->time_zone, 'user_currency' => $current_user->currency_code, 'session' => $sessionid, 'vtiger_version' => Mobile_WS_Utils::getVtigerVersion(), 'date_format' => $current_user->date_format, 'mobile_module_version' => Mobile_WS_Utils::getVersion()); $response->setResult($result); $this->postProcess($response); } return $response; }
function process(Mobile_API_Request $request) { $response = new Mobile_API_Response(); $username = $request->get('username'); $password = $request->get('password'); $current_user = CRMEntity::getInstance('Users'); $current_user->column_fields['user_name'] = $username; if (vtlib_isModuleActive('Mobile') === false) { $response->setError(1501, 'Service not available'); return $response; } if (!$current_user->load_user($password) || !$current_user->authenticated) { global $mod_strings; $response->setError(1210, $mod_strings['ERR_INVALID_PASSWORD']); } else { // Start session now $sessionid = Mobile_API_Session::init(); if ($sessionid === false) { echo "Session init failed {$sessionid}\n"; } include_once 'config.php'; global $application_unique_key; $current_user->id = $current_user->retrieve_user_id($username); $this->setActiveUser($current_user); $_SESSION["authenticated_user_id"] = $current_user->id; $_SESSION["app_unique_key"] = $application_unique_key; $result = array(); $result['login'] = array('userid' => $current_user->id, 'crm_tz' => DateTimeField::getDBTimeZone(), 'user_tz' => $current_user->time_zone, 'session' => $sessionid, 'language' => $current_user->language, 'vtiger_version' => Mobile_WS_Utils::getVtigerVersion(), 'mobile_module_version' => Mobile_WS_Utils::getVersion()); $response->setResult($result); $this->postProcess($response); } return $response; }
static function process(Mobile_API_Request $request) { $operation = $request->getOperation(); $sessionid = HTTP_Session::detectId(); //$request->getSession(); if (empty($operation)) { $operation = 'login'; } $response = false; if (isset(self::$opControllers[$operation])) { $operationFile = self::$opControllers[$operation]['file']; $operationClass = self::$opControllers[$operation]['class']; include_once dirname(__FILE__) . $operationFile; $operationController = new $operationClass(); $operationSession = false; if ($operationController->requireLogin()) { $operationSession = Mobile_API_Session::init($sessionid); if ($operationController->hasActiveUser() === false) { $operationSession = false; } //Mobile_WS_Utils::initAppGlobals(); } else { // By-pass login $operationSession = true; } if ($operationSession === false) { $response = new Mobile_API_Response(); $response->setError(1501, 'Login required'); } else { try { $response = $operationController->process($request); } catch (Exception $e) { $response = new Mobile_API_Response(); $response->setError($e->getCode(), $e->getMessage()); } } } else { $response = new Mobile_API_Response(); $response->setError(1404, 'Operation not found: ' . $operation); } if ($response !== false) { if ($response->hasError()) { include_once dirname(__FILE__) . '/ui/Error.php'; $errorController = new Mobile_UI_Error(); $errorController->setError($response->getError()); echo $errorController->process($request)->emitHTML(); } else { echo $response->emitHTML(); } } }
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; }
function sessionSet($key, $value) { Mobile_API_Session::set($key, $value); }
function process(Mobile_API_Request $request) { if ($request->get('username') == '') { $response = new Mobile_API_Response(); $response->setError(1501, 'Login required'); } else { global $displayed_modules, $current_language, $current_user, $mod_strings, $app_strings; $username = $request->get('username'); $current_user = CRMEntity::getInstance('Users'); $userid = $current_user->retrieve_user_id($username); $current_user = $current_user->retrieveCurrentUserInfoFromFile($userid); $language = $current_user->language; $CRM_Version = Mobile::config('crm_version'); if ($CRM_Version != '5.2.1') { //for v5.3.0 use User's Settings if ($language != '') { $current_language = $language; } else { $current_language = 'en_us'; } } else { //for v5.2.1 use default language global $adb; $queryResult = $adb->pquery("SELECT prefix FROM vtiger_language WHERE isdefault =1", array()); $current_language = $adb->query_result($queryResult, 0, 'prefix'); } //set $app_strings Mobile_WS_Utils::initAppGlobals(); $wsResponse = parent::process($request); $response = false; if ($wsResponse->hasError()) { $response = $wsResponse; } else { $wsResponseResult = $wsResponse->getResult(); //fill cache $modules = Mobile_UI_ModuleModel::buildModelsFromResponse($wsResponseResult['modules']); $this->cacheModules($modules); Mobile_API_Session::set('language', $current_language); include dirname(__FILE__) . '/../language/' . $current_language . '.lang.php'; //remove Events from module list display function filter_by_value($array, $index, $value) { if (is_array($array) && count($array) > 0) { foreach (array_keys($array) as $key) { $temp[$key] = $array[$key][$index]; if ($temp[$key] == $value) { $newarray[$key] = $array[$key]; } } } return $newarray; } $eventarray = filter_by_value($wsResponseResult['modules'], 'name', 'Events'); $eventkey = array_keys($eventarray); unset($modules[$eventkey[0]]); $viewer = new Mobile_UI_Viewer(); $viewer->assign('_MODULES', $modules); $viewer->assign('MOD', $mod_strings); //reserved for future use: list modules for global search $viewer->assign('SEARCHIN', implode(",", $displayed_modules)); $response = $viewer->process('generic/Home.tpl'); } } return $response; }
function initController($className, $handlerPath, $user) { include_once dirname(__FILE__) . "/{$handlerPath}"; $this->controller = new $className(); Mobile_API_Session::init(session_id()); $this->controller->initActiveUser($user); return $this->controller; }