/** * Adds a variable to the debug output */ PHP_METHOD(Phalcon_Debug, debugVar) { zval *_0; int ZEPHIR_LAST_CALL_STATUS; zval *key = NULL; zval *varz, *key_param = NULL, *_1 = NULL, *_2; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &varz, &key_param); if (!key_param) { ZEPHIR_INIT_VAR(key); ZVAL_EMPTY_STRING(key); } else { zephir_get_strval(key, key_param); } ZEPHIR_INIT_VAR(_0); zephir_create_array(_0, 3, 0 TSRMLS_CC); zephir_array_fast_append(_0, varz); ZEPHIR_CALL_FUNCTION(&_1, "debug_backtrace", NULL, 157); zephir_check_call_status(); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_VAR(_2); zephir_time(_2); zephir_array_fast_append(_0, _2); zephir_update_property_array_append(this_ptr, SL("_data"), _0 TSRMLS_CC); RETURN_THIS(); }
/** * Returns a cached content */ PHP_METHOD(Phalcon_Cache_Backend_Mongo, get) { zval *_1; int lifetime, ZEPHIR_LAST_CALL_STATUS; zval *keyName_param = NULL, *lifetime_param = NULL, *frontend = NULL, *prefixedKey = NULL, *conditions = NULL, *document = NULL, *cachedContent = NULL, *_0, *_2, *_3 = 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_INIT_VAR(conditions); array_init(conditions); 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_VV(prefixedKey, _0, keyName); zephir_update_property_this(this_ptr, SL("_lastKey"), prefixedKey TSRMLS_CC); 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, 117); 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, SS("data"), 0 TSRMLS_CC)) { 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", 176); return; } } RETURN_MM_NULL(); }
/** * Sets the expiration time for this cache item. * * @param \DateTimeInterface expiration * The point in time after which the item MUST be considered expired. * If null is passed explicitly, a default value MAY be used. If none is set, * the value should be stored permanently or for as long as the * implementation allows. * * @return \Xpl\Cache\Item The called object. */ PHP_METHOD(Xpl_Cache_Item, expiresAt) { int ZEPHIR_LAST_CALL_STATUS; zval *expiration, *_0$$3, *_1$$3, *_2$$3, *_3$$5 = NULL, *_4$$5, *_5$$5, *_6$$6, *_7$$6 = NULL, _8$$6, *_9$$6 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &expiration); if (Z_TYPE_P(expiration) == IS_NULL) { ZEPHIR_INIT_VAR(_0$$3); zephir_time(_0$$3); _1$$3 = zephir_fetch_nproperty_this(this_ptr, SL("defaultTtl"), PH_NOISY_CC); ZEPHIR_INIT_VAR(_2$$3); zephir_add_function(_2$$3, _0$$3, _1$$3); zephir_update_property_this(this_ptr, SL("expires"), _2$$3 TSRMLS_CC); } else { if (zephir_is_instance_of(expiration, SL("DateTimeInterface") TSRMLS_CC)) { ZEPHIR_INIT_VAR(_4$$5); ZVAL_STRING(_4$$5, "U", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_3$$5, expiration, "format", NULL, 0, _4$$5); zephir_check_temp_parameter(_4$$5); zephir_check_call_status(); ZEPHIR_INIT_ZVAL_NREF(_5$$5); ZVAL_LONG(_5$$5, zephir_get_intval(_3$$5)); zephir_update_property_this(this_ptr, SL("expires"), _5$$5 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_6$$6); object_init_ex(_6$$6, xpl_cache_invalidargumentexception_ce); ZEPHIR_INIT_VAR(_7$$6); if (Z_TYPE_P(expiration) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_7$$6); zephir_get_class(_7$$6, expiration, 0 TSRMLS_CC); } else { ZEPHIR_INIT_NVAR(_7$$6); zephir_gettype(_7$$6, expiration TSRMLS_CC); } ZEPHIR_SINIT_VAR(_8$$6); ZVAL_STRING(&_8$$6, "Expiration date must be null or instance of DateTimeInterface, given: \"%s\".", 0); ZEPHIR_CALL_FUNCTION(&_9$$6, "sprintf", NULL, 41, &_8$$6, _7$$6); zephir_check_call_status(); ZEPHIR_CALL_METHOD(NULL, _6$$6, "__construct", NULL, 42, _9$$6); zephir_check_call_status(); zephir_throw_exception_debug(_6$$6, "xpl/cache/item.zep", 147 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } RETURN_THIS(); }
/** * Returns the time to live. * * @return int */ PHP_METHOD(Xpl_Cache_Item, getTtl) { zval *_0, *_1, *_2, *_3; ZEPHIR_MM_GROW(); ZEPHIR_INIT_VAR(_0); _1 = zephir_fetch_nproperty_this(this_ptr, SL("expires"), PH_NOISY_CC); if (zephir_is_true(_1)) { _2 = zephir_fetch_nproperty_this(this_ptr, SL("expires"), PH_NOISY_CC); ZEPHIR_INIT_VAR(_3); zephir_time(_3); zephir_sub_function(_0, _2, _3); } else { zephir_read_property_this(&_0, this_ptr, SL("defaultTtl"), PH_NOISY_CC); } RETURN_CCTOR(_0); }
PHP_METHOD(Yb_Std, uuid) { int ZEPHIR_LAST_CALL_STATUS; zval *salt_param = NULL, *_0 = NULL, *_1 = NULL, *_2, *_3 = NULL, *_4, _5, _6, *_7 = NULL; zval *salt = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &salt_param); if (!salt_param) { ZEPHIR_INIT_VAR(salt); ZVAL_STRING(salt, "", 1); } else { zephir_get_strval(salt, salt_param); } ZEPHIR_CALL_FUNCTION(&_0, "mt_rand", NULL, 76); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_1, "uniqid", NULL, 77, _0, ZEPHIR_GLOBAL(global_true)); zephir_check_call_status(); ZEPHIR_INIT_VAR(_2); ZEPHIR_CONCAT_VV(_2, _1, salt); ZEPHIR_CALL_FUNCTION(&_3, "sha1", NULL, 78, _2); zephir_check_call_status(); ZEPHIR_INIT_VAR(_4); zephir_time(_4); ZEPHIR_SINIT_VAR(_5); ZVAL_STRING(&_5, "%04x", 0); ZEPHIR_SINIT_VAR(_6); ZVAL_LONG(&_6, (zephir_get_intval(_4) & 0xffff)); ZEPHIR_CALL_FUNCTION(&_7, "sprintf", NULL, 1, &_5, &_6); zephir_check_call_status(); ZEPHIR_CONCAT_VV(return_value, _3, _7); RETURN_MM(); }
/** * Logs messages to the internal logger. Appends logs to the logger */ PHP_METHOD(Phalcon_Logger_Adapter, log) { int ZEPHIR_LAST_CALL_STATUS; zend_bool _0, _1; zval *context = NULL; zval *type, *message = NULL, *context_param = NULL, *timestamp, *toggledMessage = NULL, *toggledType = NULL, *_2, *_3, *_4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 2, &type, &message, &context_param); if (!message) { message = ZEPHIR_GLOBAL(global_null); } if (!context_param) { ZEPHIR_INIT_VAR(context); array_init(context); } else { context = context_param; } _0 = Z_TYPE_P(type) == IS_STRING; if (_0) { _0 = Z_TYPE_P(message) == IS_LONG; } if (_0) { ZEPHIR_CPY_WRT(toggledMessage, type); ZEPHIR_CPY_WRT(toggledType, message); } else { _1 = Z_TYPE_P(type) == IS_STRING; if (_1) { _1 = Z_TYPE_P(message) == IS_NULL; } if (_1) { ZEPHIR_CPY_WRT(toggledMessage, type); ZEPHIR_CPY_WRT(toggledType, message); } else { ZEPHIR_CPY_WRT(toggledMessage, message); ZEPHIR_CPY_WRT(toggledType, type); } } if (Z_TYPE_P(toggledType) == IS_NULL) { ZEPHIR_INIT_NVAR(toggledType); ZVAL_LONG(toggledType, 7); } _2 = zephir_fetch_nproperty_this(this_ptr, SL("_logLevel"), PH_NOISY_CC); if (ZEPHIR_GE(_2, toggledType)) { ZEPHIR_INIT_VAR(timestamp); zephir_time(timestamp); _3 = zephir_fetch_nproperty_this(this_ptr, SL("_transaction"), PH_NOISY_CC); if (zephir_is_true(_3)) { ZEPHIR_INIT_VAR(_4); object_init_ex(_4, phalcon_logger_item_ce); ZEPHIR_CALL_METHOD(NULL, _4, "__construct", NULL, 52, toggledMessage, toggledType, timestamp, context); zephir_check_call_status(); zephir_update_property_array_append(this_ptr, SL("_queue"), _4 TSRMLS_CC); } else { ZEPHIR_CALL_METHOD(NULL, this_ptr, "loginternal", NULL, 0, toggledMessage, toggledType, timestamp, context); zephir_check_call_status(); } } RETURN_THIS(); }
/** * Sets the expiration time for this cache item. * * @param int|\DateInterval time * The period of time from the present after which the item MUST be considered * expired. An integer parameter is understood to be the time in seconds until * expiration. If null is passed explicitly, a default value MAY be used. * If none is set, the value should be stored permanently or for as long as the * implementation allows. * * @return \Xpl\Cache\Item * The called object. */ PHP_METHOD(Xpl_Cache_Item, expiresAfter) { zend_class_entry *_6$$7; int ZEPHIR_LAST_CALL_STATUS; zval *time, *_0$$3, *_1$$3, *_2$$3, *_3$$5, *_4$$5, *_5$$7 = NULL, *_7$$7, *_8$$7 = NULL, *_9$$7 = NULL, *_10$$7 = NULL, *_11$$8, *_12$$8 = NULL, _13$$8, *_14$$8 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &time); if (Z_TYPE_P(time) == IS_NULL) { ZEPHIR_INIT_VAR(_0$$3); zephir_time(_0$$3); _1$$3 = zephir_fetch_nproperty_this(this_ptr, SL("defaultTtl"), PH_NOISY_CC); ZEPHIR_INIT_VAR(_2$$3); zephir_add_function(_2$$3, _0$$3, _1$$3); zephir_update_property_this(this_ptr, SL("expires"), _2$$3 TSRMLS_CC); } else { if (Z_TYPE_P(time) == IS_LONG) { ZEPHIR_INIT_VAR(_3$$5); zephir_time(_3$$5); ZEPHIR_INIT_VAR(_4$$5); zephir_add_function(_4$$5, _3$$5, time); zephir_update_property_this(this_ptr, SL("expires"), _4$$5 TSRMLS_CC); } else { if (zephir_instance_of_ev(time, zephir_get_internal_ce(SS("dateinterval") TSRMLS_CC) TSRMLS_CC)) { _6$$7 = zend_fetch_class(SL("DateTime"), ZEND_FETCH_CLASS_AUTO TSRMLS_CC); ZEPHIR_INIT_VAR(_7$$7); zephir_time(_7$$7); ZEPHIR_INIT_VAR(_8$$7); ZVAL_STRING(_8$$7, "U", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_CE_STATIC(&_5$$7, _6$$7, "createfromformat", NULL, 0, _8$$7, _7$$7); zephir_check_temp_parameter(_8$$7); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&_9$$7, _5$$7, "add", NULL, 0, time); zephir_check_call_status(); ZEPHIR_INIT_NVAR(_8$$7); ZVAL_STRING(_8$$7, "U", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_10$$7, _9$$7, "format", NULL, 0, _8$$7); zephir_check_temp_parameter(_8$$7); zephir_check_call_status(); zephir_update_property_this(this_ptr, SL("expires"), _10$$7 TSRMLS_CC); } else { ZEPHIR_INIT_VAR(_11$$8); object_init_ex(_11$$8, xpl_cache_invalidargumentexception_ce); ZEPHIR_INIT_VAR(_12$$8); if (Z_TYPE_P(time) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_12$$8); zephir_get_class(_12$$8, time, 0 TSRMLS_CC); } else { ZEPHIR_INIT_NVAR(_12$$8); zephir_gettype(_12$$8, time TSRMLS_CC); } ZEPHIR_SINIT_VAR(_13$$8); ZVAL_STRING(&_13$$8, "Expiration date must be integer, DateInterval or null, given: \"%s\".", 0); ZEPHIR_CALL_FUNCTION(&_14$$8, "sprintf", NULL, 41, &_13$$8, _12$$8); zephir_check_call_status(); ZEPHIR_CALL_METHOD(NULL, _11$$8, "__construct", NULL, 42, _14$$8); zephir_check_call_status(); zephir_throw_exception_debug(_11$$8, "xpl/cache/item.zep", 181 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } } RETURN_THIS(); }
/** * Listens for notifications from the models manager */ PHP_METHOD(Phalcon_Mvc_Collection_Behavior_Timestampable, notify) { HashTable *_2$$12; HashPosition _1$$12; zephir_fcall_cache_entry *_4 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *type_param = NULL, *model, *options = NULL, *timestamp = NULL, *singleField = NULL, *field = NULL, *generator = NULL, *format = NULL, *_0 = NULL, **_3$$12; zval *type = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &type_param, &model); if (UNEXPECTED(Z_TYPE_P(type_param) != IS_STRING && Z_TYPE_P(type_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'type' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (EXPECTED(Z_TYPE_P(type_param) == IS_STRING)) { zephir_get_strval(type, type_param); } else { ZEPHIR_INIT_VAR(type); ZVAL_EMPTY_STRING(type); } ZEPHIR_CALL_METHOD(&_0, this_ptr, "musttakeaction", NULL, 0, type); zephir_check_call_status(); if (!ZEPHIR_IS_TRUE_IDENTICAL(_0)) { RETURN_MM_NULL(); } ZEPHIR_CALL_METHOD(&options, this_ptr, "getoptions", NULL, 0, type); zephir_check_call_status(); if (Z_TYPE_P(options) == IS_ARRAY) { ZEPHIR_OBS_VAR(field); if (!(zephir_array_isset_string_fetch(&field, options, SS("field"), 0 TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_collection_exception_ce, "The option 'field' is required", "phalcon/mvc/collection/behavior/timestampable.zep", 56); return; } ZEPHIR_INIT_VAR(timestamp); ZVAL_NULL(timestamp); ZEPHIR_OBS_VAR(format); if (zephir_array_isset_string_fetch(&format, options, SS("format"), 0 TSRMLS_CC)) { ZEPHIR_CALL_FUNCTION(×tamp, "date", NULL, 316, format); zephir_check_call_status(); } else { ZEPHIR_OBS_VAR(generator); if (zephir_array_isset_string_fetch(&generator, options, SS("generator"), 0 TSRMLS_CC)) { if (Z_TYPE_P(generator) == IS_OBJECT) { if (zephir_instance_of_ev(generator, zend_ce_closure TSRMLS_CC)) { ZEPHIR_INIT_NVAR(timestamp); ZEPHIR_CALL_USER_FUNC(timestamp, generator); zephir_check_call_status(); } } } } if (Z_TYPE_P(timestamp) == IS_NULL) { ZEPHIR_INIT_NVAR(timestamp); zephir_time(timestamp); } if (Z_TYPE_P(field) == IS_ARRAY) { zephir_is_iterable(field, &_2$$12, &_1$$12, 0, 0, "phalcon/mvc/collection/behavior/timestampable.zep", 94); for ( ; zend_hash_get_current_data_ex(_2$$12, (void**) &_3$$12, &_1$$12) == SUCCESS ; zend_hash_move_forward_ex(_2$$12, &_1$$12) ) { ZEPHIR_GET_HVALUE(singleField, _3$$12); ZEPHIR_CALL_METHOD(NULL, model, "writeattribute", &_4, 0, singleField, timestamp); zephir_check_call_status(); } } else { ZEPHIR_CALL_METHOD(NULL, model, "writeattribute", NULL, 0, field, timestamp); zephir_check_call_status(); } } 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; 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(); }
/** * 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_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 * * @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); }
/** * 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(); }