/** * Adds the limit parameter to the criteria. * * <code> * $criteria->limit(100); * $criteria->limit(100, 200); * $criteria->limit("100", "200"); * </code> */ PHP_METHOD(Phalcon_Mvc_Model_Criteria, limit) { zval *_4$$4; zephir_fcall_cache_entry *_2 = NULL; zval *limit_param = NULL, *offset = NULL, _0, *_1 = NULL, _3$$4, *_5$$4 = NULL, *_6$$5, *_7$$5; int limit, ZEPHIR_LAST_CALL_STATUS; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &limit_param, &offset); limit = zephir_get_intval(limit_param); if (!offset) { ZEPHIR_CPY_WRT(offset, ZEPHIR_GLOBAL(global_null)); } else { ZEPHIR_SEPARATE_PARAM(offset); } ZEPHIR_SINIT_VAR(_0); ZVAL_LONG(&_0, limit); ZEPHIR_CALL_FUNCTION(&_1, "abs", &_2, 202, &_0); zephir_check_call_status(); limit = zephir_get_numberval(_1); if (unlikely(limit == 0)) { RETURN_THIS(); } if (zephir_is_numeric(offset)) { ZEPHIR_SINIT_VAR(_3$$4); ZVAL_LONG(&_3$$4, zephir_get_intval(offset)); ZEPHIR_CALL_FUNCTION(&offset, "abs", &_2, 202, &_3$$4); zephir_check_call_status(); ZEPHIR_INIT_VAR(_4$$4); zephir_create_array(_4$$4, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_5$$4); ZVAL_LONG(_5$$4, limit); zephir_array_update_string(&_4$$4, SL("number"), &_5$$4, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_4$$4, SL("offset"), &offset, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_NVAR(_5$$4); ZVAL_STRING(_5$$4, "limit", 1); zephir_update_property_array(this_ptr, SL("_params"), _5$$4, _4$$4 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_6$$5); ZVAL_STRING(_6$$5, "limit", 1); ZEPHIR_INIT_VAR(_7$$5); ZVAL_LONG(_7$$5, limit); zephir_update_property_array(this_ptr, SL("_params"), _6$$5, _7$$5 TSRMLS_CC); } RETURN_THIS(); }
PHP_METHOD(Xs_FieldMeta, val) { int ZEPHIR_LAST_CALL_STATUS; zend_bool _1; zval *value = NULL, *_0, *_2 = NULL, _3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &value); ZEPHIR_SEPARATE_PARAM(value); _0 = zephir_fetch_nproperty_this(this_ptr, SL("type"), PH_NOISY_CC); if (ZEPHIR_IS_LONG(_0, 2)) { _1 = !(zephir_is_numeric(value)); if (!(_1)) { _1 = zephir_fast_strlen_ev(value) != 8; } if (_1) { ZEPHIR_INIT_VAR(_2); if (zephir_is_numeric(value)) { ZEPHIR_CPY_WRT(_2, value); } else { ZEPHIR_CALL_FUNCTION(&_2, "strtotime", NULL, 9, value); zephir_check_call_status(); } ZEPHIR_SINIT_VAR(_3); ZVAL_STRING(&_3, "Ymd", 0); ZEPHIR_CALL_FUNCTION(&value, "date", NULL, 10, &_3, _2); zephir_check_call_status(); } } RETVAL_ZVAL(value, 1, 0); RETURN_MM(); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_Redis, get) { zend_long lifetime, ZEPHIR_LAST_CALL_STATUS; zval *keyName_param = NULL, *lifetime_param = NULL, *redis = NULL, *frontend = NULL, *prefix = NULL, *lastKey = NULL, *cachedContent = NULL; zval *keyName = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName_param, &lifetime_param); zephir_get_strval(keyName, keyName_param); if (!lifetime_param) { lifetime = 0; } else { lifetime = zephir_get_intval(lifetime_param); } ZEPHIR_OBS_VAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); if (Z_TYPE_P(redis) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(prefix); zephir_read_property_this(&prefix, this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(lastKey); ZEPHIR_CONCAT_SVV(lastKey, "_PHCR", prefix, keyName); zephir_update_property_this(getThis(), SL("_lastKey"), lastKey TSRMLS_CC); ZEPHIR_CALL_METHOD(&cachedContent, redis, "get", NULL, 0, lastKey); zephir_check_call_status(); if (ZEPHIR_IS_FALSE_IDENTICAL(cachedContent)) { RETURN_MM_NULL(); } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } ZEPHIR_RETURN_CALL_METHOD(frontend, "afterretrieve", NULL, 0, cachedContent); zephir_check_call_status(); RETURN_MM(); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_Libmemcached, get) { zend_long lifetime, ZEPHIR_LAST_CALL_STATUS; zval *keyName_param = NULL, *lifetime_param = NULL, *memcache = NULL, *prefixedKey = NULL, *cachedContent = NULL, *_0, *_1$$6; zval *keyName = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName_param, &lifetime_param); zephir_get_strval(keyName, keyName_param); if (!lifetime_param) { lifetime = 0; } else { lifetime = zephir_get_intval(lifetime_param); } ZEPHIR_OBS_VAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); if (Z_TYPE_P(memcache) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, _0, keyName); zephir_update_property_this(getThis(), SL("_lastKey"), prefixedKey TSRMLS_CC); ZEPHIR_CALL_METHOD(&cachedContent, memcache, "get", NULL, 0, prefixedKey); zephir_check_call_status(); if (!(zephir_is_true(cachedContent))) { RETURN_MM_NULL(); } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } else { _1$$6 = zephir_fetch_nproperty_this(this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_RETURN_CALL_METHOD(_1$$6, "afterretrieve", NULL, 0, cachedContent); zephir_check_call_status(); RETURN_MM(); } }
/** * Unserializes data after retrieval */ PHP_METHOD(Phalcon_Cache_Frontend_Igbinary, afterRetrieve) { zend_long ZEPHIR_LAST_CALL_STATUS; zval *data; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &data); if (zephir_is_numeric(data)) { RETVAL_ZVAL(data, 1, 0); RETURN_MM(); } ZEPHIR_RETURN_CALL_FUNCTION("igbinary_unserialize", NULL, 137, data); zephir_check_call_status(); RETURN_MM(); }
/** * Decrement of a given key, by number $value * * @param string keyName */ PHP_METHOD(Phalcon_Cache_Backend_Apc, decrement) { zend_long value, ZEPHIR_LAST_CALL_STATUS; zval *keyName = NULL, *value_param = NULL, *lastKey = NULL, *cachedContent = NULL, *result = NULL, *_0, *_1$$3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 2, &keyName, &value_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!value_param) { value = 1; } else { value = zephir_get_intval(value_param); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(lastKey); ZEPHIR_CONCAT_SVV(lastKey, "_PHCA", _0, keyName); zephir_update_property_this(getThis(), SL("_lastKey"), lastKey TSRMLS_CC); if ((zephir_function_exists_ex(SS("apc_dec") TSRMLS_CC) == SUCCESS)) { ZEPHIR_INIT_VAR(_1$$3); ZVAL_LONG(_1$$3, value); ZEPHIR_RETURN_CALL_FUNCTION("apc_dec", NULL, 114, lastKey, _1$$3); zephir_check_call_status(); RETURN_MM(); } else { ZEPHIR_CALL_FUNCTION(&cachedContent, "apc_fetch", NULL, 90, lastKey); zephir_check_call_status(); if (zephir_is_numeric(cachedContent)) { ZEPHIR_INIT_VAR(result); ZVAL_LONG(result, (zephir_get_numberval(cachedContent) - value)); ZEPHIR_CALL_METHOD(NULL, this_ptr, "save", NULL, 0, keyName, result); zephir_check_call_status(); RETURN_CCTOR(result); } } RETURN_MM_BOOL(0); }
/** * Returns a cached content * * @param int|string keyName * @param long lifetime * @return mixed */ PHP_METHOD(Phalcon_Cache_Backend_Redis, get) { int ZEPHIR_LAST_CALL_STATUS; zval *keyName, *lifetime = NULL, *redis = NULL, *frontend, *prefix, *lastKey, *cachedContent = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName, &lifetime); if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } ZEPHIR_OBS_VAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); if (Z_TYPE_P(redis) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL); zephir_check_call_status(); ZEPHIR_OBS_NVAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(prefix); zephir_read_property_this(&prefix, this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(lastKey); ZEPHIR_CONCAT_SVV(lastKey, "_PHCR", prefix, keyName); zephir_update_property_this(this_ptr, SL("_lastKey"), lastKey TSRMLS_CC); ZEPHIR_CALL_METHOD(&cachedContent, redis, "get", NULL, lastKey); zephir_check_call_status(); if (!(zephir_is_true(cachedContent))) { RETURN_MM_NULL(); } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } ZEPHIR_RETURN_CALL_METHOD(frontend, "afterretrieve", NULL, cachedContent); zephir_check_call_status(); RETURN_MM(); }
/** * Returns a cached content * * @param int|string keyName * @param long lifetime * @return mixed */ PHP_METHOD(Phalcon_Cache_Backend_Memcache, get) { int ZEPHIR_LAST_CALL_STATUS; zval *keyName, *lifetime = NULL, *memcache = NULL, *prefixedKey, *cachedContent = NULL, *retrieve = NULL, *_0, *_1; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName, &lifetime); if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } ZEPHIR_OBS_VAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); if (Z_TYPE_P(memcache) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, _0, keyName); zephir_update_property_this(this_ptr, SL("_lastKey"), prefixedKey TSRMLS_CC); ZEPHIR_CALL_METHOD(&cachedContent, memcache, "get", NULL, 0, prefixedKey); zephir_check_call_status(); if (ZEPHIR_IS_FALSE_IDENTICAL(cachedContent)) { RETURN_MM_NULL(); } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } _1 = zephir_fetch_nproperty_this(this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(&retrieve, _1, "afterretrieve", NULL, 0, cachedContent); zephir_check_call_status(); RETURN_CCTOR(retrieve); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_Xcache, get) { int lifetime, ZEPHIR_LAST_CALL_STATUS; zval *keyName_param = NULL, *lifetime_param = NULL, *frontend = NULL, *prefixedKey = NULL, *cachedContent = NULL, *_0; zval *keyName = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName_param, &lifetime_param); zephir_get_strval(keyName, keyName_param); if (!lifetime_param) { lifetime = 0; } else { lifetime = zephir_get_intval(lifetime_param); } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_VAR(prefixedKey); ZEPHIR_CONCAT_SVV(prefixedKey, "_PHCX", _0, keyName); zephir_update_property_this(this_ptr, SL("_lastKey"), prefixedKey TSRMLS_CC); ZEPHIR_CALL_FUNCTION(&cachedContent, "xcache_get", NULL, 87, prefixedKey); zephir_check_call_status(); if (!(zephir_is_true(cachedContent))) { RETURN_MM_NULL(); } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } else { ZEPHIR_RETURN_CALL_METHOD(frontend, "afterretrieve", NULL, 0, cachedContent); zephir_check_call_status(); RETURN_MM(); } }
/** * Handles routing information received from the rewrite engine * *<code> * //Read the info from the rewrite engine * $router->handle(); * * //Manually passing an URL * $router->handle('/posts/edit/1'); *</code> * * @param string uri */ PHP_METHOD(Test_Router, handle) { zephir_nts_static zephir_fcall_cache_entry *_12 = NULL; HashTable *_2, *_9; HashPosition _1, _8; int ZEPHIR_LAST_CALL_STATUS; zval *uri = NULL, *realUri = NULL, *request = NULL, *currentHostName = NULL, *routeFound = NULL, *parts = NULL, *params, *matches, *notFoundPaths, *vnamespace, *module, *controller, *action, *paramsStr, *strParams = NULL, *paramsMerge = NULL, *route = NULL, *methods = NULL, *dependencyInjector = NULL, *hostname = NULL, *regexHostName = NULL, *matched = NULL, *pattern = NULL, *handledUri = NULL, *beforeMatch = NULL, *paths = NULL, *converters = NULL, *part = NULL, *position = NULL, *matchPosition = NULL, *_0, **_3, *_4, *_5 = NULL, *_6 = NULL, *_7 = NULL, **_10, _11, *_13, *_14, *_15, *_16; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &uri); if (!uri) { uri = ZEPHIR_GLOBAL(global_null); } if (!(zephir_is_true(uri))) { ZEPHIR_CALL_METHOD(&realUri, this_ptr, "getrewriteuri", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(realUri, uri); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_removeExtraSlashes"), PH_NOISY_CC); if (zephir_is_true(_0)) { ZEPHIR_CALL_METHOD(&handledUri, this_ptr, "doremoveextraslashes", NULL, realUri); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(handledUri, realUri); } ZEPHIR_INIT_VAR(request); ZVAL_NULL(request); ZEPHIR_INIT_VAR(currentHostName); ZVAL_NULL(currentHostName); ZEPHIR_INIT_VAR(routeFound); ZVAL_BOOL(routeFound, 0); ZEPHIR_INIT_VAR(parts); array_init(parts); ZEPHIR_INIT_VAR(params); array_init(params); ZEPHIR_INIT_VAR(matches); ZVAL_NULL(matches); zephir_update_property_this(this_ptr, SL("_wasMatched"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("_matchedRoute"), ZEPHIR_GLOBAL(global_null) TSRMLS_CC); _0 = zephir_fetch_nproperty_this(this_ptr, SL("_routes"), PH_NOISY_CC); zephir_is_iterable(_0, &_2, &_1, 0, 1); for ( ; zephir_hash_get_current_data_ex(_2, (void**) &_3, &_1) == SUCCESS ; zephir_hash_move_backwards_ex(_2, &_1) ) { ZEPHIR_GET_HVALUE(route, _3); ZEPHIR_CALL_METHOD(&methods, route, "gethttpmethods", NULL); zephir_check_call_status(); if (Z_TYPE_P(methods) != IS_NULL) { if (Z_TYPE_P(request) == IS_NULL) { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); ZEPHIR_CPY_WRT(dependencyInjector, _4); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_STR(test_router_exception_ce, "A dependency injection container is required to access the 'request' service"); return; } ZEPHIR_INIT_NVAR(_5); ZVAL_STRING(_5, "request", 0); ZEPHIR_CALL_METHOD(&request, dependencyInjector, "getshared", NULL, _5); zephir_check_temp_parameter(_5); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&_6, request, "ismethod", NULL, methods); zephir_check_call_status(); if (ZEPHIR_IS_FALSE(_6)) { continue; } } ZEPHIR_CALL_METHOD(&hostname, route, "gethostname", NULL); zephir_check_call_status(); if (Z_TYPE_P(hostname) != IS_NULL) { if (Z_TYPE_P(request) == IS_NULL) { ZEPHIR_OBS_NVAR(dependencyInjector); zephir_read_property_this(&dependencyInjector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_STR(test_router_exception_ce, "A dependency injection container is required to access the 'request' service"); return; } ZEPHIR_INIT_NVAR(_5); ZVAL_STRING(_5, "request", 0); ZEPHIR_CALL_METHOD(&request, dependencyInjector, "getshared", NULL, _5); zephir_check_temp_parameter(_5); zephir_check_call_status(); } if (Z_TYPE_P(currentHostName) != IS_OBJECT) { ZEPHIR_CALL_METHOD(¤tHostName, request, "gethttphost", NULL); zephir_check_call_status(); } if (Z_TYPE_P(currentHostName) != IS_NULL) { continue; } ZEPHIR_INIT_NVAR(matched); if (zephir_memnstr_str(hostname, SL("("), "test/router.zep", 381)) { if (zephir_memnstr_str(hostname, SL("#"), "test/router.zep", 382)) { ZEPHIR_INIT_NVAR(regexHostName); ZEPHIR_CONCAT_SVS(regexHostName, "#^", hostname, "$#"); } else { ZEPHIR_CPY_WRT(regexHostName, hostname); } ZEPHIR_INIT_NVAR(_7); zephir_preg_match(matched, &(matched), regexHostName, currentHostName, _7, 0, 0 , 0 TSRMLS_CC); } else { ZVAL_BOOL(matched, ZEPHIR_IS_EQUAL(currentHostName, hostname)); } if (!(zephir_is_true(matched))) { continue; } } ZEPHIR_CALL_METHOD(&pattern, route, "getcompiledpattern", NULL); zephir_check_call_status(); ZEPHIR_INIT_NVAR(routeFound); if (zephir_memnstr_str(pattern, SL("^"), "test/router.zep", 400)) { zephir_preg_match(routeFound, &(routeFound), pattern, handledUri, matches, 0, 0 , 0 TSRMLS_CC); } else { ZVAL_BOOL(routeFound, ZEPHIR_IS_EQUAL(pattern, handledUri)); } if (zephir_is_true(routeFound)) { ZEPHIR_CALL_METHOD(&beforeMatch, route, "getbeforematch", NULL); zephir_check_call_status(); if (Z_TYPE_P(beforeMatch) != IS_NULL) { if (zephir_is_callable(beforeMatch TSRMLS_CC)) { ZEPHIR_THROW_EXCEPTION_STR(test_router_exception_ce, "Before-Match callback is not callable in matched route"); return; } } } if (zephir_is_true(routeFound)) { ZEPHIR_CALL_METHOD(&paths, route, "getpaths", NULL); zephir_check_call_status(); ZEPHIR_CPY_WRT(parts, paths); if (Z_TYPE_P(matches) == IS_ARRAY) { ZEPHIR_CALL_METHOD(&converters, route, "getconverters", NULL); zephir_check_call_status(); zephir_is_iterable(paths, &_9, &_8, 0, 0); for ( ; zephir_hash_get_current_data_ex(_9, (void**) &_10, &_8) == SUCCESS ; zephir_hash_move_forward_ex(_9, &_8) ) { ZEPHIR_GET_HMKEY(part, _9, _8); ZEPHIR_GET_HVALUE(position, _10); ZEPHIR_OBS_NVAR(matchPosition); if (zephir_array_isset_fetch(&matchPosition, matches, position, 0 TSRMLS_CC)) { if (Z_TYPE_P(converters) == IS_ARRAY) { if (zephir_array_isset(converters, part)) { continue; } } zephir_array_update_zval(&parts, part, &matchPosition, PH_COPY | PH_SEPARATE); } else { if (Z_TYPE_P(converters) == IS_ARRAY) { if (zephir_array_isset(converters, part)) { } } } } zephir_update_property_this(this_ptr, SL("_matches"), matches TSRMLS_CC); } zephir_update_property_this(this_ptr, SL("_matchedRoute"), route TSRMLS_CC); break; } } if (zephir_is_true(routeFound)) { zephir_update_property_this(this_ptr, SL("_wasMatched"), (1) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_wasMatched"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } if (!(zephir_is_true(routeFound))) { ZEPHIR_OBS_VAR(notFoundPaths); zephir_read_property_this(¬FoundPaths, this_ptr, SL("_notFoundPaths"), PH_NOISY_CC); if (Z_TYPE_P(notFoundPaths) != IS_NULL) { ZEPHIR_CPY_WRT(parts, notFoundPaths); ZEPHIR_INIT_BNVAR(routeFound); ZVAL_BOOL(routeFound, 1); } } if (zephir_is_true(routeFound)) { ZEPHIR_OBS_VAR(vnamespace); if (zephir_array_isset_string_fetch(&vnamespace, parts, SS("namespace"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(vnamespace))) { zephir_update_property_this(this_ptr, SL("_namespace"), vnamespace TSRMLS_CC); } zephir_array_unset_string(&parts, SS("namespace"), PH_SEPARATE); } else { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultNamespace"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_namespace"), _4 TSRMLS_CC); } ZEPHIR_OBS_VAR(module); if (zephir_array_isset_string_fetch(&module, parts, SS("module"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(module))) { zephir_update_property_this(this_ptr, SL("_module"), module TSRMLS_CC); } zephir_array_unset_string(&parts, SS("module"), PH_SEPARATE); } else { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultModule"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_module"), _4 TSRMLS_CC); } ZEPHIR_OBS_VAR(controller); if (zephir_array_isset_string_fetch(&controller, parts, SS("controller"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(controller))) { zephir_update_property_this(this_ptr, SL("_controller"), controller TSRMLS_CC); } zephir_array_unset_string(&parts, SS("controller"), PH_SEPARATE); } else { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultController"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_controller"), _4 TSRMLS_CC); } ZEPHIR_OBS_VAR(action); if (zephir_array_isset_string_fetch(&action, parts, SS("action"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(action))) { zephir_update_property_this(this_ptr, SL("_action"), action TSRMLS_CC); } zephir_array_unset_string(&parts, SS("action"), PH_SEPARATE); } else { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAction"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_action"), _4 TSRMLS_CC); } ZEPHIR_OBS_VAR(paramsStr); if (zephir_array_isset_string_fetch(¶msStr, parts, SS("params"), 0 TSRMLS_CC)) { ZEPHIR_SINIT_VAR(_11); ZVAL_LONG(&_11, 1); ZEPHIR_CALL_FUNCTION(&strParams, "substr", &_12, paramsStr, &_11); zephir_check_call_status(); if (zephir_is_true(strParams)) { ZEPHIR_INIT_BNVAR(params); zephir_fast_explode_str(params, SL("/"), strParams, LONG_MAX TSRMLS_CC); } zephir_array_unset_string(&parts, SS("params"), PH_SEPARATE); } if (zephir_fast_count_int(params TSRMLS_CC)) { ZEPHIR_INIT_VAR(paramsMerge); zephir_fast_array_merge(paramsMerge, &(params), &(parts) TSRMLS_CC); } else { ZEPHIR_CPY_WRT(paramsMerge, parts); } zephir_update_property_this(this_ptr, SL("_params"), paramsMerge TSRMLS_CC); } else { _4 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultNamespace"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_namespace"), _4 TSRMLS_CC); _13 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultModule"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_module"), _13 TSRMLS_CC); _14 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultController"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_controller"), _14 TSRMLS_CC); _15 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAction"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_action"), _15 TSRMLS_CC); _16 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultParams"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_params"), _16 TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * We have to cast values manually because parse_ini_file() has a poor implementation. * * @param mixed ini The array casted by `parse_ini_file` */ PHP_METHOD(Phalcon_Config_Adapter_Ini, _cast) { zend_bool _5$$5, _6$$5, _8$$5, _9$$5; HashTable *_1$$3; HashPosition _0$$3; zephir_fcall_cache_entry *_4 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *ini, *key = NULL, *val = NULL, **_2$$3, *_3$$4 = NULL, *_7$$5, *_10$$5, *_11$$9, *_12$$9, _13$$9; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &ini); ZEPHIR_SEPARATE_PARAM(ini); if (Z_TYPE_P(ini) == IS_ARRAY) { zephir_is_iterable(ini, &_1$$3, &_0$$3, 1, 0, "phalcon/config/adapter/ini.zep", 134); for ( ; zephir_hash_get_current_data_ex(_1$$3, (void**) &_2$$3, &_0$$3) == SUCCESS ; zephir_hash_move_forward_ex(_1$$3, &_0$$3) ) { ZEPHIR_GET_HMKEY(key, _1$$3, _0$$3); ZEPHIR_GET_HVALUE(val, _2$$3); ZEPHIR_CALL_METHOD(&_3$$4, this_ptr, "_cast", &_4, 135, val); zephir_check_call_status(); zephir_array_update_zval(&ini, key, &_3$$4, PH_COPY | PH_SEPARATE); } zend_hash_destroy(_1$$3); FREE_HASHTABLE(_1$$3); } if (Z_TYPE_P(ini) == IS_STRING) { _5$$5 = ZEPHIR_IS_STRING_IDENTICAL(ini, "true"); if (!(_5$$5)) { _5$$5 = ZEPHIR_IS_STRING_IDENTICAL(ini, "yes"); } _6$$5 = _5$$5; if (!(_6$$5)) { ZEPHIR_INIT_VAR(_7$$5); zephir_fast_strtolower(_7$$5, ini); _6$$5 = ZEPHIR_IS_STRING_IDENTICAL(_7$$5, "on"); } if (_6$$5) { RETURN_MM_BOOL(1); } _8$$5 = ZEPHIR_IS_STRING_IDENTICAL(ini, "false"); if (!(_8$$5)) { _8$$5 = ZEPHIR_IS_STRING_IDENTICAL(ini, "no"); } _9$$5 = _8$$5; if (!(_9$$5)) { ZEPHIR_INIT_VAR(_10$$5); zephir_fast_strtolower(_10$$5, ini); _9$$5 = ZEPHIR_IS_STRING_IDENTICAL(_10$$5, "off"); } if (_9$$5) { RETURN_MM_BOOL(0); } if (ZEPHIR_IS_STRING_IDENTICAL(ini, "null")) { RETURN_MM_NULL(); } if (zephir_is_numeric(ini)) { ZEPHIR_INIT_VAR(_11$$9); ZEPHIR_INIT_VAR(_12$$9); ZEPHIR_SINIT_VAR(_13$$9); ZVAL_STRING(&_13$$9, "/[.]+/", 0); zephir_preg_match(_12$$9, &_13$$9, ini, _11$$9, 0, 0 , 0 TSRMLS_CC); if (zephir_is_true(_12$$9)) { RETURN_MM_DOUBLE(zephir_get_doubleval(ini)); } else { RETURN_MM_LONG(zephir_get_intval(ini)); } } } RETVAL_ZVAL(ini, 1, 0); RETURN_MM(); }
/** * Stores cached content into the APCu backend and stops the frontend * * @param string|int keyName * @param string content * @param int lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Apcu, save) { zend_long ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer_param = NULL, *lastKey = NULL, *frontend = NULL, *cachedContent = NULL, *preparedContent = NULL, *ttl = NULL, *isBuffering = NULL, *success = NULL, *_0$$4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { ZEPHIR_CPY_WRT(lifetime, ZEPHIR_GLOBAL(global_null)); } else { ZEPHIR_SEPARATE_PARAM(lifetime); } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } if (Z_TYPE_P(keyName) == IS_NULL) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { _0$$4 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_SVV(lastKey, "_PHCA", _0$$4, keyName); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/apcu.zep", 95); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (Z_TYPE_P(content) == IS_NULL) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, 0, cachedContent); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(preparedContent, cachedContent); } if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_OBS_NVAR(lifetime); zephir_read_property_this(&lifetime, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_CALL_METHOD(&ttl, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(ttl, lifetime); zephir_update_property_this(getThis(), SL("_lastKey"), lastKey TSRMLS_CC); } } else { ZEPHIR_CPY_WRT(ttl, lifetime); } ZEPHIR_CALL_FUNCTION(&success, "apcu_store", NULL, 93, lastKey, preparedContent, ttl); zephir_check_call_status(); if (!(zephir_is_true(success))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Failed storing data in APCu", "phalcon/cache/backend/apcu.zep", 132); return; } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } if (0) { zephir_update_property_this(getThis(), SL("_started"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(getThis(), SL("_started"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } RETURN_CCTOR(success); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param int lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_File, save) { zephir_nts_static zephir_fcall_cache_entry *_4 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer = NULL, *lastKey = NULL, *frontend, *cacheDir, *isBuffering = NULL, *cacheFile, *cachedContent = NULL, *preparedContent = NULL, *status = NULL, *_0, *_1 = NULL, *_2, *_3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer) { stopBuffer = ZEPHIR_GLOBAL(global_true); } if (!(zephir_is_true(keyName))) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(&_1, this_ptr, "getkey", NULL, keyName); zephir_check_call_status(); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_VV(lastKey, _0, _1); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/file.zep", 186); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(cacheDir); _0 = zephir_fetch_nproperty_this(this_ptr, SL("_options"), PH_NOISY_CC); if (!(zephir_array_isset_string_fetch(&cacheDir, _0, SS("cacheDir"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/file.zep", 192); return; } ZEPHIR_INIT_VAR(cacheFile); ZEPHIR_CONCAT_VV(cacheFile, cacheDir, lastKey); if (!(zephir_is_true(content))) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, cachedContent); zephir_check_call_status(); if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_INIT_VAR(status); zephir_file_put_contents(status, cacheFile, preparedContent TSRMLS_CC); } else { ZEPHIR_INIT_NVAR(status); zephir_file_put_contents(status, cacheFile, cachedContent TSRMLS_CC); } if (ZEPHIR_IS_FALSE_IDENTICAL(status)) { ZEPHIR_INIT_VAR(_2); object_init_ex(_2, phalcon_cache_exception_ce); ZEPHIR_INIT_VAR(_3); ZEPHIR_CONCAT_SVS(_3, "Cache file ", cacheFile, " could not be written"); ZEPHIR_CALL_METHOD(NULL, _2, "__construct", &_4, _3); zephir_check_call_status(); zephir_throw_exception_debug(_2, "phalcon/cache/backend/file.zep", 215 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL); zephir_check_call_status(); if (ZEPHIR_IS_TRUE_IDENTICAL(stopBuffer)) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } zephir_update_property_this(this_ptr, SL("_started"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); ZEPHIR_MM_RESTORE(); }
/** * Returns a cached content * * @param int|string keyName * @param int lifetime * @return mixed */ PHP_METHOD(Phalcon_Cache_Backend_File, get) { zephir_nts_static zephir_fcall_cache_entry *_8 = NULL; int ttl, modifiedTime, ZEPHIR_LAST_CALL_STATUS; zval *keyName, *lifetime = NULL, *prefixedKey, *cacheDir, *cacheFile, *frontend, *lastLifetime, *cachedContent, *ret = NULL, *_0, *_1 = NULL, *_2, *_3 = NULL, *_4, *_5, *_6, *_7; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName, &lifetime); if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(&_1, this_ptr, "getkey", NULL, keyName); zephir_check_call_status(); ZEPHIR_INIT_VAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, _0, _1); zephir_update_property_this(this_ptr, SL("_lastKey"), prefixedKey TSRMLS_CC); ZEPHIR_OBS_VAR(cacheDir); _2 = zephir_fetch_nproperty_this(this_ptr, SL("_options"), PH_NOISY_CC); if (!(zephir_array_isset_string_fetch(&cacheDir, _2, SS("cacheDir"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/file.zep", 115); return; } ZEPHIR_INIT_VAR(cacheFile); ZEPHIR_CONCAT_VV(cacheFile, cacheDir, prefixedKey); if ((zephir_file_exists(cacheFile TSRMLS_CC) == SUCCESS) == 1) { ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (!(zephir_is_true(lifetime))) { ZEPHIR_OBS_VAR(lastLifetime); zephir_read_property_this(&lastLifetime, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(lastLifetime))) { ZEPHIR_CALL_METHOD(&_3, frontend, "getlifetime", NULL); zephir_check_call_status(); ttl = zephir_get_intval(_3); } else { ttl = zephir_get_intval(lastLifetime); } } else { ttl = zephir_get_intval(lifetime); } ZEPHIR_INIT_VAR(_4); zephir_filemtime(_4, cacheFile TSRMLS_CC); modifiedTime = zephir_get_intval(_4); ZEPHIR_INIT_VAR(_5); zephir_time(_5); if (!((zephir_get_numberval(_5) - ttl) > modifiedTime)) { ZEPHIR_INIT_VAR(cachedContent); zephir_file_get_contents(cachedContent, cacheFile TSRMLS_CC); if (ZEPHIR_IS_FALSE_IDENTICAL(cachedContent)) { ZEPHIR_INIT_VAR(_6); object_init_ex(_6, phalcon_cache_exception_ce); ZEPHIR_INIT_VAR(_7); ZEPHIR_CONCAT_SVS(_7, "Cache file ", cacheFile, " could not be opened"); ZEPHIR_CALL_METHOD(NULL, _6, "__construct", &_8, _7); zephir_check_call_status(); zephir_throw_exception_debug(_6, "phalcon/cache/backend/file.zep", 151 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } else { ZEPHIR_CALL_METHOD(&ret, frontend, "afterretrieve", NULL, cachedContent); zephir_check_call_status(); RETURN_CCTOR(ret); } } } ZEPHIR_MM_RESTORE(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param long lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Mongo, save) { zval *_2$$14; int ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer_param = NULL, *lastkey = NULL, *frontend = NULL, *cachedContent = NULL, *tmp = NULL, *ttl = NULL, *collection = NULL, *timestamp = NULL, *conditions = NULL, *document = NULL, *preparedContent = NULL, *isBuffering = NULL, *data = NULL, *success = NULL, *_1, *_0$$4, *_3$$14; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } ZEPHIR_INIT_VAR(conditions); array_init(conditions); ZEPHIR_INIT_VAR(data); array_init(data); if (Z_TYPE_P(keyName) == IS_NULL) { ZEPHIR_OBS_VAR(lastkey); zephir_read_property_this(&lastkey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { _0$$4 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(lastkey); ZEPHIR_CONCAT_VV(lastkey, _0$$4, keyName); zephir_update_property_this(this_ptr, SL("_lastKey"), lastkey TSRMLS_CC); } if (!(zephir_is_true(lastkey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/mongo.zep", 208); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (Z_TYPE_P(content) == IS_NULL) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, 0, cachedContent); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(preparedContent, cachedContent); } if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&ttl, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(ttl, tmp); } } else { ZEPHIR_CPY_WRT(ttl, lifetime); } ZEPHIR_CALL_METHOD(&collection, this_ptr, "_getcollection", NULL, 117); zephir_check_call_status(); ZEPHIR_INIT_VAR(_1); zephir_time(_1); ZEPHIR_INIT_VAR(timestamp); ZVAL_LONG(timestamp, (zephir_get_numberval(_1) + zephir_get_intval(ttl))); zephir_array_update_string(&conditions, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&document, collection, "findone", NULL, 0, conditions); zephir_check_call_status(); if (Z_TYPE_P(document) == IS_ARRAY) { zephir_array_update_string(&document, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); zephir_array_update_string(&document, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_VAR(_2$$14); zephir_create_array(_2$$14, 1, 0 TSRMLS_CC); ZEPHIR_OBS_VAR(_3$$14); zephir_array_fetch_string(&_3$$14, document, SL("_id"), PH_NOISY, "phalcon/cache/backend/mongo.zep", 243 TSRMLS_CC); zephir_array_update_string(&_2$$14, SL("_id"), &_3$$14, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&success, collection, "update", NULL, 0, _2$$14, document); zephir_check_call_status(); } else { zephir_array_update_string(&data, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); zephir_array_update_string(&data, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); zephir_array_update_string(&data, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&success, collection, "insert", NULL, 0, data); zephir_check_call_status(); } if (!(zephir_is_true(success))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Failed storing data in mongodb", "phalcon/cache/backend/mongo.zep", 252); return; } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } if (0) { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } RETURN_CCTOR(success); }
/** * Stores cached content into the file backend and stops the frontend * * <code> * $cache->save("my-key", $data); * * // Save data termlessly * $cache->save("my-key", $data, -1); * </code> * * @param int|string keyName * @param string content * @param int lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Redis, save) { zend_long ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer_param = NULL, *prefixedKey = NULL, *lastKey = NULL, *frontend = NULL, *redis = NULL, *cachedContent = NULL, *preparedContent = NULL, *tmp = NULL, *tt1 = NULL, *success = NULL, *options = NULL, *specialKey = NULL, *isBuffering = NULL, _0$$3, *_1$$4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } if (Z_TYPE_P(keyName) == IS_NULL) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); ZEPHIR_SINIT_VAR(_0$$3); ZVAL_LONG(&_0$$3, 5); ZEPHIR_INIT_VAR(prefixedKey); zephir_substr(prefixedKey, lastKey, 5 , 0, ZEPHIR_SUBSTR_NO_LENGTH); } else { _1$$4 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, _1$$4, keyName); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_SV(lastKey, "_PHCR", prefixedKey); zephir_update_property_this(getThis(), SL("_lastKey"), lastKey TSRMLS_CC); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "The cache must be started first", "phalcon/cache/backend/redis.zep", 212); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); if (Z_TYPE_P(redis) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); } if (Z_TYPE_P(content) == IS_NULL) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, 0, cachedContent); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(preparedContent, cachedContent); } if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&tt1, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(tt1, tmp); } } else { ZEPHIR_CPY_WRT(tt1, lifetime); } ZEPHIR_CALL_METHOD(&success, redis, "set", NULL, 0, lastKey, preparedContent); zephir_check_call_status(); if (!(zephir_is_true(success))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Failed storing the data in redis", "phalcon/cache/backend/redis.zep", 256); return; } if (ZEPHIR_GE_LONG(tt1, 1)) { ZEPHIR_CALL_METHOD(NULL, redis, "settimeout", NULL, 0, lastKey, tt1); zephir_check_call_status(); } ZEPHIR_OBS_VAR(options); zephir_read_property_this(&options, this_ptr, SL("_options"), PH_NOISY_CC); ZEPHIR_OBS_VAR(specialKey); if (!(zephir_array_isset_string_fetch(&specialKey, options, SS("statsKey"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/redis.zep", 267); return; } if (!ZEPHIR_IS_STRING(specialKey, "")) { ZEPHIR_CALL_METHOD(NULL, redis, "sadd", NULL, 0, specialKey, prefixedKey); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } if (0) { zephir_update_property_this(getThis(), SL("_started"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(getThis(), SL("_started"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } RETURN_CCTOR(success); }
/** * Handles routing information received from the rewrite engine * *<code> * //Read the info from the rewrite engine * $router->handle(); * * //Manually passing an URL * $router->handle('/posts/edit/1'); *</code> */ PHP_METHOD(Phalcon_Mvc_Router, handle) { zval *_21$$28 = NULL, *_28$$37 = NULL, *_30$$40 = NULL; HashTable *_6, *_25$$33; HashPosition _5, _24$$33; zend_bool _1; zephir_fcall_cache_entry *_18 = NULL, *_20 = NULL, *_23 = NULL, *_31 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *uri_param = NULL, *realUri = NULL, *request = NULL, *currentHostName = NULL, *routeFound = NULL, *parts = NULL, *params = NULL, *matches = NULL, *notFoundPaths = NULL, *vnamespace = NULL, *module = NULL, *controller = NULL, *action = NULL, *paramsStr = NULL, *strParams = NULL, *route = NULL, *methods = NULL, *dependencyInjector = NULL, *hostname = NULL, *regexHostName = NULL, *matched = NULL, *pattern = NULL, *handledUri = NULL, *beforeMatch = NULL, *paths = NULL, *converters = NULL, *part = NULL, *position = NULL, *matchPosition = NULL, *converter = NULL, *eventsManager = NULL, *_0, *_4, **_7, *_32, *_33, *_34, *_35, *_36, _2$$5, *_3$$7, *_8$$10, *_9$$10 = NULL, *_10$$10 = NULL, *_11$$9 = NULL, *_12$$9 = NULL, *_13$$14, *_14$$14 = NULL, *_15$$14 = NULL, *_16$$18 = NULL, *_17$$23 = NULL, *_19$$27 = NULL, *_22$$31 = NULL, **_26$$33, *_27$$37 = NULL, *_29$$40 = NULL, _37$$55, *_38$$57, *_39$$59; zval *uri = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &uri_param); if (!uri_param) { ZEPHIR_INIT_VAR(uri); ZVAL_EMPTY_STRING(uri); } else { zephir_get_strval(uri, uri_param); } if (!(!(!uri) && Z_STRLEN_P(uri))) { ZEPHIR_CALL_METHOD(&realUri, this_ptr, "getrewriteuri", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(realUri, uri); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_removeExtraSlashes"), PH_NOISY_CC); _1 = zephir_is_true(_0); if (_1) { _1 = !ZEPHIR_IS_STRING(realUri, "/"); } if (_1) { ZEPHIR_SINIT_VAR(_2$$5); ZVAL_STRING(&_2$$5, "/", 0); ZEPHIR_INIT_VAR(handledUri); zephir_fast_trim(handledUri, realUri, &_2$$5, ZEPHIR_TRIM_RIGHT TSRMLS_CC); } else { ZEPHIR_CPY_WRT(handledUri, realUri); } ZEPHIR_INIT_VAR(request); ZVAL_NULL(request); ZEPHIR_INIT_VAR(currentHostName); ZVAL_NULL(currentHostName); ZEPHIR_INIT_VAR(routeFound); ZVAL_BOOL(routeFound, 0); ZEPHIR_INIT_VAR(parts); array_init(parts); ZEPHIR_INIT_VAR(params); array_init(params); ZEPHIR_INIT_VAR(matches); ZVAL_NULL(matches); if (0) { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } zephir_update_property_this(this_ptr, SL("_matchedRoute"), ZEPHIR_GLOBAL(global_null) TSRMLS_CC); ZEPHIR_OBS_VAR(eventsManager); zephir_read_property_this(&eventsManager, this_ptr, SL("_eventsManager"), PH_NOISY_CC); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_3$$7); ZVAL_STRING(_3$$7, "router:beforeCheckRoutes", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _3$$7, this_ptr); zephir_check_temp_parameter(_3$$7); zephir_check_call_status(); } _4 = zephir_fetch_nproperty_this(this_ptr, SL("_routes"), PH_NOISY_CC); zephir_is_iterable(_4, &_6, &_5, 0, 1, "phalcon/mvc/router.zep", 558); for ( ; zephir_hash_get_current_data_ex(_6, (void**) &_7, &_5) == SUCCESS ; zephir_hash_move_backwards_ex(_6, &_5) ) { ZEPHIR_GET_HVALUE(route, _7); ZEPHIR_INIT_NVAR(params); array_init(params); ZEPHIR_INIT_NVAR(matches); ZVAL_NULL(matches); ZEPHIR_CALL_METHOD(&methods, route, "gethttpmethods", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(methods) != IS_NULL) { if (Z_TYPE_P(request) == IS_NULL) { _8$$10 = zephir_fetch_nproperty_this(this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); ZEPHIR_CPY_WRT(dependencyInjector, _8$$10); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "A dependency injection container is required to access the 'request' service", "phalcon/mvc/router.zep", 384); return; } ZEPHIR_INIT_NVAR(_10$$10); ZVAL_STRING(_10$$10, "request", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_9$$10, dependencyInjector, "getshared", NULL, 0, _10$$10); zephir_check_temp_parameter(_10$$10); zephir_check_call_status(); ZEPHIR_CPY_WRT(request, _9$$10); } ZEPHIR_INIT_NVAR(_12$$9); ZVAL_BOOL(_12$$9, 1); ZEPHIR_CALL_METHOD(&_11$$9, request, "ismethod", NULL, 0, methods, _12$$9); zephir_check_call_status(); if (ZEPHIR_IS_FALSE_IDENTICAL(_11$$9)) { continue; } } ZEPHIR_CALL_METHOD(&hostname, route, "gethostname", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(hostname) != IS_NULL) { if (Z_TYPE_P(request) == IS_NULL) { _13$$14 = zephir_fetch_nproperty_this(this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); ZEPHIR_CPY_WRT(dependencyInjector, _13$$14); if (Z_TYPE_P(dependencyInjector) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "A dependency injection container is required to access the 'request' service", "phalcon/mvc/router.zep", 411); return; } ZEPHIR_INIT_NVAR(_15$$14); ZVAL_STRING(_15$$14, "request", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_14$$14, dependencyInjector, "getshared", NULL, 0, _15$$14); zephir_check_temp_parameter(_15$$14); zephir_check_call_status(); ZEPHIR_CPY_WRT(request, _14$$14); } if (Z_TYPE_P(currentHostName) != IS_OBJECT) { ZEPHIR_CALL_METHOD(¤tHostName, request, "gethttphost", NULL, 0); zephir_check_call_status(); } if (Z_TYPE_P(currentHostName) == IS_NULL) { continue; } if (zephir_memnstr_str(hostname, SL("("), "phalcon/mvc/router.zep", 434)) { if (!(zephir_memnstr_str(hostname, SL("#"), "phalcon/mvc/router.zep", 435))) { ZEPHIR_INIT_NVAR(regexHostName); ZEPHIR_CONCAT_SVS(regexHostName, "#^", hostname, "$#"); } else { ZEPHIR_CPY_WRT(regexHostName, hostname); } ZEPHIR_INIT_NVAR(_16$$18); ZEPHIR_INIT_NVAR(matched); zephir_preg_match(matched, regexHostName, currentHostName, _16$$18, 0, 0 , 0 TSRMLS_CC); } else { ZEPHIR_INIT_NVAR(matched); ZVAL_BOOL(matched, ZEPHIR_IS_EQUAL(currentHostName, hostname)); } if (!(zephir_is_true(matched))) { continue; } } if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_17$$23); ZVAL_STRING(_17$$23, "router:beforeCheckRoute", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", &_18, 0, _17$$23, this_ptr, route); zephir_check_temp_parameter(_17$$23); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&pattern, route, "getcompiledpattern", NULL, 0); zephir_check_call_status(); if (zephir_memnstr_str(pattern, SL("^"), "phalcon/mvc/router.zep", 459)) { ZEPHIR_INIT_NVAR(routeFound); zephir_preg_match(routeFound, pattern, handledUri, matches, 0, 0 , 0 TSRMLS_CC); } else { ZEPHIR_INIT_NVAR(routeFound); ZVAL_BOOL(routeFound, ZEPHIR_IS_EQUAL(pattern, handledUri)); } if (zephir_is_true(routeFound)) { if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_19$$27); ZVAL_STRING(_19$$27, "router:matchedRoute", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", &_20, 0, _19$$27, this_ptr, route); zephir_check_temp_parameter(_19$$27); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&beforeMatch, route, "getbeforematch", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(beforeMatch) != IS_NULL) { if (!(zephir_is_callable(beforeMatch TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "Before-Match callback is not callable in matched route", "phalcon/mvc/router.zep", 481); return; } ZEPHIR_INIT_NVAR(_21$$28); zephir_create_array(_21$$28, 3, 0 TSRMLS_CC); zephir_array_fast_append(_21$$28, handledUri); zephir_array_fast_append(_21$$28, route); zephir_array_fast_append(_21$$28, this_ptr); ZEPHIR_INIT_NVAR(routeFound); ZEPHIR_CALL_USER_FUNC_ARRAY(routeFound, beforeMatch, _21$$28); zephir_check_call_status(); } } else { if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_22$$31); ZVAL_STRING(_22$$31, "router:notMatchedRoute", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&routeFound, eventsManager, "fire", &_23, 0, _22$$31, this_ptr, route); zephir_check_temp_parameter(_22$$31); zephir_check_call_status(); } } if (zephir_is_true(routeFound)) { ZEPHIR_CALL_METHOD(&paths, route, "getpaths", NULL, 0); zephir_check_call_status(); ZEPHIR_CPY_WRT(parts, paths); if (Z_TYPE_P(matches) == IS_ARRAY) { ZEPHIR_CALL_METHOD(&converters, route, "getconverters", NULL, 0); zephir_check_call_status(); zephir_is_iterable(paths, &_25$$33, &_24$$33, 0, 0, "phalcon/mvc/router.zep", 547); for ( ; zephir_hash_get_current_data_ex(_25$$33, (void**) &_26$$33, &_24$$33) == SUCCESS ; zephir_hash_move_forward_ex(_25$$33, &_24$$33) ) { ZEPHIR_GET_HMKEY(part, _25$$33, _24$$33); ZEPHIR_GET_HVALUE(position, _26$$33); ZEPHIR_OBS_NVAR(matchPosition); if (zephir_array_isset_fetch(&matchPosition, matches, position, 0 TSRMLS_CC)) { if (Z_TYPE_P(converters) == IS_ARRAY) { ZEPHIR_OBS_NVAR(converter); if (zephir_array_isset_fetch(&converter, converters, part, 0 TSRMLS_CC)) { ZEPHIR_INIT_NVAR(_27$$37); ZEPHIR_INIT_NVAR(_28$$37); zephir_create_array(_28$$37, 1, 0 TSRMLS_CC); zephir_array_fast_append(_28$$37, matchPosition); ZEPHIR_CALL_USER_FUNC_ARRAY(_27$$37, converter, _28$$37); zephir_check_call_status(); zephir_array_update_zval(&parts, part, &_27$$37, PH_COPY | PH_SEPARATE); continue; } } zephir_array_update_zval(&parts, part, &matchPosition, PH_COPY | PH_SEPARATE); } else { if (Z_TYPE_P(converters) == IS_ARRAY) { ZEPHIR_OBS_NVAR(converter); if (zephir_array_isset_fetch(&converter, converters, part, 0 TSRMLS_CC)) { ZEPHIR_INIT_NVAR(_29$$40); ZEPHIR_INIT_NVAR(_30$$40); zephir_create_array(_30$$40, 1, 0 TSRMLS_CC); zephir_array_fast_append(_30$$40, position); ZEPHIR_CALL_USER_FUNC_ARRAY(_29$$40, converter, _30$$40); zephir_check_call_status(); zephir_array_update_zval(&parts, part, &_29$$40, PH_COPY | PH_SEPARATE); } } } } zephir_update_property_this(this_ptr, SL("_matches"), matches TSRMLS_CC); } zephir_update_property_this(this_ptr, SL("_matchedRoute"), route TSRMLS_CC); break; } } if (zephir_is_true(routeFound)) { if (1) { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } } else { if (0) { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_wasMatched"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } } if (!(zephir_is_true(routeFound))) { ZEPHIR_OBS_VAR(notFoundPaths); zephir_read_property_this(¬FoundPaths, this_ptr, SL("_notFoundPaths"), PH_NOISY_CC); if (Z_TYPE_P(notFoundPaths) != IS_NULL) { ZEPHIR_CALL_CE_STATIC(&parts, phalcon_mvc_router_route_ce, "getroutepaths", &_31, 79, notFoundPaths); zephir_check_call_status(); ZEPHIR_INIT_NVAR(routeFound); ZVAL_BOOL(routeFound, 1); } } _32 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultNamespace"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_namespace"), _32 TSRMLS_CC); _33 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultModule"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_module"), _33 TSRMLS_CC); _34 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultController"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_controller"), _34 TSRMLS_CC); _35 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAction"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_action"), _35 TSRMLS_CC); _36 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultParams"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_params"), _36 TSRMLS_CC); if (zephir_is_true(routeFound)) { ZEPHIR_OBS_VAR(vnamespace); if (zephir_array_isset_string_fetch(&vnamespace, parts, SS("namespace"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(vnamespace))) { zephir_update_property_this(this_ptr, SL("_namespace"), vnamespace TSRMLS_CC); } zephir_array_unset_string(&parts, SS("namespace"), PH_SEPARATE); } ZEPHIR_OBS_VAR(module); if (zephir_array_isset_string_fetch(&module, parts, SS("module"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(module))) { zephir_update_property_this(this_ptr, SL("_module"), module TSRMLS_CC); } zephir_array_unset_string(&parts, SS("module"), PH_SEPARATE); } ZEPHIR_OBS_VAR(controller); if (zephir_array_isset_string_fetch(&controller, parts, SS("controller"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(controller))) { zephir_update_property_this(this_ptr, SL("_controller"), controller TSRMLS_CC); } zephir_array_unset_string(&parts, SS("controller"), PH_SEPARATE); } ZEPHIR_OBS_VAR(action); if (zephir_array_isset_string_fetch(&action, parts, SS("action"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(action))) { zephir_update_property_this(this_ptr, SL("_action"), action TSRMLS_CC); } zephir_array_unset_string(&parts, SS("action"), PH_SEPARATE); } ZEPHIR_OBS_VAR(paramsStr); if (zephir_array_isset_string_fetch(¶msStr, parts, SS("params"), 0 TSRMLS_CC)) { if (Z_TYPE_P(paramsStr) == IS_STRING) { ZEPHIR_SINIT_VAR(_37$$55); ZVAL_STRING(&_37$$55, "/", 0); ZEPHIR_INIT_VAR(strParams); zephir_fast_trim(strParams, paramsStr, &_37$$55, ZEPHIR_TRIM_BOTH TSRMLS_CC); if (!ZEPHIR_IS_STRING_IDENTICAL(strParams, "")) { ZEPHIR_INIT_NVAR(params); zephir_fast_explode_str(params, SL("/"), strParams, LONG_MAX TSRMLS_CC); } } zephir_array_unset_string(&parts, SS("params"), PH_SEPARATE); } if (zephir_fast_count_int(params TSRMLS_CC)) { ZEPHIR_INIT_VAR(_38$$57); zephir_fast_array_merge(_38$$57, &(params), &(parts) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("_params"), _38$$57 TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_params"), parts TSRMLS_CC); } } if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_39$$59); ZVAL_STRING(_39$$59, "router:afterCheckRoutes", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _39$$59, this_ptr); zephir_check_temp_parameter(_39$$59); zephir_check_call_status(); } ZEPHIR_MM_RESTORE(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param long lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Mongo, save) { zval *_2; zephir_nts_static zephir_fcall_cache_entry *_0 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer = NULL, *lastkey = NULL, *prefix, *frontend, *cachedContent = NULL, *tmp, *ttl = NULL, *collection = NULL, *timestamp, *conditions, *document = NULL, *preparedContent = NULL, *isBuffering = NULL, *data, *_1, *_3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer) { stopBuffer = ZEPHIR_GLOBAL(global_true); } ZEPHIR_INIT_VAR(conditions); array_init(conditions); ZEPHIR_INIT_VAR(data); array_init(data); if (!(zephir_is_true(keyName))) { ZEPHIR_OBS_VAR(lastkey); zephir_read_property_this(&lastkey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { ZEPHIR_OBS_VAR(prefix); zephir_read_property_this(&prefix, this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(lastkey); ZEPHIR_CONCAT_VV(lastkey, prefix, keyName); } if (!(zephir_is_true(lastkey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/mongo.zep", 206); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (!(zephir_is_true(content))) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, cachedContent); zephir_check_call_status(); } if (!(zephir_is_true(lifetime))) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&ttl, frontend, "getlifetime", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(ttl, tmp); } } else { ZEPHIR_CPY_WRT(ttl, lifetime); } ZEPHIR_CALL_METHOD(&collection, this_ptr, "_getcollection", &_0); zephir_check_call_status(); ZEPHIR_INIT_VAR(_1); zephir_time(_1); ZEPHIR_INIT_VAR(timestamp); ZVAL_LONG(timestamp, (zephir_get_numberval(_1) + zephir_get_intval(ttl))); zephir_array_update_string(&conditions, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&document, collection, "findone", NULL, conditions); zephir_check_call_status(); if (Z_TYPE_P(document) == IS_ARRAY) { zephir_array_update_string(&document, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); if (!(zephir_is_numeric(cachedContent))) { zephir_array_update_string(&document, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); } else { zephir_array_update_string(&document, SL("data"), &cachedContent, PH_COPY | PH_SEPARATE); } ZEPHIR_INIT_VAR(_2); zephir_create_array(_2, 1, 0 TSRMLS_CC); ZEPHIR_OBS_VAR(_3); zephir_array_fetch_string(&_3, document, SL("_id"), PH_NOISY, "phalcon/cache/backend/mongo.zep", 246 TSRMLS_CC); zephir_array_update_string(&_2, SL("_id"), &_3, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(NULL, collection, "update", NULL, _2, document); zephir_check_call_status(); } else { zephir_array_update_string(&data, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); zephir_array_update_string(&data, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); if (!(zephir_is_numeric(cachedContent))) { zephir_array_update_string(&data, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); } else { zephir_array_update_string(&data, SL("data"), &cachedContent, PH_COPY | PH_SEPARATE); } ZEPHIR_CALL_METHOD(NULL, collection, "insert", NULL, data); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL); zephir_check_call_status(); if (ZEPHIR_IS_TRUE_IDENTICAL(stopBuffer)) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } zephir_update_property_this(this_ptr, SL("_started"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); ZEPHIR_MM_RESTORE(); }
/** * Prepare an HTML string of information about a single variable. */ PHP_METHOD(Phalcon_Debug_Dump, output) { zend_bool _17$$5, _18$$5, _19$$5; HashTable *_8$$4, *_42$$11, *_76$$20; HashPosition _7$$4, _41$$11, _75$$20; zval *_123, *_1$$4, *_13$$5 = NULL, *_26$$8, *_68$$8, *_32$$9, *_46$$12 = NULL, *_60$$14 = NULL, *_81$$22 = NULL, *_87$$23 = NULL, *_95$$24, *_100$$25, *_104$$26, *_108$$27, *_114$$28, *_119$$29; zephir_fcall_cache_entry *_4 = NULL, *_6 = NULL, *_12 = NULL, *_23 = NULL, *_31 = NULL, *_53 = NULL, *_57 = NULL, *_62 = NULL; int tab, ZEPHIR_LAST_CALL_STATUS; zval *name = NULL, *_0$$3; zval *variable, *name_param = NULL, *tab_param = NULL, *key = NULL, *value = NULL, *output = NULL, *space = NULL, *type = NULL, *attr = NULL, *_99 = NULL, *_124 = NULL, *_125, _126, *_2$$4 = NULL, *_3$$4, _5$$4 = zval_used_for_init, **_9$$4, *_25$$4 = NULL, _10$$5 = zval_used_for_init, *_11$$5 = NULL, *_14$$5 = NULL, *_15$$5 = NULL, *_16$$5 = NULL, *_20$$7 = NULL, *_21$$7 = NULL, *_22$$7 = NULL, *_24$$7 = NULL, *_27$$8 = NULL, *_28$$8 = NULL, _29$$8 = zval_used_for_init, *_30$$8 = NULL, *_36$$8, *_67$$8 = NULL, *_69$$8 = NULL, *_70$$8, *_71$$8, *_94$$8 = NULL, *_33$$9 = NULL, *_34$$9, _35$$9, _37$$10, *_38$$10 = NULL, *_39$$10, *_40$$11 = NULL, **_43$$11, _44$$12 = zval_used_for_init, *_45$$12 = NULL, *_47$$12 = NULL, *_48$$12 = NULL, *_49$$12 = NULL, *_50$$12 = NULL, *_51$$12 = NULL, *_52$$12 = NULL, *_54$$14 = NULL, _55$$14 = zval_used_for_init, *_56$$14 = NULL, *_59$$14 = NULL, *_61$$14 = NULL, *_63$$14 = NULL, *_64$$14 = NULL, *_65$$14 = NULL, *_66$$14 = NULL, *_58$$17, _72$$19, *_73$$19 = NULL, *_74$$19, **_77$$20, _91$$20, *_92$$20 = NULL, *_93$$20, *_78$$21 = NULL, _79$$22 = zval_used_for_init, *_80$$22 = NULL, *_82$$22 = NULL, *_83$$22 = NULL, *_84$$22 = NULL, _85$$23 = zval_used_for_init, *_86$$23 = NULL, *_88$$23 = NULL, *_89$$23 = NULL, *_90$$23 = NULL, *_96$$24 = NULL, *_97$$24, _98$$24, *_101$$25 = NULL, *_102$$25, _103$$25, *_105$$26 = NULL, *_106$$26, _107$$26, *_109$$27 = NULL, *_110$$27, _111$$27 = zval_used_for_init, _112$$27, *_113$$27 = NULL, *_115$$28 = NULL, *_116$$28, *_117$$28 = NULL, _118$$28, *_120$$29 = NULL, *_121$$29, _122$$29; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 2, &variable, &name_param, &tab_param); if (!name_param) { ZEPHIR_INIT_VAR(name); ZVAL_EMPTY_STRING(name); } else { zephir_get_strval(name, name_param); } if (!tab_param) { tab = 1; } else { tab = zephir_get_intval(tab_param); } ZEPHIR_INIT_VAR(space); ZVAL_STRING(space, " ", 1); ZEPHIR_INIT_VAR(output); ZVAL_STRING(output, "", 1); if (!(!name) && Z_STRLEN_P(name)) { ZEPHIR_INIT_VAR(_0$$3); ZEPHIR_CONCAT_VS(_0$$3, name, " "); ZEPHIR_CPY_WRT(output, _0$$3); } if (Z_TYPE_P(variable) == IS_ARRAY) { ZEPHIR_INIT_VAR(_1$$4); zephir_create_array(_1$$4, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_3$$4); ZVAL_STRING(_3$$4, "arr", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "getstyle", &_4, 0, _3$$4); zephir_check_temp_parameter(_3$$4); zephir_check_call_status(); zephir_array_update_string(&_1$$4, SL(":style"), &_2$$4, PH_COPY | PH_SEPARATE); add_assoc_long_ex(_1$$4, SS(":count"), zephir_fast_count_int(variable TSRMLS_CC)); ZEPHIR_SINIT_VAR(_5$$4); ZVAL_STRING(&_5$$4, "<b style =':style'>Array</b> (<span style =':style'>:count</span>) (\n", 0); ZEPHIR_CALL_FUNCTION(&_2$$4, "strtr", &_6, 26, &_5$$4, _1$$4); zephir_check_call_status(); zephir_concat_self(&output, _2$$4 TSRMLS_CC); zephir_is_iterable(variable, &_8$$4, &_7$$4, 0, 0, "phalcon/debug/dump.zep", 156); for ( ; zephir_hash_get_current_data_ex(_8$$4, (void**) &_9$$4, &_7$$4) == SUCCESS ; zephir_hash_move_forward_ex(_8$$4, &_7$$4) ) { ZEPHIR_GET_HMKEY(key, _8$$4, _7$$4); ZEPHIR_GET_HVALUE(value, _9$$4); ZEPHIR_SINIT_NVAR(_10$$5); ZVAL_LONG(&_10$$5, tab); ZEPHIR_CALL_FUNCTION(&_11$$5, "str_repeat", &_12, 142, space, &_10$$5); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_13$$5); zephir_create_array(_13$$5, 2, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_15$$5); ZVAL_STRING(_15$$5, "arr", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_14$$5, this_ptr, "getstyle", &_4, 0, _15$$5); zephir_check_temp_parameter(_15$$5); zephir_check_call_status(); zephir_array_update_string(&_13$$5, SL(":style"), &_14$$5, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_13$$5, SL(":key"), &key, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_NVAR(_10$$5); ZVAL_STRING(&_10$$5, "[<span style=':style'>:key</span>] => ", 0); ZEPHIR_CALL_FUNCTION(&_14$$5, "strtr", &_6, 26, &_10$$5, _13$$5); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_16$$5); ZEPHIR_CONCAT_VV(_16$$5, _11$$5, _14$$5); zephir_concat_self(&output, _16$$5 TSRMLS_CC); _17$$5 = tab == 1; if (_17$$5) { _17$$5 = !ZEPHIR_IS_STRING(name, ""); } _18$$5 = _17$$5; if (_18$$5) { _18$$5 = !(Z_TYPE_P(key) == IS_LONG); } _19$$5 = _18$$5; if (_19$$5) { _19$$5 = ZEPHIR_IS_EQUAL(name, key); } if (_19$$5) { continue; } else { ZEPHIR_INIT_NVAR(_21$$7); ZVAL_STRING(_21$$7, "", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_INIT_NVAR(_22$$7); ZVAL_LONG(_22$$7, (tab + 1)); ZEPHIR_CALL_METHOD(&_20$$7, this_ptr, "output", &_23, 175, value, _21$$7, _22$$7); zephir_check_temp_parameter(_21$$7); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_24$$7); ZEPHIR_CONCAT_VS(_24$$7, _20$$7, "\n"); zephir_concat_self(&output, _24$$7 TSRMLS_CC); } } ZEPHIR_SINIT_NVAR(_5$$4); ZVAL_LONG(&_5$$4, (tab - 1)); ZEPHIR_CALL_FUNCTION(&_25$$4, "str_repeat", &_12, 142, space, &_5$$4); zephir_check_call_status(); ZEPHIR_CONCAT_VVS(return_value, output, _25$$4, ")"); RETURN_MM(); } if (Z_TYPE_P(variable) == IS_OBJECT) { ZEPHIR_INIT_VAR(_26$$8); zephir_create_array(_26$$8, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_28$$8); ZVAL_STRING(_28$$8, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_27$$8, this_ptr, "getstyle", &_4, 0, _28$$8); zephir_check_temp_parameter(_28$$8); zephir_check_call_status(); zephir_array_update_string(&_26$$8, SL(":style"), &_27$$8, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_NVAR(_28$$8); zephir_get_class(_28$$8, variable, 0 TSRMLS_CC); zephir_array_update_string(&_26$$8, SL(":class"), &_28$$8, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_29$$8); ZVAL_STRING(&_29$$8, "<b style=':style'>Object</b> :class", 0); ZEPHIR_CALL_FUNCTION(&_27$$8, "strtr", &_6, 26, &_29$$8, _26$$8); zephir_check_call_status(); zephir_concat_self(&output, _27$$8 TSRMLS_CC); ZEPHIR_CALL_FUNCTION(&_30$$8, "get_parent_class", &_31, 176, variable); zephir_check_call_status(); if (zephir_is_true(_30$$8)) { ZEPHIR_INIT_VAR(_32$$9); zephir_create_array(_32$$9, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_34$$9); ZVAL_STRING(_34$$9, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_33$$9, this_ptr, "getstyle", &_4, 0, _34$$9); zephir_check_temp_parameter(_34$$9); zephir_check_call_status(); zephir_array_update_string(&_32$$9, SL(":style"), &_33$$9, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_FUNCTION(&_33$$9, "get_parent_class", &_31, 176, variable); zephir_check_call_status(); zephir_array_update_string(&_32$$9, SL(":parent"), &_33$$9, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_35$$9); ZVAL_STRING(&_35$$9, " <b style=':style'>extends</b> :parent", 0); ZEPHIR_CALL_FUNCTION(&_33$$9, "strtr", &_6, 26, &_35$$9, _32$$9); zephir_check_call_status(); zephir_concat_self(&output, _33$$9 TSRMLS_CC); } zephir_concat_self_str(&output, SL(" (\n") TSRMLS_CC); _36$$8 = zephir_fetch_nproperty_this(this_ptr, SL("_detailed"), PH_NOISY_CC); if (zephir_instance_of_ev(variable, phalcon_di_ce TSRMLS_CC)) { ZEPHIR_SINIT_VAR(_37$$10); ZVAL_LONG(&_37$$10, tab); ZEPHIR_CALL_FUNCTION(&_38$$10, "str_repeat", &_12, 142, space, &_37$$10); zephir_check_call_status(); ZEPHIR_INIT_VAR(_39$$10); ZEPHIR_CONCAT_VS(_39$$10, _38$$10, "[skipped]\n"); zephir_concat_self(&output, _39$$10 TSRMLS_CC); } else if (!(zephir_is_true(_36$$8))) { ZEPHIR_CALL_FUNCTION(&_40$$11, "get_object_vars", NULL, 21, variable); zephir_check_call_status(); zephir_is_iterable(_40$$11, &_42$$11, &_41$$11, 0, 0, "phalcon/debug/dump.zep", 177); for ( ; zephir_hash_get_current_data_ex(_42$$11, (void**) &_43$$11, &_41$$11) == SUCCESS ; zephir_hash_move_forward_ex(_42$$11, &_41$$11) ) { ZEPHIR_GET_HMKEY(key, _42$$11, _41$$11); ZEPHIR_GET_HVALUE(value, _43$$11); ZEPHIR_SINIT_NVAR(_44$$12); ZVAL_LONG(&_44$$12, tab); ZEPHIR_CALL_FUNCTION(&_45$$12, "str_repeat", &_12, 142, space, &_44$$12); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_46$$12); zephir_create_array(_46$$12, 3, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_48$$12); ZVAL_STRING(_48$$12, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_47$$12, this_ptr, "getstyle", &_4, 0, _48$$12); zephir_check_temp_parameter(_48$$12); zephir_check_call_status(); zephir_array_update_string(&_46$$12, SL(":style"), &_47$$12, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_46$$12, SL(":key"), &key, PH_COPY | PH_SEPARATE); add_assoc_stringl_ex(_46$$12, SS(":type"), SL("public"), 1); ZEPHIR_SINIT_NVAR(_44$$12); ZVAL_STRING(&_44$$12, "-><span style=':style'>:key</span> (<span style=':style'>:type</span>) = ", 0); ZEPHIR_CALL_FUNCTION(&_47$$12, "strtr", &_6, 26, &_44$$12, _46$$12); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_49$$12); ZEPHIR_CONCAT_VV(_49$$12, _45$$12, _47$$12); zephir_concat_self(&output, _49$$12 TSRMLS_CC); ZEPHIR_INIT_NVAR(_48$$12); ZVAL_STRING(_48$$12, "", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_INIT_NVAR(_51$$12); ZVAL_LONG(_51$$12, (tab + 1)); ZEPHIR_CALL_METHOD(&_50$$12, this_ptr, "output", &_23, 175, value, _48$$12, _51$$12); zephir_check_temp_parameter(_48$$12); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_52$$12); ZEPHIR_CONCAT_VS(_52$$12, _50$$12, "\n"); zephir_concat_self(&output, _52$$12 TSRMLS_CC); } } else { do { ZEPHIR_MAKE_REF(variable); ZEPHIR_CALL_FUNCTION(&attr, "each", &_53, 177, variable); ZEPHIR_UNREF(variable); zephir_check_call_status(); if (!(zephir_is_true(attr))) { continue; } ZEPHIR_OBS_NVAR(key); zephir_array_fetch_string(&key, attr, SL("key"), PH_NOISY, "phalcon/debug/dump.zep", 187 TSRMLS_CC); ZEPHIR_OBS_NVAR(value); zephir_array_fetch_string(&value, attr, SL("value"), PH_NOISY, "phalcon/debug/dump.zep", 188 TSRMLS_CC); if (!(zephir_is_true(key))) { continue; } ZEPHIR_INIT_NVAR(_54$$14); ZEPHIR_SINIT_NVAR(_55$$14); ZVAL_LONG(&_55$$14, 0); ZEPHIR_CALL_FUNCTION(&_56$$14, "chr", &_57, 141, &_55$$14); zephir_check_call_status(); zephir_fast_explode(_54$$14, _56$$14, key, LONG_MAX TSRMLS_CC); ZEPHIR_CPY_WRT(key, _54$$14); ZEPHIR_INIT_NVAR(type); ZVAL_STRING(type, "public", 1); if (zephir_array_isset_long(key, 1)) { ZEPHIR_INIT_NVAR(type); ZVAL_STRING(type, "private", 1); zephir_array_fetch_long(&_58$$17, key, 1, PH_NOISY | PH_READONLY, "phalcon/debug/dump.zep", 200 TSRMLS_CC); if (ZEPHIR_IS_STRING(_58$$17, "*")) { ZEPHIR_INIT_NVAR(type); ZVAL_STRING(type, "protected", 1); } } ZEPHIR_SINIT_NVAR(_55$$14); ZVAL_LONG(&_55$$14, tab); ZEPHIR_CALL_FUNCTION(&_59$$14, "str_repeat", &_12, 142, space, &_55$$14); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_60$$14); zephir_create_array(_60$$14, 3, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_54$$14); ZVAL_STRING(_54$$14, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_61$$14, this_ptr, "getstyle", &_4, 0, _54$$14); zephir_check_temp_parameter(_54$$14); zephir_check_call_status(); zephir_array_update_string(&_60$$14, SL(":style"), &_61$$14, PH_COPY | PH_SEPARATE); ZEPHIR_MAKE_REF(key); ZEPHIR_CALL_FUNCTION(&_61$$14, "end", &_62, 178, key); ZEPHIR_UNREF(key); zephir_check_call_status(); zephir_array_update_string(&_60$$14, SL(":key"), &_61$$14, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_60$$14, SL(":type"), &type, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_NVAR(_55$$14); ZVAL_STRING(&_55$$14, "-><span style=':style'>:key</span> (<span style=':style'>:type</span>) = ", 0); ZEPHIR_CALL_FUNCTION(&_61$$14, "strtr", &_6, 26, &_55$$14, _60$$14); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_63$$14); ZEPHIR_CONCAT_VV(_63$$14, _59$$14, _61$$14); zephir_concat_self(&output, _63$$14 TSRMLS_CC); ZEPHIR_INIT_NVAR(_54$$14); ZVAL_STRING(_54$$14, "", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_INIT_NVAR(_65$$14); ZVAL_LONG(_65$$14, (tab + 1)); ZEPHIR_CALL_METHOD(&_64$$14, this_ptr, "output", &_23, 175, value, _54$$14, _65$$14); zephir_check_temp_parameter(_54$$14); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_66$$14); ZEPHIR_CONCAT_VS(_66$$14, _64$$14, "\n"); zephir_concat_self(&output, _66$$14 TSRMLS_CC); } while (zephir_is_true(attr)); } ZEPHIR_CALL_FUNCTION(&attr, "get_class_methods", NULL, 179, variable); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_29$$8); ZVAL_LONG(&_29$$8, tab); ZEPHIR_CALL_FUNCTION(&_67$$8, "str_repeat", &_12, 142, space, &_29$$8); zephir_check_call_status(); ZEPHIR_INIT_VAR(_68$$8); zephir_create_array(_68$$8, 3, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_28$$8); ZVAL_STRING(_28$$8, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_69$$8, this_ptr, "getstyle", &_4, 0, _28$$8); zephir_check_temp_parameter(_28$$8); zephir_check_call_status(); zephir_array_update_string(&_68$$8, SL(":style"), &_69$$8, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_NVAR(_28$$8); zephir_get_class(_28$$8, variable, 0 TSRMLS_CC); zephir_array_update_string(&_68$$8, SL(":class"), &_28$$8, PH_COPY | PH_SEPARATE); add_assoc_long_ex(_68$$8, SS(":count"), zephir_fast_count_int(attr TSRMLS_CC)); ZEPHIR_SINIT_NVAR(_29$$8); ZVAL_STRING(&_29$$8, ":class <b style=':style'>methods</b>: (<span style=':style'>:count</span>) (\n", 0); ZEPHIR_CALL_FUNCTION(&_69$$8, "strtr", &_6, 26, &_29$$8, _68$$8); zephir_check_call_status(); ZEPHIR_INIT_VAR(_70$$8); ZEPHIR_CONCAT_VV(_70$$8, _67$$8, _69$$8); zephir_concat_self(&output, _70$$8 TSRMLS_CC); ZEPHIR_INIT_NVAR(_28$$8); zephir_get_class(_28$$8, variable, 0 TSRMLS_CC); _71$$8 = zephir_fetch_nproperty_this(this_ptr, SL("_methods"), PH_NOISY_CC); if (zephir_fast_in_array(_28$$8, _71$$8 TSRMLS_CC)) { ZEPHIR_SINIT_VAR(_72$$19); ZVAL_LONG(&_72$$19, tab); ZEPHIR_CALL_FUNCTION(&_73$$19, "str_repeat", &_12, 142, space, &_72$$19); zephir_check_call_status(); ZEPHIR_INIT_VAR(_74$$19); ZEPHIR_CONCAT_VS(_74$$19, _73$$19, "[already listed]\n"); zephir_concat_self(&output, _74$$19 TSRMLS_CC); } else { zephir_is_iterable(attr, &_76$$20, &_75$$20, 0, 0, "phalcon/debug/dump.zep", 226); for ( ; zephir_hash_get_current_data_ex(_76$$20, (void**) &_77$$20, &_75$$20) == SUCCESS ; zephir_hash_move_forward_ex(_76$$20, &_75$$20) ) { ZEPHIR_GET_HVALUE(value, _77$$20); ZEPHIR_INIT_NVAR(_78$$21); zephir_get_class(_78$$21, variable, 0 TSRMLS_CC); zephir_update_property_array_append(this_ptr, SL("_methods"), _78$$21 TSRMLS_CC); if (ZEPHIR_IS_STRING(value, "__construct")) { ZEPHIR_SINIT_NVAR(_79$$22); ZVAL_LONG(&_79$$22, (tab + 1)); ZEPHIR_CALL_FUNCTION(&_80$$22, "str_repeat", &_12, 142, space, &_79$$22); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_81$$22); zephir_create_array(_81$$22, 2, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_83$$22); ZVAL_STRING(_83$$22, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_82$$22, this_ptr, "getstyle", &_4, 0, _83$$22); zephir_check_temp_parameter(_83$$22); zephir_check_call_status(); zephir_array_update_string(&_81$$22, SL(":style"), &_82$$22, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_81$$22, SL(":method"), &value, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_NVAR(_79$$22); ZVAL_STRING(&_79$$22, "-><span style=':style'>:method</span>(); [<b style=':style'>constructor</b>]\n", 0); ZEPHIR_CALL_FUNCTION(&_82$$22, "strtr", &_6, 26, &_79$$22, _81$$22); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_84$$22); ZEPHIR_CONCAT_VV(_84$$22, _80$$22, _82$$22); zephir_concat_self(&output, _84$$22 TSRMLS_CC); } else { ZEPHIR_SINIT_NVAR(_85$$23); ZVAL_LONG(&_85$$23, (tab + 1)); ZEPHIR_CALL_FUNCTION(&_86$$23, "str_repeat", &_12, 142, space, &_85$$23); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_87$$23); zephir_create_array(_87$$23, 2, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_89$$23); ZVAL_STRING(_89$$23, "obj", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_88$$23, this_ptr, "getstyle", &_4, 0, _89$$23); zephir_check_temp_parameter(_89$$23); zephir_check_call_status(); zephir_array_update_string(&_87$$23, SL(":style"), &_88$$23, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_87$$23, SL(":method"), &value, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_NVAR(_85$$23); ZVAL_STRING(&_85$$23, "-><span style=':style'>:method</span>();\n", 0); ZEPHIR_CALL_FUNCTION(&_88$$23, "strtr", &_6, 26, &_85$$23, _87$$23); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_90$$23); ZEPHIR_CONCAT_VV(_90$$23, _86$$23, _88$$23); zephir_concat_self(&output, _90$$23 TSRMLS_CC); } } ZEPHIR_SINIT_VAR(_91$$20); ZVAL_LONG(&_91$$20, tab); ZEPHIR_CALL_FUNCTION(&_92$$20, "str_repeat", &_12, 142, space, &_91$$20); zephir_check_call_status(); ZEPHIR_INIT_VAR(_93$$20); ZEPHIR_CONCAT_VS(_93$$20, _92$$20, ")\n"); zephir_concat_self(&output, _93$$20 TSRMLS_CC); } ZEPHIR_SINIT_NVAR(_29$$8); ZVAL_LONG(&_29$$8, (tab - 1)); ZEPHIR_CALL_FUNCTION(&_94$$8, "str_repeat", &_12, 142, space, &_29$$8); zephir_check_call_status(); ZEPHIR_CONCAT_VVS(return_value, output, _94$$8, ")"); RETURN_MM(); } if (Z_TYPE_P(variable) == IS_LONG) { ZEPHIR_INIT_VAR(_95$$24); zephir_create_array(_95$$24, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_97$$24); ZVAL_STRING(_97$$24, "int", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_96$$24, this_ptr, "getstyle", &_4, 0, _97$$24); zephir_check_temp_parameter(_97$$24); zephir_check_call_status(); zephir_array_update_string(&_95$$24, SL(":style"), &_96$$24, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_95$$24, SL(":var"), &variable, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_98$$24); ZVAL_STRING(&_98$$24, "<b style=':style'>Integer</b> (<span style=':style'>:var</span>)", 0); ZEPHIR_CALL_FUNCTION(&_96$$24, "strtr", &_6, 26, &_98$$24, _95$$24); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _96$$24); RETURN_MM(); } ZEPHIR_CALL_FUNCTION(&_99, "is_float", NULL, 180, variable); zephir_check_call_status(); if (zephir_is_true(_99)) { ZEPHIR_INIT_VAR(_100$$25); zephir_create_array(_100$$25, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_102$$25); ZVAL_STRING(_102$$25, "float", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_101$$25, this_ptr, "getstyle", &_4, 0, _102$$25); zephir_check_temp_parameter(_102$$25); zephir_check_call_status(); zephir_array_update_string(&_100$$25, SL(":style"), &_101$$25, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_100$$25, SL(":var"), &variable, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_103$$25); ZVAL_STRING(&_103$$25, "<b style=':style'>Float</b> (<span style=':style'>:var</span>)", 0); ZEPHIR_CALL_FUNCTION(&_101$$25, "strtr", &_6, 26, &_103$$25, _100$$25); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _101$$25); RETURN_MM(); } if (zephir_is_numeric(variable)) { ZEPHIR_INIT_VAR(_104$$26); zephir_create_array(_104$$26, 3, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_106$$26); ZVAL_STRING(_106$$26, "num", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_105$$26, this_ptr, "getstyle", &_4, 0, _106$$26); zephir_check_temp_parameter(_106$$26); zephir_check_call_status(); zephir_array_update_string(&_104$$26, SL(":style"), &_105$$26, PH_COPY | PH_SEPARATE); add_assoc_long_ex(_104$$26, SS(":length"), zephir_fast_strlen_ev(variable)); zephir_array_update_string(&_104$$26, SL(":var"), &variable, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_107$$26); ZVAL_STRING(&_107$$26, "<b style=':style'>Numeric string</b> (<span style=':style'>:length</span>) \"<span style=':style'>:var</span>\"", 0); ZEPHIR_CALL_FUNCTION(&_105$$26, "strtr", &_6, 26, &_107$$26, _104$$26); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _105$$26); RETURN_MM(); } if (Z_TYPE_P(variable) == IS_STRING) { ZEPHIR_INIT_VAR(_108$$27); zephir_create_array(_108$$27, 3, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_110$$27); ZVAL_STRING(_110$$27, "str", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_109$$27, this_ptr, "getstyle", &_4, 0, _110$$27); zephir_check_temp_parameter(_110$$27); zephir_check_call_status(); zephir_array_update_string(&_108$$27, SL(":style"), &_109$$27, PH_COPY | PH_SEPARATE); add_assoc_long_ex(_108$$27, SS(":length"), zephir_fast_strlen_ev(variable)); ZEPHIR_SINIT_VAR(_111$$27); ZVAL_LONG(&_111$$27, 4); ZEPHIR_SINIT_VAR(_112$$27); ZVAL_STRING(&_112$$27, "utf-8", 0); ZEPHIR_CALL_FUNCTION(&_109$$27, "htmlentities", NULL, 161, variable, &_111$$27, &_112$$27); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_113$$27, "nl2br", NULL, 181, _109$$27); zephir_check_call_status(); zephir_array_update_string(&_108$$27, SL(":var"), &_113$$27, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_NVAR(_111$$27); ZVAL_STRING(&_111$$27, "<b style=':style'>String</b> (<span style=':style'>:length</span>) \"<span style=':style'>:var</span>\"", 0); ZEPHIR_CALL_FUNCTION(&_113$$27, "strtr", &_6, 26, &_111$$27, _108$$27); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _113$$27); RETURN_MM(); } if (Z_TYPE_P(variable) == IS_BOOL) { ZEPHIR_INIT_VAR(_114$$28); zephir_create_array(_114$$28, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_116$$28); ZVAL_STRING(_116$$28, "bool", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_115$$28, this_ptr, "getstyle", &_4, 0, _116$$28); zephir_check_temp_parameter(_116$$28); zephir_check_call_status(); zephir_array_update_string(&_114$$28, SL(":style"), &_115$$28, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_VAR(_117$$28); if (zephir_is_true(variable)) { ZEPHIR_INIT_NVAR(_117$$28); ZVAL_STRING(_117$$28, "TRUE", 1); } else { ZEPHIR_INIT_NVAR(_117$$28); ZVAL_STRING(_117$$28, "FALSE", 1); } zephir_array_update_string(&_114$$28, SL(":var"), &_117$$28, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_118$$28); ZVAL_STRING(&_118$$28, "<b style=':style'>Boolean</b> (<span style=':style'>:var</span>)", 0); ZEPHIR_CALL_FUNCTION(&_115$$28, "strtr", &_6, 26, &_118$$28, _114$$28); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _115$$28); RETURN_MM(); } if (Z_TYPE_P(variable) == IS_NULL) { ZEPHIR_INIT_VAR(_119$$29); zephir_create_array(_119$$29, 1, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_121$$29); ZVAL_STRING(_121$$29, "null", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_120$$29, this_ptr, "getstyle", &_4, 0, _121$$29); zephir_check_temp_parameter(_121$$29); zephir_check_call_status(); zephir_array_update_string(&_119$$29, SL(":style"), &_120$$29, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_122$$29); ZVAL_STRING(&_122$$29, "<b style=':style'>NULL</b>", 0); ZEPHIR_CALL_FUNCTION(&_120$$29, "strtr", &_6, 26, &_122$$29, _119$$29); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _120$$29); RETURN_MM(); } ZEPHIR_INIT_VAR(_123); zephir_create_array(_123, 2, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_125); ZVAL_STRING(_125, "other", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_124, this_ptr, "getstyle", &_4, 0, _125); zephir_check_temp_parameter(_125); zephir_check_call_status(); zephir_array_update_string(&_123, SL(":style"), &_124, PH_COPY | PH_SEPARATE); zephir_array_update_string(&_123, SL(":var"), &variable, PH_COPY | PH_SEPARATE); ZEPHIR_SINIT_VAR(_126); ZVAL_STRING(&_126, "(<span style=':style'>:var</span>)", 0); ZEPHIR_CALL_FUNCTION(&_124, "strtr", &_6, 26, &_126, _123); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, output, _124); RETURN_MM(); }
/** * Handles routing information received from the rewrite engine * *<code> * //Read the info from the rewrite engine * $router->handle(); * * //Manually passing an URL * $router->handle('/posts/edit/1'); *</code> * * @param string uri */ PHP_METHOD(Test_Router, handle) { zend_function *_8 = NULL, *_9 = NULL, *_11 = NULL, *_12 = NULL, *_14 = NULL; HashTable *_3, *_16; HashPosition _2, _15; zval *uri = NULL, *realUri = NULL, *request = NULL, *currentHostName = NULL, *routeFound = NULL, *parts = NULL, *params, *matches, *notFoundPaths, *vnamespace, *module, *controller, *action, *paramsStr, *strParams, *paramsMerge = NULL, *route = NULL, *methods = NULL, *dependencyInjector = NULL, *hostname = NULL, *regexHostName = NULL, *matched = NULL, *pattern = NULL, *handledUri = NULL, *beforeMatch = NULL, *paths = NULL, *converters = NULL, *part = NULL, *position = NULL, *matchPosition = NULL, *_0, *_1, **_4, *_5, *_6 = NULL, *_7 = NULL, *_10 = NULL, *_13 = NULL, **_17, *_18, *_19, *_20, *_21, *_22; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &uri); if (!uri) { uri = ZEPHIR_GLOBAL(global_null); } if (!(zephir_is_true(uri))) { ZEPHIR_INIT_VAR(realUri); zephir_call_method(realUri, this_ptr, "getrewriteuri"); } else { ZEPHIR_CPY_WRT(realUri, uri); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_removeExtraSlashes"), PH_NOISY_CC); if (zephir_is_true(_0)) { ZEPHIR_INIT_VAR(handledUri); zephir_call_method_p1(handledUri, this_ptr, "doremoveextraslashes", realUri); } else { ZEPHIR_CPY_WRT(handledUri, realUri); } ZEPHIR_INIT_VAR(request); ZVAL_NULL(request); ZEPHIR_INIT_VAR(currentHostName); ZVAL_NULL(currentHostName); ZEPHIR_INIT_VAR(routeFound); ZVAL_BOOL(routeFound, 0); ZEPHIR_INIT_VAR(parts); array_init(parts); ZEPHIR_INIT_VAR(params); array_init(params); ZEPHIR_INIT_VAR(matches); ZVAL_NULL(matches); zephir_update_property_this(this_ptr, SL("_wasMatched"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); zephir_update_property_this(this_ptr, SL("_matchedRoute"), ZEPHIR_GLOBAL(global_null) TSRMLS_CC); _1 = zephir_fetch_nproperty_this(this_ptr, SL("_routes"), PH_NOISY_CC); zephir_is_iterable(_1, &_3, &_2, 0, 1); for ( ; zend_hash_get_current_data_ex(_3, (void**) &_4, &_2) == SUCCESS ; zend_hash_move_backwards_ex(_3, &_2) ) { ZEPHIR_GET_HVALUE(route, _4); ZEPHIR_INIT_NVAR(methods); zephir_call_method(methods, route, "gethttpmethods"); if ((Z_TYPE_P(methods) != IS_NULL)) { if ((Z_TYPE_P(request) == IS_NULL)) { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); ZEPHIR_CPY_WRT(dependencyInjector, _5); if ((Z_TYPE_P(dependencyInjector) != IS_OBJECT)) { ZEPHIR_INIT_LNVAR(_6); object_init_ex(_6, test_router_exception_ce); ZEPHIR_INIT_NVAR(_7); ZVAL_STRING(_7, "A dependency injection container is required to access the 'request' service", 1); zephir_call_method_p1_cache_noret(_6, "__construct", &_8, _7); zephir_throw_exception(_6 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_INIT_NVAR(_7); ZVAL_STRING(_7, "request", 1); ZEPHIR_INIT_NVAR(request); zephir_call_method_p1_cache(request, dependencyInjector, "getshared", &_9, _7); } ZEPHIR_INIT_NVAR(_7); zephir_call_method_p1(_7, request, "ismethod", methods); if (ZEPHIR_IS_FALSE(_7)) { continue; } } ZEPHIR_INIT_NVAR(hostname); zephir_call_method(hostname, route, "gethostname"); if ((Z_TYPE_P(hostname) != IS_NULL)) { if ((Z_TYPE_P(request) == IS_NULL)) { ZEPHIR_OBS_NVAR(dependencyInjector); zephir_read_property_this(&dependencyInjector, this_ptr, SL("_dependencyInjector"), PH_NOISY_CC); if ((Z_TYPE_P(dependencyInjector) != IS_OBJECT)) { ZEPHIR_INIT_LNVAR(_6); object_init_ex(_6, test_router_exception_ce); ZEPHIR_INIT_NVAR(_10); ZVAL_STRING(_10, "A dependency injection container is required to access the 'request' service", 1); zephir_call_method_p1_cache_noret(_6, "__construct", &_11, _10); zephir_throw_exception(_6 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_INIT_NVAR(_7); ZVAL_STRING(_7, "request", 1); ZEPHIR_INIT_NVAR(request); zephir_call_method_p1_cache(request, dependencyInjector, "getshared", &_12, _7); } if ((Z_TYPE_P(currentHostName) != IS_OBJECT)) { ZEPHIR_INIT_NVAR(currentHostName); zephir_call_method(currentHostName, request, "gethttphost"); } if ((Z_TYPE_P(currentHostName) != IS_NULL)) { continue; } ZEPHIR_INIT_NVAR(matched); if (zephir_memnstr_str(hostname, SL("("), "test/router.zep", 381)) { if (zephir_memnstr_str(hostname, SL("#"), "test/router.zep", 382)) { ZEPHIR_INIT_NVAR(regexHostName); ZEPHIR_CONCAT_SVS(regexHostName, "#^", hostname, "$#"); } else { ZEPHIR_CPY_WRT(regexHostName, hostname); } ZEPHIR_INIT_NVAR(_13); zephir_preg_match(matched, &(matched), regexHostName, currentHostName, _13, 0, 0 , 0 TSRMLS_CC); } else { ZVAL_BOOL(matched, ZEPHIR_IS_EQUAL(currentHostName, hostname)); } if (!(zephir_is_true(matched))) { continue; } } ZEPHIR_INIT_NVAR(pattern); zephir_call_method(pattern, route, "getcompiledpattern"); ZEPHIR_INIT_NVAR(routeFound); if (zephir_memnstr_str(pattern, SL("^"), "test/router.zep", 400)) { zephir_preg_match(routeFound, &(routeFound), pattern, handledUri, matches, 0, 0 , 0 TSRMLS_CC); } else { ZVAL_BOOL(routeFound, ZEPHIR_IS_EQUAL(pattern, handledUri)); } if (zephir_is_true(routeFound)) { ZEPHIR_INIT_NVAR(beforeMatch); zephir_call_method(beforeMatch, route, "getbeforematch"); if ((Z_TYPE_P(beforeMatch) != IS_NULL)) { if (zephir_is_callable(beforeMatch TSRMLS_CC)) { ZEPHIR_INIT_LNVAR(_6); object_init_ex(_6, test_router_exception_ce); ZEPHIR_INIT_NVAR(_7); ZVAL_STRING(_7, "Before-Match callback is not callable in matched route", 1); zephir_call_method_p1_cache_noret(_6, "__construct", &_14, _7); zephir_throw_exception(_6 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } } if (zephir_is_true(routeFound)) { ZEPHIR_INIT_NVAR(paths); zephir_call_method(paths, route, "getpaths"); ZEPHIR_CPY_WRT(parts, paths); if ((Z_TYPE_P(matches) == IS_ARRAY)) { ZEPHIR_INIT_NVAR(converters); zephir_call_method(converters, route, "getconverters"); zephir_is_iterable(paths, &_16, &_15, 0, 0); for ( ; zend_hash_get_current_data_ex(_16, (void**) &_17, &_15) == SUCCESS ; zephir_hash_move_forward_ex(_16, &_15) ) { ZEPHIR_GET_HMKEY(part, _16, _15); ZEPHIR_GET_HVALUE(position, _17); ZEPHIR_OBS_NVAR(matchPosition); if (zephir_array_isset_fetch(&matchPosition, matches, position, 0 TSRMLS_CC)) { if ((Z_TYPE_P(converters) == IS_ARRAY)) { if (zephir_array_isset(converters, part)) { continue; } } zephir_array_update_zval(&parts, part, &matchPosition, PH_COPY | PH_SEPARATE); } else { if ((Z_TYPE_P(converters) == IS_ARRAY)) { if (zephir_array_isset(converters, part)) { } } } } zephir_update_property_this(this_ptr, SL("_matches"), matches TSRMLS_CC); } zephir_update_property_this(this_ptr, SL("_matchedRoute"), route TSRMLS_CC); break; } } if (zephir_is_true(routeFound)) { zephir_update_property_this(this_ptr, SL("_wasMatched"), (1) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_wasMatched"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } if (!(zephir_is_true(routeFound))) { ZEPHIR_OBS_VAR(notFoundPaths); zephir_read_property_this(¬FoundPaths, this_ptr, SL("_notFoundPaths"), PH_NOISY_CC); if ((Z_TYPE_P(notFoundPaths) != IS_NULL)) { ZEPHIR_CPY_WRT(parts, notFoundPaths); ZEPHIR_INIT_BNVAR(routeFound); ZVAL_BOOL(routeFound, 1); } } if (zephir_is_true(routeFound)) { ZEPHIR_OBS_VAR(vnamespace); if (zephir_array_isset_string_fetch(&vnamespace, parts, SS("namespace"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(vnamespace))) { zephir_update_property_this(this_ptr, SL("_namespace"), vnamespace TSRMLS_CC); } zephir_array_fetch_string(&_18, parts, SL("namespace"), PH_NOISY | PH_READONLY TSRMLS_CC); zephir_array_unset(&parts, _18, PH_SEPARATE); } else { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultNamespace"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_namespace"), _5 TSRMLS_CC); } ZEPHIR_OBS_VAR(module); if (zephir_array_isset_string_fetch(&module, parts, SS("module"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(module))) { zephir_update_property_this(this_ptr, SL("_module"), module TSRMLS_CC); } zephir_array_fetch_string(&_18, parts, SL("module"), PH_NOISY | PH_READONLY TSRMLS_CC); zephir_array_unset(&parts, _18, PH_SEPARATE); } else { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultModule"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_module"), _5 TSRMLS_CC); } ZEPHIR_OBS_VAR(controller); if (zephir_array_isset_string_fetch(&controller, parts, SS("controller"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(controller))) { zephir_update_property_this(this_ptr, SL("_controller"), controller TSRMLS_CC); } zephir_array_fetch_string(&_18, parts, SL("controller"), PH_NOISY | PH_READONLY TSRMLS_CC); zephir_array_unset(&parts, _18, PH_SEPARATE); } else { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultController"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_controller"), _5 TSRMLS_CC); } ZEPHIR_OBS_VAR(action); if (zephir_array_isset_string_fetch(&action, parts, SS("action"), 0 TSRMLS_CC)) { if (!(zephir_is_numeric(action))) { zephir_update_property_this(this_ptr, SL("_action"), action TSRMLS_CC); } zephir_array_fetch_string(&_18, parts, SL("action"), PH_NOISY | PH_READONLY TSRMLS_CC); zephir_array_unset(&parts, _18, PH_SEPARATE); } else { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAction"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_action"), _5 TSRMLS_CC); } ZEPHIR_OBS_VAR(paramsStr); if (zephir_array_isset_string_fetch(¶msStr, parts, SS("params"), 0 TSRMLS_CC)) { ZEPHIR_INIT_VAR(strParams); zephir_substr(strParams, paramsStr, 1 , 0 ); if (zephir_is_true(strParams)) { ZEPHIR_INIT_BNVAR(params); zephir_fast_explode_str(params, SL("/"), strParams, LONG_MAX TSRMLS_CC); } zephir_array_fetch_string(&_18, parts, SL("params"), PH_NOISY | PH_READONLY TSRMLS_CC); zephir_array_unset(&parts, _18, PH_SEPARATE); } if (zephir_fast_count_int(params TSRMLS_CC)) { ZEPHIR_INIT_VAR(paramsMerge); zephir_fast_array_merge(paramsMerge, &(params), &(parts) TSRMLS_CC); } else { ZEPHIR_CPY_WRT(paramsMerge, parts); } zephir_update_property_this(this_ptr, SL("_params"), paramsMerge TSRMLS_CC); } else { _5 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultNamespace"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_namespace"), _5 TSRMLS_CC); _19 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultModule"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_module"), _19 TSRMLS_CC); _20 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultController"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_controller"), _20 TSRMLS_CC); _21 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAction"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_action"), _21 TSRMLS_CC); _22 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultParams"), PH_NOISY_CC); zephir_update_property_this(this_ptr, SL("_params"), _22 TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_File, get) { int lifetime, ZEPHIR_LAST_CALL_STATUS, ttl = 0, modifiedTime = 0; zval *keyName_param = NULL, *lifetime_param = NULL, *prefixedKey = NULL, *cacheDir = NULL, *cacheFile = NULL, *frontend = NULL, *lastLifetime = NULL, *cachedContent = NULL, *ret = NULL, *_0, *_1 = NULL, *_2, *_3$$6 = NULL, *_4$$4, *_5$$4, *_6$$10, *_7$$10; zval *keyName = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName_param, &lifetime_param); zephir_get_strval(keyName, keyName_param); if (!lifetime_param) { lifetime = 0; } else { lifetime = zephir_get_intval(lifetime_param); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(&_1, this_ptr, "getkey", NULL, 0, keyName); zephir_check_call_status(); ZEPHIR_INIT_VAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, _0, _1); zephir_update_property_this(this_ptr, SL("_lastKey"), prefixedKey TSRMLS_CC); ZEPHIR_OBS_VAR(cacheDir); _2 = zephir_fetch_nproperty_this(this_ptr, SL("_options"), PH_NOISY_CC); if (!(zephir_array_isset_string_fetch(&cacheDir, _2, SS("cacheDir"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/file.zep", 111); return; } ZEPHIR_INIT_VAR(cacheFile); ZEPHIR_CONCAT_VV(cacheFile, cacheDir, prefixedKey); if ((zephir_file_exists(cacheFile TSRMLS_CC) == SUCCESS) == 1) { ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (!(lifetime)) { ZEPHIR_OBS_VAR(lastLifetime); zephir_read_property_this(&lastLifetime, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(lastLifetime))) { ZEPHIR_CALL_METHOD(&_3$$6, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); ttl = zephir_get_intval(_3$$6); } else { ttl = zephir_get_intval(lastLifetime); } } else { ttl = lifetime; } ZEPHIR_CALL_FUNCTION(NULL, "clearstatcache", NULL, 114, ZEPHIR_GLOBAL(global_true), cacheFile); zephir_check_call_status(); ZEPHIR_INIT_VAR(_4$$4); zephir_filemtime(_4$$4, cacheFile TSRMLS_CC); modifiedTime = zephir_get_intval(_4$$4); ZEPHIR_INIT_VAR(_5$$4); zephir_time(_5$$4); if (ZEPHIR_LT_LONG(_5$$4, (modifiedTime + ttl))) { ZEPHIR_INIT_VAR(cachedContent); zephir_file_get_contents(cachedContent, cacheFile TSRMLS_CC); if (ZEPHIR_IS_FALSE_IDENTICAL(cachedContent)) { ZEPHIR_INIT_VAR(_6$$10); object_init_ex(_6$$10, phalcon_cache_exception_ce); ZEPHIR_INIT_VAR(_7$$10); ZEPHIR_CONCAT_SVS(_7$$10, "Cache file ", cacheFile, " could not be opened"); ZEPHIR_CALL_METHOD(NULL, _6$$10, "__construct", NULL, 9, _7$$10); zephir_check_call_status(); zephir_throw_exception_debug(_6$$10, "phalcon/cache/backend/file.zep", 148 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } if (zephir_is_numeric(cachedContent)) { RETURN_CCTOR(cachedContent); } else { ZEPHIR_CALL_METHOD(&ret, frontend, "afterretrieve", NULL, 0, cachedContent); zephir_check_call_status(); RETURN_CCTOR(ret); } } } RETURN_MM_NULL(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param long lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Xcache, save) { zephir_fcall_cache_entry *_1 = NULL; int ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer_param = NULL, *lastKey = NULL, *frontend, *cachedContent = NULL, *preparedContent = NULL, *tmp, *tt1 = NULL, *success = NULL, *isBuffering = NULL, *options, *keys = NULL, *specialKey, *_0; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } if (!(zephir_is_true(keyName))) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { _0 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_SVV(lastKey, "_PHCX", _0, keyName); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/xcache.zep", 119); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (!(zephir_is_true(content))) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, 0, cachedContent); zephir_check_call_status(); } if (!(zephir_is_true(lifetime))) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&tt1, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(tt1, tmp); } } else { ZEPHIR_CPY_WRT(tt1, lifetime); } if (zephir_is_numeric(cachedContent)) { ZEPHIR_CALL_FUNCTION(&success, "xcache_set", &_1, 85, lastKey, cachedContent, tt1); zephir_check_call_status(); } else { ZEPHIR_CALL_FUNCTION(&success, "xcache_set", &_1, 85, lastKey, preparedContent, tt1); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } if (0) { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } if (zephir_is_true(success)) { ZEPHIR_OBS_VAR(options); zephir_read_property_this(&options, this_ptr, SL("_options"), PH_NOISY_CC); ZEPHIR_OBS_VAR(specialKey); _0 = zephir_fetch_nproperty_this(this_ptr, SL("_options"), PH_NOISY_CC); if (!(zephir_array_isset_string_fetch(&specialKey, _0, SS("statsKey"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/xcache.zep", 169); return; } ZEPHIR_CALL_FUNCTION(&keys, "xcache_get", NULL, 84, specialKey); zephir_check_call_status(); if (Z_TYPE_P(keys) != IS_ARRAY) { ZEPHIR_INIT_NVAR(keys); array_init(keys); } zephir_array_update_zval(&keys, lastKey, &tt1, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_FUNCTION(NULL, "xcache_set", &_1, 85, specialKey, keys); zephir_check_call_status(); } ZEPHIR_MM_RESTORE(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param int lifetime */ PHP_METHOD(Phalcon_Cache_Backend_Libmemcached, save) { zend_long ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, keyName_sub, *content = NULL, content_sub, *lifetime = NULL, lifetime_sub, *stopBuffer_param = NULL, __$true, __$false, __$null, lastKey, frontend, memcache, cachedContent, preparedContent, tmp, tt1, success, options, specialKey, keys, isBuffering, _0$$4, _1$$15, _2$$15, _3$$15; zval *this_ptr = getThis(); ZVAL_UNDEF(&keyName_sub); ZVAL_UNDEF(&content_sub); ZVAL_UNDEF(&lifetime_sub); ZVAL_BOOL(&__$true, 1); ZVAL_BOOL(&__$false, 0); ZVAL_NULL(&__$null); ZVAL_UNDEF(&lastKey); ZVAL_UNDEF(&frontend); ZVAL_UNDEF(&memcache); ZVAL_UNDEF(&cachedContent); ZVAL_UNDEF(&preparedContent); ZVAL_UNDEF(&tmp); ZVAL_UNDEF(&tt1); ZVAL_UNDEF(&success); ZVAL_UNDEF(&options); ZVAL_UNDEF(&specialKey); ZVAL_UNDEF(&keys); ZVAL_UNDEF(&isBuffering); ZVAL_UNDEF(&_0$$4); ZVAL_UNDEF(&_1$$15); ZVAL_UNDEF(&_2$$15); ZVAL_UNDEF(&_3$$15); ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = &keyName_sub; keyName = &__$null; } if (!content) { content = &content_sub; content = &__$null; } if (!lifetime) { lifetime = &lifetime_sub; lifetime = &__$null; } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } if (Z_TYPE_P(keyName) == IS_NULL) { ZEPHIR_OBS_VAR(&lastKey); zephir_read_property(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { zephir_read_property(&_0$$4, this_ptr, SL("_prefix"), PH_NOISY_CC | PH_READONLY); ZEPHIR_INIT_NVAR(&lastKey); ZEPHIR_CONCAT_VV(&lastKey, &_0$$4, keyName); zephir_update_property_zval(this_ptr, SL("_lastKey"), &lastKey); } if (!(zephir_is_true(&lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/libmemcached.zep", 186); return; } ZEPHIR_OBS_VAR(&frontend); zephir_read_property(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(&memcache); zephir_read_property(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); if (Z_TYPE_P(&memcache) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(&memcache); zephir_read_property(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); } if (Z_TYPE_P(content) == IS_NULL) { ZEPHIR_CALL_METHOD(&cachedContent, &frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&cachedContent, content); } if (!(zephir_is_numeric(&cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, &frontend, "beforestore", NULL, 0, &cachedContent); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&preparedContent, &cachedContent); } if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_OBS_VAR(&tmp); zephir_read_property(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(&tmp))) { ZEPHIR_CALL_METHOD(&tt1, &frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&tt1, &tmp); } } else { ZEPHIR_CPY_WRT(&tt1, lifetime); } ZEPHIR_CALL_METHOD(&success, &memcache, "set", NULL, 0, &lastKey, &preparedContent, &tt1); zephir_check_call_status(); if (!(zephir_is_true(&success))) { ZEPHIR_INIT_VAR(&_1$$15); object_init_ex(&_1$$15, phalcon_cache_exception_ce); ZEPHIR_CALL_METHOD(&_2$$15, &memcache, "getresultcode", NULL, 0); zephir_check_call_status(); ZEPHIR_INIT_VAR(&_3$$15); ZEPHIR_CONCAT_SV(&_3$$15, "Failed storing data in memcached, error code: ", &_2$$15); ZEPHIR_CALL_METHOD(NULL, &_1$$15, "__construct", NULL, 4, &_3$$15); zephir_check_call_status(); zephir_throw_exception_debug(&_1$$15, "phalcon/cache/backend/libmemcached.zep", 230 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_OBS_VAR(&options); zephir_read_property(&options, this_ptr, SL("_options"), PH_NOISY_CC); ZEPHIR_OBS_VAR(&specialKey); if (!(zephir_array_isset_string_fetch(&specialKey, &options, SL("statsKey"), 0))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/libmemcached.zep", 236); return; } if (!ZEPHIR_IS_STRING(&specialKey, "")) { ZEPHIR_CALL_METHOD(&keys, &memcache, "get", NULL, 0, &specialKey); zephir_check_call_status(); if (Z_TYPE_P(&keys) != IS_ARRAY) { ZEPHIR_INIT_NVAR(&keys); array_init(&keys); } if (!(zephir_array_isset(&keys, &lastKey))) { zephir_array_update_zval(&keys, &lastKey, &tt1, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(NULL, &memcache, "set", NULL, 0, &specialKey, &keys); zephir_check_call_status(); } } ZEPHIR_CALL_METHOD(&isBuffering, &frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, &frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(&isBuffering)) { zend_print_zval(&cachedContent, 0); } if (0) { zephir_update_property_zval(this_ptr, SL("_started"), &__$true); } else { zephir_update_property_zval(this_ptr, SL("_started"), &__$false); } RETURN_CCTOR(&success); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_Mongo, get) { zval _1; zend_long ZEPHIR_LAST_CALL_STATUS; zval *keyName_param = NULL, *lifetime = NULL, lifetime_sub, __$null, frontend, prefixedKey, conditions, document, cachedContent, _0, _2, _3; zval keyName; zval *this_ptr = getThis(); ZVAL_UNDEF(&keyName); ZVAL_UNDEF(&lifetime_sub); ZVAL_NULL(&__$null); ZVAL_UNDEF(&frontend); ZVAL_UNDEF(&prefixedKey); ZVAL_UNDEF(&conditions); ZVAL_UNDEF(&document); ZVAL_UNDEF(&cachedContent); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &keyName_param, &lifetime); zephir_get_strval(&keyName, keyName_param); if (!lifetime) { lifetime = &lifetime_sub; lifetime = &__$null; } ZEPHIR_INIT_VAR(&conditions); array_init(&conditions); ZEPHIR_OBS_VAR(&frontend); zephir_read_property(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); zephir_read_property(&_0, this_ptr, SL("_prefix"), PH_NOISY_CC | PH_READONLY); ZEPHIR_INIT_VAR(&prefixedKey); ZEPHIR_CONCAT_VV(&prefixedKey, &_0, &keyName); zephir_update_property_zval(this_ptr, SL("_lastKey"), &prefixedKey); zephir_array_update_string(&conditions, SL("key"), &prefixedKey, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_VAR(&_1); zephir_create_array(&_1, 1, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(&_2); zephir_time(&_2); zephir_array_update_string(&_1, SL("$gt"), &_2, PH_COPY | PH_SEPARATE); zephir_array_update_string(&conditions, SL("time"), &_1, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&_3, this_ptr, "_getcollection", NULL, 104); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&document, &_3, "findone", NULL, 0, &conditions); zephir_check_call_status(); if (Z_TYPE_P(&document) == IS_ARRAY) { ZEPHIR_OBS_VAR(&cachedContent); if (zephir_array_isset_string_fetch(&cachedContent, &document, SL("data"), 0)) { if (zephir_is_numeric(&cachedContent)) { RETURN_CCTOR(&cachedContent); } ZEPHIR_RETURN_CALL_METHOD(&frontend, "afterretrieve", NULL, 0, &cachedContent); zephir_check_call_status(); RETURN_MM(); } else { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "The cache is corrupt", "phalcon/cache/backend/mongo.zep", 164); return; } } RETURN_MM_NULL(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param long lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Libmemcached, save) { int ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer_param = NULL, *lastKey = NULL, *frontend = NULL, *memcache = NULL, *cachedContent = NULL, *preparedContent = NULL, *tmp = NULL, *tt1 = NULL, *success = NULL, *options = NULL, *specialKey = NULL, *keys = NULL, *isBuffering = NULL, *_0$$4, *_1$$16, *_2$$16 = NULL, *_3$$16; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } if (!(zephir_is_true(keyName))) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { _0$$4 = zephir_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_VV(lastKey, _0$$4, keyName); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/libmemcached.zep", 192); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); if (Z_TYPE_P(memcache) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL, 0); zephir_check_call_status(); ZEPHIR_OBS_NVAR(memcache); zephir_read_property_this(&memcache, this_ptr, SL("_memcache"), PH_NOISY_CC); } if (!(zephir_is_true(content))) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, 0, cachedContent); zephir_check_call_status(); } if (!(zephir_is_true(lifetime))) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&tt1, frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(tt1, tmp); } } else { ZEPHIR_CPY_WRT(tt1, lifetime); } if (zephir_is_numeric(cachedContent)) { ZEPHIR_CALL_METHOD(&success, memcache, "set", NULL, 0, lastKey, cachedContent, tt1); zephir_check_call_status(); } else { ZEPHIR_CALL_METHOD(&success, memcache, "set", NULL, 0, lastKey, preparedContent, tt1); zephir_check_call_status(); } if (!(zephir_is_true(success))) { ZEPHIR_INIT_VAR(_1$$16); object_init_ex(_1$$16, phalcon_cache_exception_ce); ZEPHIR_CALL_METHOD(&_2$$16, memcache, "getresultcode", NULL, 0); zephir_check_call_status(); ZEPHIR_INIT_VAR(_3$$16); ZEPHIR_CONCAT_SV(_3$$16, "Failed storing data in memcached, error code: ", _2$$16); ZEPHIR_CALL_METHOD(NULL, _1$$16, "__construct", NULL, 9, _3$$16); zephir_check_call_status(); zephir_throw_exception_debug(_1$$16, "phalcon/cache/backend/libmemcached.zep", 238 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } ZEPHIR_OBS_VAR(options); zephir_read_property_this(&options, this_ptr, SL("_options"), PH_NOISY_CC); ZEPHIR_OBS_VAR(specialKey); if (!(zephir_array_isset_string_fetch(&specialKey, options, SS("statsKey"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/libmemcached.zep", 244); return; } if (!ZEPHIR_IS_STRING(specialKey, "")) { ZEPHIR_CALL_METHOD(&keys, memcache, "get", NULL, 0, specialKey); zephir_check_call_status(); if (Z_TYPE_P(keys) != IS_ARRAY) { ZEPHIR_INIT_NVAR(keys); array_init(keys); } if (!(zephir_array_isset(keys, lastKey))) { zephir_array_update_zval(&keys, lastKey, &tt1, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(NULL, memcache, "set", NULL, 0, specialKey, keys); zephir_check_call_status(); } } ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } if (0) { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_true) TSRMLS_CC); } else { zephir_update_property_this(this_ptr, SL("_started"), ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * @return mixed */ PHP_METHOD(Lynx_Annotation_RegexDocParser, parseValue) { int ZEPHIR_LAST_CALL_STATUS; zephir_nts_static zephir_fcall_cache_entry *_14 = NULL; HashTable *_11; HashPosition _10; zend_bool _3, _15, _20; zval *value, *val = NULL, *vals, *v = NULL, _0, _1, *_2, _4, *_5, _6 = zval_used_for_init, _7 = zval_used_for_init, *_8 = NULL, _9 = zval_used_for_init, **_12, *_13 = NULL, *_16, _17, _18, *_19, _21, *_22, _23, _24, *_25 = NULL, *_26; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &value); ZEPHIR_INIT_VAR(val); zephir_fast_trim(val, value, NULL , ZEPHIR_TRIM_BOTH TSRMLS_CC); ZEPHIR_SINIT_VAR(_0); ZVAL_LONG(&_0, 0); ZEPHIR_SINIT_VAR(_1); ZVAL_LONG(&_1, 1); ZEPHIR_INIT_VAR(_2); zephir_substr(_2, val, 0 , 1 , 0); _3 = ZEPHIR_IS_STRING(_2, "["); if (_3) { ZEPHIR_SINIT_VAR(_4); ZVAL_LONG(&_4, -1); ZEPHIR_INIT_VAR(_5); zephir_substr(_5, val, -1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); _3 = ZEPHIR_IS_STRING(_5, "]"); } if (_3) { ZEPHIR_INIT_VAR(vals); ZEPHIR_SINIT_VAR(_6); ZVAL_LONG(&_6, 1); ZEPHIR_SINIT_VAR(_7); ZVAL_LONG(&_7, -1); ZEPHIR_INIT_VAR(_8); zephir_substr(_8, val, 1 , -1 , 0); ZEPHIR_SINIT_VAR(_9); ZVAL_LONG(&_9, ','); zephir_fast_explode(vals, &_9, _8, LONG_MAX TSRMLS_CC); ZEPHIR_INIT_NVAR(val); array_init(val); zephir_is_iterable(vals, &_11, &_10, 0, 0, "lynx/Annotation/RegexDocParser.zep", 89); for ( ; zephir_hash_get_current_data_ex(_11, (void**) &_12, &_10) == SUCCESS ; zephir_hash_move_forward_ex(_11, &_10) ) { ZEPHIR_GET_HVALUE(v, _12); ZEPHIR_CALL_SELF(&_13, "parsevalue", &_14, v); zephir_check_call_status(); zephir_array_append(&val, _13, PH_SEPARATE, "lynx/Annotation/RegexDocParser.zep", 86); } RETURN_CCTOR(val); } else { ZEPHIR_SINIT_NVAR(_6); ZVAL_LONG(&_6, 0); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, 1); ZEPHIR_INIT_NVAR(_8); zephir_substr(_8, val, 0 , 1 , 0); _15 = ZEPHIR_IS_STRING(_8, "{"); if (_15) { ZEPHIR_SINIT_NVAR(_9); ZVAL_LONG(&_9, -1); ZEPHIR_INIT_VAR(_16); zephir_substr(_16, val, -1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); _15 = ZEPHIR_IS_STRING(_16, "}"); } if (_15) { zephir_json_decode(return_value, &(return_value), val, 0 TSRMLS_CC); RETURN_MM(); } else { ZEPHIR_SINIT_VAR(_17); ZVAL_LONG(&_17, 0); ZEPHIR_SINIT_VAR(_18); ZVAL_LONG(&_18, 1); ZEPHIR_INIT_VAR(_19); zephir_substr(_19, val, 0 , 1 , 0); _20 = ZEPHIR_IS_STRING(_19, "\""); if (_20) { ZEPHIR_SINIT_VAR(_21); ZVAL_LONG(&_21, -1); ZEPHIR_INIT_VAR(_22); zephir_substr(_22, val, -1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); _20 = ZEPHIR_IS_STRING(_22, "\""); } if (_20) { ZEPHIR_SINIT_VAR(_23); ZVAL_LONG(&_23, 1); ZEPHIR_SINIT_VAR(_24); ZVAL_LONG(&_24, -1); ZEPHIR_INIT_VAR(_25); zephir_substr(_25, val, 1 , -1 , 0); ZEPHIR_CPY_WRT(val, _25); ZEPHIR_RETURN_CALL_SELF("parsevalue", &_14, val); zephir_check_call_status(); RETURN_MM(); } else { ZEPHIR_INIT_NVAR(_25); zephir_fast_strtolower(_25, val); if (ZEPHIR_IS_STRING(_25, "true")) { RETURN_MM_BOOL(1); } else { ZEPHIR_INIT_VAR(_26); zephir_fast_strtolower(_26, val); if (ZEPHIR_IS_STRING(_26, "false")) { RETURN_MM_BOOL(0); } else { if (zephir_is_numeric(val)) { if (zephir_get_doubleval(val) == zephir_get_intval(val)) { RETURN_MM_LONG(zephir_get_intval(val)); } else { RETURN_MM_DOUBLE(zephir_get_doubleval(val)); } } } } } } } RETURN_CCTOR(val); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param long lifetime * @param boolean stopBuffer */ PHP_METHOD(Phalcon_Cache_Backend_Redis, save) { int ZEPHIR_LAST_CALL_STATUS; zval *keyName = NULL, *content = NULL, *lifetime = NULL, *stopBuffer = NULL, *prefixedKey = NULL, *lastKey = NULL, *prefix, *frontend, *redis = NULL, *cachedContent = NULL, *preparedContent = NULL, *tmp, *tt1 = NULL, *success = NULL, *options, *specialKey, *isBuffering = NULL, _0; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer); if (!keyName) { keyName = ZEPHIR_GLOBAL(global_null); } if (!content) { content = ZEPHIR_GLOBAL(global_null); } if (!lifetime) { lifetime = ZEPHIR_GLOBAL(global_null); } if (!stopBuffer) { stopBuffer = ZEPHIR_GLOBAL(global_true); } if (!(zephir_is_true(keyName))) { ZEPHIR_OBS_VAR(lastKey); zephir_read_property_this(&lastKey, this_ptr, SL("_lastKey"), PH_NOISY_CC); ZEPHIR_SINIT_VAR(_0); ZVAL_LONG(&_0, 5); ZEPHIR_INIT_VAR(prefixedKey); zephir_substr(prefixedKey, lastKey, 5 , 0, ZEPHIR_SUBSTR_NO_LENGTH); } else { ZEPHIR_OBS_VAR(prefix); zephir_read_property_this(&prefix, this_ptr, SL("_prefix"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(prefixedKey); ZEPHIR_CONCAT_VV(prefixedKey, prefix, keyName); ZEPHIR_INIT_NVAR(lastKey); ZEPHIR_CONCAT_SV(lastKey, "_PHCR", prefixedKey); } if (!(zephir_is_true(lastKey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/redis.zep", 185); return; } ZEPHIR_OBS_VAR(frontend); zephir_read_property_this(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); ZEPHIR_OBS_VAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); if (Z_TYPE_P(redis) != IS_OBJECT) { ZEPHIR_CALL_METHOD(NULL, this_ptr, "_connect", NULL); zephir_check_call_status(); ZEPHIR_OBS_NVAR(redis); zephir_read_property_this(&redis, this_ptr, SL("_redis"), PH_NOISY_CC); } if (!(zephir_is_true(content))) { ZEPHIR_CALL_METHOD(&cachedContent, frontend, "getcontent", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(cachedContent, content); } if (!(zephir_is_numeric(cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, frontend, "beforestore", NULL, cachedContent); zephir_check_call_status(); } if (!(zephir_is_true(lifetime))) { ZEPHIR_OBS_VAR(tmp); zephir_read_property_this(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(tmp))) { ZEPHIR_CALL_METHOD(&tt1, frontend, "getlifetime", NULL); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(tt1, tmp); } } else { ZEPHIR_CPY_WRT(tt1, lifetime); } if (zephir_is_numeric(cachedContent)) { ZEPHIR_CALL_METHOD(&success, redis, "set", NULL, lastKey, cachedContent); zephir_check_call_status(); } else { ZEPHIR_CALL_METHOD(&success, redis, "set", NULL, lastKey, preparedContent); zephir_check_call_status(); } if (!(zephir_is_true(success))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Failed storing data in redis", "phalcon/cache/backend/redis.zep", 231); return; } ZEPHIR_CALL_METHOD(NULL, redis, "settimeout", NULL, lastKey, tt1); zephir_check_call_status(); ZEPHIR_OBS_VAR(options); zephir_read_property_this(&options, this_ptr, SL("_options"), PH_NOISY_CC); if (!(zephir_array_isset_string(options, SS("statsKey")))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Unexpected inconsistency in options", "phalcon/cache/backend/redis.zep", 239); return; } ZEPHIR_OBS_VAR(specialKey); zephir_array_fetch_string(&specialKey, options, SL("statsKey"), PH_NOISY, "phalcon/cache/backend/redis.zep", 242 TSRMLS_CC); ZEPHIR_CALL_METHOD(NULL, redis, "sadd", NULL, specialKey, prefixedKey); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&isBuffering, frontend, "isbuffering", NULL); zephir_check_call_status(); if (ZEPHIR_IS_TRUE_IDENTICAL(stopBuffer)) { ZEPHIR_CALL_METHOD(NULL, frontend, "stop", NULL); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(isBuffering)) { zend_print_zval(cachedContent, 0); } zephir_update_property_this(this_ptr, SL("_started"), (0) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); ZEPHIR_MM_RESTORE(); }
/** * Stores cached content into the file backend and stops the frontend * * @param int|string keyName * @param string content * @param int lifetime */ PHP_METHOD(Phalcon_Cache_Backend_Mongo, save) { zval _2$$14; zend_long ZEPHIR_LAST_CALL_STATUS; zend_bool stopBuffer; zval *keyName = NULL, keyName_sub, *content = NULL, content_sub, *lifetime = NULL, lifetime_sub, *stopBuffer_param = NULL, __$true, __$false, __$null, lastkey, frontend, cachedContent, tmp, ttl, collection, timestamp, conditions, document, preparedContent, isBuffering, data, success, _1, _0$$4, _3$$14; zval *this_ptr = getThis(); ZVAL_UNDEF(&keyName_sub); ZVAL_UNDEF(&content_sub); ZVAL_UNDEF(&lifetime_sub); ZVAL_BOOL(&__$true, 1); ZVAL_BOOL(&__$false, 0); ZVAL_NULL(&__$null); ZVAL_UNDEF(&lastkey); ZVAL_UNDEF(&frontend); ZVAL_UNDEF(&cachedContent); ZVAL_UNDEF(&tmp); ZVAL_UNDEF(&ttl); ZVAL_UNDEF(&collection); ZVAL_UNDEF(×tamp); ZVAL_UNDEF(&conditions); ZVAL_UNDEF(&document); ZVAL_UNDEF(&preparedContent); ZVAL_UNDEF(&isBuffering); ZVAL_UNDEF(&data); ZVAL_UNDEF(&success); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_0$$4); ZVAL_UNDEF(&_3$$14); ZVAL_UNDEF(&_2$$14); ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 4, &keyName, &content, &lifetime, &stopBuffer_param); if (!keyName) { keyName = &keyName_sub; keyName = &__$null; } if (!content) { content = &content_sub; content = &__$null; } if (!lifetime) { lifetime = &lifetime_sub; lifetime = &__$null; } if (!stopBuffer_param) { stopBuffer = 1; } else { stopBuffer = zephir_get_boolval(stopBuffer_param); } ZEPHIR_INIT_VAR(&conditions); array_init(&conditions); ZEPHIR_INIT_VAR(&data); array_init(&data); if (Z_TYPE_P(keyName) == IS_NULL) { ZEPHIR_OBS_VAR(&lastkey); zephir_read_property(&lastkey, this_ptr, SL("_lastKey"), PH_NOISY_CC); } else { zephir_read_property(&_0$$4, this_ptr, SL("_prefix"), PH_NOISY_CC | PH_READONLY); ZEPHIR_INIT_NVAR(&lastkey); ZEPHIR_CONCAT_VV(&lastkey, &_0$$4, keyName); zephir_update_property_zval(this_ptr, SL("_lastKey"), &lastkey); } if (!(zephir_is_true(&lastkey))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Cache must be started first", "phalcon/cache/backend/mongo.zep", 195); return; } ZEPHIR_OBS_VAR(&frontend); zephir_read_property(&frontend, this_ptr, SL("_frontend"), PH_NOISY_CC); if (Z_TYPE_P(content) == IS_NULL) { ZEPHIR_CALL_METHOD(&cachedContent, &frontend, "getcontent", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&cachedContent, content); } if (!(zephir_is_numeric(&cachedContent))) { ZEPHIR_CALL_METHOD(&preparedContent, &frontend, "beforestore", NULL, 0, &cachedContent); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&preparedContent, &cachedContent); } if (Z_TYPE_P(lifetime) == IS_NULL) { ZEPHIR_OBS_VAR(&tmp); zephir_read_property(&tmp, this_ptr, SL("_lastLifetime"), PH_NOISY_CC); if (!(zephir_is_true(&tmp))) { ZEPHIR_CALL_METHOD(&ttl, &frontend, "getlifetime", NULL, 0); zephir_check_call_status(); } else { ZEPHIR_CPY_WRT(&ttl, &tmp); } } else { ZEPHIR_CPY_WRT(&ttl, lifetime); } ZEPHIR_CALL_METHOD(&collection, this_ptr, "_getcollection", NULL, 104); zephir_check_call_status(); ZEPHIR_INIT_VAR(&_1); zephir_time(&_1); ZEPHIR_INIT_VAR(×tamp); ZVAL_LONG(×tamp, (zephir_get_numberval(&_1) + zephir_get_intval(&ttl))); zephir_array_update_string(&conditions, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&document, &collection, "findone", NULL, 0, &conditions); zephir_check_call_status(); if (Z_TYPE_P(&document) == IS_ARRAY) { zephir_array_update_string(&document, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); zephir_array_update_string(&document, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_VAR(&_2$$14); zephir_create_array(&_2$$14, 1, 0 TSRMLS_CC); ZEPHIR_OBS_VAR(&_3$$14); zephir_array_fetch_string(&_3$$14, &document, SL("_id"), PH_NOISY, "phalcon/cache/backend/mongo.zep", 230 TSRMLS_CC); zephir_array_update_string(&_2$$14, SL("_id"), &_3$$14, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&success, &collection, "update", NULL, 0, &_2$$14, &document); zephir_check_call_status(); } else { zephir_array_update_string(&data, SL("key"), &lastkey, PH_COPY | PH_SEPARATE); zephir_array_update_string(&data, SL("time"), ×tamp, PH_COPY | PH_SEPARATE); zephir_array_update_string(&data, SL("data"), &preparedContent, PH_COPY | PH_SEPARATE); ZEPHIR_CALL_METHOD(&success, &collection, "insert", NULL, 0, &data); zephir_check_call_status(); } if (!(zephir_is_true(&success))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cache_exception_ce, "Failed storing data in mongodb", "phalcon/cache/backend/mongo.zep", 239); return; } ZEPHIR_CALL_METHOD(&isBuffering, &frontend, "isbuffering", NULL, 0); zephir_check_call_status(); if (stopBuffer == 1) { ZEPHIR_CALL_METHOD(NULL, &frontend, "stop", NULL, 0); zephir_check_call_status(); } if (ZEPHIR_IS_TRUE_IDENTICAL(&isBuffering)) { zend_print_zval(&cachedContent, 0); } if (0) { zephir_update_property_zval(this_ptr, SL("_started"), &__$true); } else { zephir_update_property_zval(this_ptr, SL("_started"), &__$false); } RETURN_CCTOR(&success); }