public function postQuery($callName, $input, $par = array()) { $par = DBJson::mysql_real_escape_string($par); $params = array(); extract($par, EXTR_OVERWRITE); $config = parse_ini_file(dirname(__FILE__) . '/config.ini', TRUE); $obj = $input; $answer = DBRequest::request2($obj->getRequest(), $obj->getCheckSession(), $config); $result = Model::isOK(); $result['content'] = array(); $res = array(); foreach ($answer as $query_result) { $obj = new Query(); if ($query_result['errno'] != 0) { if (isset($query_result['errno']) && $query_result['errno'] != 0) { Logger::Log('GET queryResult failed errno: ' . $query_result['errno'] . ' error: ' . $query_result['error'], LogLevel::ERROR); } if (!isset($query_result['content']) || !$query_result['content']) { Logger::Log('GET queryResult failed, no content', LogLevel::ERROR); } if (isset($query_result['errno']) && $query_result['errno'] == 401) { $result = Model::isRejected(); } else { $result = Model::isProblem(); } } elseif (gettype($query_result['content']) == 'boolean') { $obj->setResponse(array()); if (isset($query_result['affectedRows'])) { $obj->setAffectedRows($query_result['affectedRows']); } if (isset($query_result['insertId'])) { $obj->setInsertId($query_result['insertId']); } if (isset($query_result['errno'])) { $obj->setErrno($query_result['errno']); } if (isset($query_result['numRows'])) { $obj->setNumRows($query_result['numRows']); } if (isset($query_result['errno']) && $query_result['errno'] > 0) { $result = Model::isProblem(); } else { $result = Model::isCreated(); } } else { $data = array(); if (isset($query_result['numRows']) && $query_result['numRows'] > 0) { $data = $query_result['content']; } $obj->setResponse($data); if (isset($query_result['affectedRows'])) { $obj->setAffectedRows($query_result['affectedRows']); } if (isset($query_result['insertId'])) { $obj->setInsertId($query_result['insertId']); } if (isset($query_result['errno'])) { $obj->setErrno($query_result['errno']); } if (isset($query_result['numRows'])) { $obj->setNumRows($query_result['numRows']); } if (isset($query_result['errno']) && $query_result['errno'] > 0) { $result = Model::isProblem(); } else { $result = Model::isCreated(); } //$result = Model::isOK(); } $res[] = $obj; } if (count($res) == 1) { $res = $res[0]; } $result['content'] = $res; return $result; }
/** * decodes $data to an object * * @param string $data json encoded data (decode=true) * or json decoded data (decode=false) * @param bool $decode specifies whether the data must be decoded * @todo support query arrays * * @return the object */ public static function decodeQuery($data, $decode = true) { /* if ( $decode && $data == null ) $data = '{}'; if ( $decode ) $data = json_decode( $data ); $isArray = true; if ( !$decode ){ if ($data !== null){ reset($data); if (current($data)!==false && !is_int(key($data))) { $isArray = false; } } else { $isArray = false; } } if ( $isArray && is_array( $data ) ){ $result = array( ); foreach ( $data AS $key => $value ){ $result[] = new Query( $value ); } return $result; } else return new Query( $data );*/ if ($decode && $data == null) { $data = '{}'; } if ($decode) { $data = json_decode($data, true); } if (is_array($data) && !isset($data['response']) && !isset($data['request']) && !isset($data['insertId'])) { $result = array(); foreach ($data as $key => &$value) { $obj = new Query(); if (isset($value['request'])) { $obj->setRequest($value['request']); unset($value['request']); } if (isset($value['response'])) { $obj->setResponse(json_decode($value['response'], true)); unset($value['response']); } if (isset($value['affectedRows'])) { $obj->setAffectedRows($value['affectedRows']); unset($value['affectedRows']); } if (isset($value['insertId'])) { $obj->setInsertId($value['insertId']); unset($value['insertId']); } if (isset($value['errno'])) { $obj->setErrno($value['errno']); unset($value['errno']); } if (isset($value['numRows'])) { $obj->setNumRows($value['numRows']); unset($value['numRows']); } if (isset($value['checkSession'])) { $obj->setCheckSession($value['checkSession']); unset($value['checkSession']); } $result[] = $obj; unset($value); } return $result; } else { $obj = new Query(); if (isset($data['request'])) { $obj->setRequest($data['request']); } if (isset($data['response'])) { $obj->setResponse(json_decode($data['response'], true)); unset($data['response']); } if (isset($data['affectedRows'])) { $obj->setAffectedRows($data['affectedRows']); } if (isset($data['insertId'])) { $obj->setInsertId($data['insertId']); } if (isset($data['errno'])) { $obj->setErrno($data['errno']); } if (isset($data['numRows'])) { $obj->setNumRows($data['numRows']); } if (isset($data['checkSession'])) { $obj->setCheckSession($data['checkSession']); } } return $obj; }