private function _processFieldFilter() { $class = $this->_getSearchClass(); $classFieldsConfig = $class::stGetFieldsConfig(); if (!is_array($this->filters)) { // TODO error return false; } foreach ($this->filters as $filter => &$value) { // Si todavia no es un array ponemos el operador por defecto if (!is_array($value)) { $value = array("=", $value); } else { // Si es un array pero de un elemento suponemos que es el valor a buscar, no debería ser así pero lo admitimos porque puede ser cómodo if (count($value) == 1) { $value = array("=", $value[0]); } if (!in_array($value[0], $this->operators)) { LogsErrors::stCreate(array("errorCode" => ObjectPersistentSearch::ERROR_CODE_INVALID_OPERATOR, "object" => $this, "degree" => "fatal", "param" => $filter, "value" => $value[0])); return false; } } if (!in_array($filter, array_keys($classFieldsConfig))) { LogsErrors::stCreate(array("errorCode" => ObjectPersistentSearch::ERROR_CODE_INVALID_FILTER, "object" => $this, "degree" => "fatal", "value" => $filter)); return false; } } return true; }
private function _validateParams() { // Comprobamos los parametros que nos han pasado son válidos foreach (array_intersect(array_keys($this->params), array_keys($this->objFields)) as $param) { if (!$this->getFieldDTObj($param) || !$this->getFieldDTObj($param)->isValidValue($this->params[$param])) { LogsErrors::stCreate(array("errorCode" => ObjectConfigurable::ERROR_CODE_PARAM_IS_NOT_VALID, "object" => $this, "degree" => "fatal", "param" => $param, "value" => $this->params[$param])); } } }
protected function _getResponse() { $callableMethod = $this->_getCallableMethod(); if ($callableMethod === array()) { return array(); } list($class, $func) = $callableMethod; $params = $this->_getFunctionParams($class, $func); if (!$params) { LogsErrors::stCreate(array("errorCode" => APIRESTResponseJSONPage::ERROR_CODE_INVALID_FUNCTION_PARAM, "function" => "_getFunctionParams")); return array(); } $res = call_user_func_array($callableMethod, array_values($params)); return array("response" => $res, "class" => $class, "function" => $func); }
protected function _getCallableMethod() { $class = LoadInit::stGetClassCaseInsensitive($this->object); $func = $this->function; $obj = $class::stVirtualConstructor(); // Permitimos que no pasen la funcion tan cual if (!method_exists($obj, $func)) { $func = "st" . ucfirst($this->function); } if (!method_exists($obj, $func)) { LogsErrors::stCreate(array("errorCode" => APIRESTResponseJSONPage::ERROR_CODE_INVALID_FUNCTION_PARAM, "function" => "_getFunctionParams")); return array(); } return array($class, $func); }
static function stCreate($params) { // Para ello no se debe de llamar NUNCA a DBObject::stCreate si no con la clase del objeto a crear $class = get_called_class(); $createParams = ObjectPersistent::stGetValidCreateParams($class); $invalidParams = array_diff(array_keys($params), $createParams); if (count($invalidParams) !== 0) { LogsErrors::stCreate(array("errorCode" => 0, "param" => implode(",", $invalidParams))); return false; } if (!ObjectPersistent::stIsValidParamsValues($class, $params)) { // TODO warning y crear error return false; } return static::_stCreate($params); }
static function stLogin($userName, $password) { $password = sha1($password); $filters = array("userName" => array($userName)); $user = UserSearch::stVirtualConstructor(array("filters" => $filters, "limit" => 1))->getResult(); if (!$user) { LogsErrors::stCreate(array("errorCode" => User::ERROR_CODE_USER_NOT_EXISTS, "param" => "userName", "value" => $userName)); return false; } if ($user["password"] != $password) { LogsErrors::stCreate(array("errorCode" => User::ERROR_CODE_PASSWORD_NOT_MATCH, "param" => "password")); return false; } $token = sha1($password . time()); if (!HTTPSession::stCreate(array("userName" => $userName, "password" => $password, "token" => $token))) { return false; } return array("token" => $token); }
static function stCreate($params) { return LogsErrors::stVirtualConstructor($params); }