/** * @param int timeout * @param string statement query statement * @param array vars [optional] * @return Statement object * @throws ConnectionException */ PHP_METHOD(ADOdb_Connection, cacheQuery) { zval *vars = NULL; zval *statement = NULL; zval *timeout_param = NULL, *statement_param = NULL, *vars_param = NULL, *_0, *queryId, *st = NULL, *_1, *_2, *_3 = NULL, *_4, *_5, _6, _7; int timeout; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 1, &timeout_param, &statement_param, &vars_param); timeout = zephir_get_intval(timeout_param); zephir_get_strval(statement, statement_param); if (!vars_param) { ZEPHIR_INIT_VAR(vars); array_init(vars); } else { zephir_get_arrval(vars, vars_param); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("cache"), PH_NOISY_CC); if ((Z_TYPE_P(_0) != IS_NULL)) { _1 = zephir_fetch_nproperty_this(this_ptr, SL("cache"), PH_NOISY_CC); ZEPHIR_INIT_VAR(queryId); zephir_call_method_p2(queryId, _1, "getqueryid", statement, vars); _2 = zephir_fetch_nproperty_this(this_ptr, SL("cache"), PH_NOISY_CC); ZEPHIR_INIT_VAR(_3); ZVAL_LONG(_3, timeout); ZEPHIR_INIT_VAR(st); zephir_call_method_p2(st, _2, "read", queryId, _3); if (!zephir_is_true(st)) { ZEPHIR_INIT_NVAR(_3); ZVAL_STRING(_3, "Cache miss!", 1); zephir_call_method_p1_noret(this_ptr, "debug", _3); _4 = zephir_fetch_nproperty_this(this_ptr, SL("connection"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(st); zephir_call_method_p2(st, _4, "query", statement, vars); _5 = zephir_fetch_nproperty_this(this_ptr, SL("cache"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(_3); ZVAL_LONG(_3, timeout); zephir_call_method_p3_noret(_5, "write", queryId, st, _3); } RETURN_CCTOR(st); } else { ZEPHIR_SINIT_VAR(_6); ZVAL_STRING(&_6, "No cache engine found!", 0); ZEPHIR_SINIT_VAR(_7); ZVAL_LONG(&_7, 512); zephir_call_func_p2_noret("user_error", &_6, &_7); zephir_call_method_p2(return_value, this_ptr, "query", statement, vars); RETURN_MM(); } ZEPHIR_MM_RESTORE(); }
/** * Gets the signature * * @param OAuth\UriInterface uri * @param array params * @param string method * * @return string */ PHP_METHOD(OAuth_V1_Signature, getSignature) { HashTable *_4; HashPosition _3; zend_class_entry *_1; zval *method = NULL; zval *uri, *params, *method_param = NULL, *signature, *signatureData, *signatureString, *signatureStringEncoded, *query, *queryStringData = NULL, *queryStringKey = NULL, *queryStringValue = NULL, *queryStringKeyEncoded = NULL, *queryStringValueEncoded = NULL, *scheme, *authority, *path, *hasExplicitTrailingHostSlash, *baseUri, *baseUriEncoded, *dataString, *dataHash, *_0 = NULL, *_2, **_5; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 1, &uri, ¶ms, &method_param); if (!method_param) { ZEPHIR_INIT_VAR(method); ZVAL_STRING(method, "POST", 1); } else { zephir_get_strval(method, method_param); } ZEPHIR_INIT_VAR(query); zephir_call_method(query, uri, "getquery"); ZEPHIR_INIT_VAR(queryStringData); array_init(queryStringData); ZEPHIR_INIT_VAR(signatureData); array_init(signatureData); if ((Z_TYPE_P(params) != IS_ARRAY)) { ZEPHIR_INIT_VAR(_0); _1 = zend_fetch_class(SL("InvalidArgumentException"), ZEND_FETCH_CLASS_AUTO TSRMLS_CC); object_init_ex(_0, _1); ZEPHIR_INIT_VAR(_2); ZVAL_STRING(_2, "The params must be an Array", 1); zephir_call_method_p1_noret(_0, "__construct", _2); zephir_throw_exception(_0 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_INIT_NVAR(_0); zephir_fast_array_merge(_0, &(queryStringData), &(params) TSRMLS_CC); ZEPHIR_CPY_WRT(queryStringData, _0); Z_SET_ISREF_P(queryStringData); zephir_call_func_p2_noret("parse_str", query, queryStringData); Z_UNSET_ISREF_P(queryStringData); zephir_is_iterable(queryStringData, &_4, &_3, 0, 0); for ( ; zend_hash_get_current_data_ex(_4, (void**) &_5, &_3) == SUCCESS ; zend_hash_move_forward_ex(_4, &_3) ) { ZEPHIR_GET_HMKEY(queryStringKey, _4, _3); ZEPHIR_GET_HVALUE(queryStringValue, _5); ZEPHIR_INIT_NVAR(queryStringKeyEncoded); zephir_call_func_p1(queryStringKeyEncoded, "rawurlencode", queryStringKey); ZEPHIR_INIT_NVAR(queryStringValueEncoded); zephir_call_func_p1(queryStringValueEncoded, "rawurlencode", queryStringValue); zephir_array_update_zval(&signatureData, queryStringKeyEncoded, &queryStringValueEncoded, PH_COPY | PH_SEPARATE); } Z_SET_ISREF_P(signatureData); zephir_call_func_p1_noret("ksort", signatureData); Z_UNSET_ISREF_P(signatureData); ZEPHIR_INIT_VAR(scheme); zephir_call_method(scheme, uri, "getscheme"); ZEPHIR_INIT_VAR(authority); zephir_call_method(authority, uri, "getrawauthority"); ZEPHIR_INIT_VAR(path); zephir_call_method(path, uri, "getpath"); ZEPHIR_INIT_VAR(hasExplicitTrailingHostSlash); zephir_call_method(hasExplicitTrailingHostSlash, uri, "hasexplicittrailinghostslash"); ZEPHIR_INIT_VAR(baseUri); ZEPHIR_CONCAT_VSV(baseUri, scheme, "://", authority); if (ZEPHIR_IS_STRING(path, "/")) { if (zephir_is_true(hasExplicitTrailingHostSlash)) { zephir_concat_self_str(&baseUri, SL("/") TSRMLS_CC); } } else { zephir_concat_self(&baseUri, path TSRMLS_CC); } ZEPHIR_INIT_VAR(baseUriEncoded); zephir_call_func_p1(baseUriEncoded, "rawurlencode", baseUri); ZEPHIR_INIT_VAR(signatureString); zephir_call_method_p1(signatureString, this_ptr, "buildsignaturestring", signatureData); ZEPHIR_INIT_VAR(signatureStringEncoded); zephir_call_func_p1(signatureStringEncoded, "rawurlencode", signatureString); ZEPHIR_INIT_VAR(dataString); zephir_fast_strtoupper(dataString, method); ZEPHIR_INIT_BNVAR(dataString); ZEPHIR_CONCAT_VSVSV(dataString, dataString, "&", baseUriEncoded, "&", signatureStringEncoded); ZEPHIR_INIT_VAR(dataHash); zephir_call_method_p1(dataHash, this_ptr, "hash", dataString); ZEPHIR_INIT_VAR(signature); zephir_call_func_p1(signature, "base64_encode", dataHash); RETURN_CCTOR(signature); }