diff --git a/build/phalcon/phalcon.zep.c b/build/phalcon/phalcon.zep.c index edb818d5cec..95333b5f5e7 100644 --- a/build/phalcon/phalcon.zep.c +++ b/build/phalcon/phalcon.zep.c @@ -3486,6 +3486,11 @@ long zephir_safe_mod_double_zval(double op1, zval *op2); #define ZEPHIR_SCONCAT_SSSVSVSVSVSVS(result, op1, op2, op3, op4, op5, op6, op7, op8, op9, op10, op11, op12, op13) \ zephir_concat_sssvsvsvsvsvs(result, op1, sizeof(op1)-1, op2, sizeof(op2)-1, op3, sizeof(op3)-1, op4, op5, sizeof(op5)-1, op6, op7, sizeof(op7)-1, op8, op9, sizeof(op9)-1, op10, op11, sizeof(op11)-1, op12, op13, sizeof(op13)-1, 1); +#define ZEPHIR_CONCAT_SSV(result, op1, op2, op3) \ + zephir_concat_ssv(result, op1, sizeof(op1)-1, op2, sizeof(op2)-1, op3, 0); +#define ZEPHIR_SCONCAT_SSV(result, op1, op2, op3) \ + zephir_concat_ssv(result, op1, sizeof(op1)-1, op2, sizeof(op2)-1, op3, 1); + #define ZEPHIR_CONCAT_SSVSVS(result, op1, op2, op3, op4, op5, op6) \ zephir_concat_ssvsvs(result, op1, sizeof(op1)-1, op2, sizeof(op2)-1, op3, op4, sizeof(op4)-1, op5, op6, sizeof(op6)-1, 0); #define ZEPHIR_SCONCAT_SSVSVS(result, op1, op2, op3, op4, op5, op6) \ @@ -3678,6 +3683,7 @@ static void zephir_concat_ssssss(zval *result, const char *op1, uint32_t op1_len static void zephir_concat_sssvss(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, const char *op3, uint32_t op3_len, zval *op4, const char *op5, uint32_t op5_len, const char *op6, uint32_t op6_len, int self_var); static void zephir_concat_sssvsvssvsvss(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, const char *op3, uint32_t op3_len, zval *op4, const char *op5, uint32_t op5_len, zval *op6, const char *op7, uint32_t op7_len, const char *op8, uint32_t op8_len, zval *op9, const char *op10, uint32_t op10_len, zval *op11, const char *op12, uint32_t op12_len, const char *op13, uint32_t op13_len, int self_var); static void zephir_concat_sssvsvsvsvsvs(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, const char *op3, uint32_t op3_len, zval *op4, const char *op5, uint32_t op5_len, zval *op6, const char *op7, uint32_t op7_len, zval *op8, const char *op9, uint32_t op9_len, zval *op10, const char *op11, uint32_t op11_len, zval *op12, const char *op13, uint32_t op13_len, int self_var); +static void zephir_concat_ssv(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, zval *op3, int self_var); static void zephir_concat_ssvsvs(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, zval *op3, const char *op4, uint32_t op4_len, zval *op5, const char *op6, uint32_t op6_len, int self_var); static void zephir_concat_ssvsvsvs(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, zval *op3, const char *op4, uint32_t op4_len, zval *op5, const char *op6, uint32_t op6_len, zval *op7, const char *op8, uint32_t op8_len, int self_var); static void zephir_concat_sv(zval *result, const char *op1, uint32_t op1_len, zval *op2, int self_var); @@ -10559,6 +10565,52 @@ static void zephir_concat_sssvsvsvsvsvs(zval *result, const char *op1, uint32_t } +static void zephir_concat_ssv(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, zval *op3, int self_var){ + + zval result_copy, op3_copy; + int use_copy = 0, use_copy3 = 0; + size_t offset = 0, length; + + if (Z_TYPE_P(op3) != IS_STRING) { + use_copy3 = zend_make_printable_zval(op3, &op3_copy); + if (use_copy3) { + op3 = &op3_copy; + } + } + + length = op1_len + op2_len + Z_STRLEN_P(op3); + if (self_var) { + + if (Z_TYPE_P(result) != IS_STRING) { + use_copy = zend_make_printable_zval(result, &result_copy); + if (use_copy) { + ZEPHIR_CPY_WRT_CTOR(result, (&result_copy)); + } + } + + offset = Z_STRLEN_P(result); + length += offset; + Z_STR_P(result) = zend_string_realloc(Z_STR_P(result), length, 0); + + } else { + ZVAL_STR(result, zend_string_alloc(length, 0)); + } + + memcpy(Z_STRVAL_P(result) + offset, op1, op1_len); + memcpy(Z_STRVAL_P(result) + offset + op1_len, op2, op2_len); + memcpy(Z_STRVAL_P(result) + offset + op1_len + op2_len, Z_STRVAL_P(op3), Z_STRLEN_P(op3)); + Z_STRVAL_P(result)[length] = 0; + zend_string_forget_hash_val(Z_STR_P(result)); + if (use_copy3) { + zval_dtor(op3); + } + + if (use_copy) { + zval_dtor(&result_copy); + } + +} + static void zephir_concat_ssvsvs(zval *result, const char *op1, uint32_t op1_len, const char *op2, uint32_t op2_len, zval *op3, const char *op4, uint32_t op4_len, zval *op5, const char *op6, uint32_t op6_len, int self_var){ zval result_copy, op3_copy, op5_copy; @@ -14835,7 +14887,7 @@ static PHP_METHOD(Phalcon_Tag, fileField) RETURN_MM(); } -static PHP_METHOD(Phalcon_Tag, form) +static PHP_METHOD(Phalcon_Tag, formLegacy) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; @@ -15289,7 +15341,7 @@ static PHP_METHOD(Phalcon_Tag, getTitle) zephir_read_static_property_ce(&_6$$3, phalcon_tag_ce, SL("documentPrependTitle"), PH_NOISY_CC); ZEPHIR_CPY_WRT(&documentPrependTitle, &_6$$3); if (!(ZEPHIR_IS_EMPTY(&documentPrependTitle))) { - ZEPHIR_CALL_FUNCTION(&tmp$$5, "array_reverse", NULL, 293, &documentPrependTitle); + ZEPHIR_CALL_FUNCTION(&tmp$$5, "array_reverse", NULL, 294, &documentPrependTitle); zephir_check_call_status(); zephir_is_iterable(&tmp$$5, 0, "phalcon/Tag.zep", 443); if (Z_TYPE_P(&tmp$$5) == IS_ARRAY) { @@ -16071,7 +16123,7 @@ static PHP_METHOD(Phalcon_Tag, preload) zephir_fast_str_replace(&_5$$5, &_6$$5, &_7$$5, &href); ZEPHIR_INIT_VAR(&_8$$5); ZVAL_STRING(&_8$$5, "preload"); - ZEPHIR_CALL_METHOD(NULL, &link, "__construct", NULL, 497, &_8$$5, &_5$$5, &attributes); + ZEPHIR_CALL_METHOD(NULL, &link, "__construct", NULL, 501, &_8$$5, &_5$$5, &attributes); zephir_check_call_status(); ZEPHIR_INIT_NVAR(&_8$$5); object_init_ex(&_8$$5, phalcon_html_link_serializer_header_ce); @@ -16083,7 +16135,7 @@ static PHP_METHOD(Phalcon_Tag, preload) ZEPHIR_INIT_VAR(&_10$$5); zephir_create_array(&_10$$5, 1, 0); zephir_array_fast_append(&_10$$5, &link); - ZEPHIR_CALL_METHOD(&_9$$5, &_8$$5, "serialize", NULL, 498, &_10$$5); + ZEPHIR_CALL_METHOD(&_9$$5, &_8$$5, "serialize", NULL, 502, &_10$$5); zephir_check_call_status(); ZEPHIR_INIT_VAR(&header); ZEPHIR_CONCAT_SV(&header, "Link: ", &_9$$5); @@ -17194,7 +17246,7 @@ static PHP_METHOD(Phalcon_Tag, textArea) ZVAL_STRING(&_1, "", &_2, ""); @@ -17532,629 +17584,185 @@ static PHP_METHOD(Phalcon_Tag, inputFieldChecked) -ZEPHIR_INIT_CLASS(Phalcon_Forms_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms, Exception, phalcon, forms_exception, zend_ce_exception, NULL, 0); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Form) +ZEPHIR_INIT_CLASS(Phalcon_Factory_AbstractConfigFactory) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms, Form, phalcon, forms_form, phalcon_di_injectable_ce, phalcon_forms_form_method_entry, 0); - - zend_declare_property_null(phalcon_forms_form_ce, SL("attributes"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("data"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("filteredData"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("elements"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("elementsIndexed"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("entity"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("messages"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_forms_form_ce, SL("position"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("options"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("tagFactory"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("validation"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_form_ce, SL("whitelist"), ZEND_ACC_PROTECTED); - phalcon_forms_form_ce->create_object = zephir_init_properties_Phalcon_Forms_Form; + ZEPHIR_REGISTER_CLASS(Phalcon\\Factory, AbstractConfigFactory, phalcon, factory_abstractconfigfactory, phalcon_factory_abstractconfigfactory_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - zend_class_implements(phalcon_forms_form_ce, 1, zend_ce_countable); - zend_class_implements(phalcon_forms_form_ce, 1, zend_ce_iterator); - zend_class_implements(phalcon_forms_form_ce, 1, phalcon_html_attributes_attributesinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Forms_Form, getValidation) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "validation"); -} - -static PHP_METHOD(Phalcon_Forms_Form, getWhitelist) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "whitelist"); -} - -static PHP_METHOD(Phalcon_Forms_Form, __construct) +static PHP_METHOD(Phalcon_Factory_AbstractConfigFactory, checkConfig) { zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval userOptions; - zval *entity = NULL, entity_sub, *userOptions_param = NULL, __$null, _1; + zval *config = NULL, config_sub, _1$$3, _2$$4, _3$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&entity_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&userOptions); + ZVAL_UNDEF(&config_sub); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(entity) - Z_PARAM_ARRAY(userOptions) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(config) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &entity, &userOptions_param); - if (!entity) { - entity = &entity_sub; - entity = &__$null; - } - if (!userOptions_param) { - ZEPHIR_INIT_VAR(&userOptions); - array_init(&userOptions); - } else { - zephir_get_arrval(&userOptions, userOptions_param); - } + zephir_fetch_params(1, 1, 0, &config); + ZEPHIR_SEPARATE_PARAM(config); - _0 = Z_TYPE_P(entity) != IS_NULL; + _0 = Z_TYPE_P(config) == IS_OBJECT; if (_0) { - _0 = Z_TYPE_P(entity) != IS_OBJECT; + _0 = zephir_instance_of_ev(config, phalcon_config_configinterface_ce); } - if (UNEXPECTED(_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_forms_exception_ce, "The base entity is not valid", "phalcon/Forms/Form.zep", 98); - return; + if (_0) { + ZEPHIR_CALL_METHOD(&_1$$3, config, "toarray", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(config, &_1$$3); } - zephir_update_property_zval(this_ptr, ZEND_STRL("entity"), entity); - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &userOptions); - ZEPHIR_INIT_VAR(&_1); - object_init_ex(&_1, phalcon_html_attributes_ce); - ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 22); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1); - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("initialize")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 0, entity, &userOptions); + if (UNEXPECTED(Z_TYPE_P(config) != IS_ARRAY)) { + ZEPHIR_INIT_VAR(&_3$$4); + ZVAL_STRING(&_3$$4, "Config must be array or Phalcon\\Config\\Config object"); + ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "getexception", NULL, 0, &_3$$4); zephir_check_call_status(); + zephir_throw_exception_debug(&_2$$4, "phalcon/Factory/AbstractConfigFactory.zep", 29); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_MM_RESTORE(); + RETVAL_ZVAL(config, 1, 0); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, add) +static PHP_METHOD(Phalcon_Factory_AbstractConfigFactory, checkConfigElement) { - zend_string *_9$$5; - zend_ulong _8$$5; - zval elements; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool type, _0, _3; - zval position; - zval *element, element_sub, *position_param = NULL, *type_param = NULL, name, key, value, _1, _4, _2$$3, _5$$5, *_6$$5, _7$$5; + zval element, _1$$3; + zval *config_param = NULL, *element_param = NULL, _0$$3; + zval config; zval *this_ptr = getThis(); - ZVAL_UNDEF(&element_sub); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$5); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&elements); + ZVAL_UNDEF(&config); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_OBJECT_OF_CLASS(element, phalcon_forms_element_elementinterface_ce) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(position) - Z_PARAM_BOOL_OR_NULL(type, is_null_true) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_ARRAY(config) + Z_PARAM_STR(element) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &element, &position_param, &type_param); - if (!position_param) { - ZEPHIR_INIT_VAR(&position); - } else { - zephir_get_strval(&position, position_param); - } - if (!type_param) { - type = 0; - } else { - type = zephir_get_boolval(type_param); - } + zephir_fetch_params(1, 2, 0, &config_param, &element_param); + zephir_get_arrval(&config, config_param); + zephir_get_strval(&element, element_param); - ZEPHIR_CALL_METHOD(&name, element, "getname", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, element, "setform", NULL, 0, this_ptr); - zephir_check_call_status(); - _0 = (zephir_method_exists_ex(element, ZEND_STRL("settagfactory")) == SUCCESS); - if (_0) { - zephir_read_property(&_1, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); - _0 = Z_TYPE_P(&_1) != IS_NULL; - } - if (_0) { - zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, element, "settagfactory", NULL, 0, &_2$$3); + if (UNEXPECTED(!(zephir_array_isset(&config, &element)))) { + ZEPHIR_INIT_VAR(&_1$$3); + ZEPHIR_CONCAT_SVS(&_1$$3, "You must provide '", &element, "' option in factory config parameter."); + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getexception", NULL, 0, &_1$$3); zephir_check_call_status(); + zephir_throw_exception_debug(&_0$$3, "phalcon/Factory/AbstractConfigFactory.zep", 43); + ZEPHIR_MM_RESTORE(); + return; } - _3 = ZEPHIR_IS_NULL(&position); - if (!(_3)) { - zephir_read_property(&_4, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - _3 = ZEPHIR_IS_EMPTY(&_4); - } - if (_3) { - zephir_update_property_array(this_ptr, SL("elements"), &name, element); - } else { - ZEPHIR_INIT_VAR(&elements); - array_init(&elements); - zephir_read_property(&_5$$5, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_5$$5, 0, "phalcon/Forms/Form.zep", 176); - if (Z_TYPE_P(&_5$$5) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_5$$5), _8$$5, _9$$5, _6$$5) - { - ZEPHIR_INIT_NVAR(&key); - if (_9$$5 != NULL) { - ZVAL_STR_COPY(&key, _9$$5); - } else { - ZVAL_LONG(&key, _8$$5); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _6$$5); - if (ZEPHIR_IS_EQUAL(&key, &position)) { - if (type) { - zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); - } - } else { - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_5$$5, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_7$$5, &_5$$5, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_7$$5)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &_5$$5, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &_5$$5, "current", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_EQUAL(&key, &position)) { - if (type) { - zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); - } - } else { - zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &_5$$5, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - zephir_update_property_zval(this_ptr, ZEND_STRL("elements"), &elements); - } - RETURN_THIS(); + RETURN_CTOR(&config); } -static PHP_METHOD(Phalcon_Forms_Form, bind) +static PHP_METHOD(Phalcon_Factory_AbstractConfigFactory, getException) { - zend_bool _7$$5, _14$$13; - zend_string *_5; - zend_ulong _4; - zval method; + zend_class_entry *_1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *data_param = NULL, *entity = NULL, entity_sub, *whitelist_param = NULL, __$null, filter, key, value, element, filters, container, filteredValue, _0, *_2, _3, _1$$4, _6$$5, _9$$9, _10$$9, _11$$11, _12$$11, _13$$13, _15$$17, _16$$17, _17$$19, _18$$19; - zval data, whitelist, assignData, filteredData; + zval *message_param = NULL, exception, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&whitelist); - ZVAL_UNDEF(&assignData); - ZVAL_UNDEF(&filteredData); - ZVAL_UNDEF(&entity_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&filter); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&filters); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&filteredValue); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&exception); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_6$$5); - ZVAL_UNDEF(&_9$$9); - ZVAL_UNDEF(&_10$$9); - ZVAL_UNDEF(&_11$$11); - ZVAL_UNDEF(&_12$$11); - ZVAL_UNDEF(&_13$$13); - ZVAL_UNDEF(&_15$$17); - ZVAL_UNDEF(&_16$$17); - ZVAL_UNDEF(&_17$$19); - ZVAL_UNDEF(&_18$$19); - ZVAL_UNDEF(&method); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_ARRAY(data) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(entity) - Z_PARAM_ARRAY(whitelist) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(message) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &data_param, &entity, &whitelist_param); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!entity) { - entity = &entity_sub; - ZEPHIR_CPY_WRT(entity, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(entity); - } - if (!whitelist_param) { - ZEPHIR_INIT_VAR(&whitelist); - array_init(&whitelist); - } else { - zephir_get_arrval(&whitelist, whitelist_param); - } + zephir_fetch_params(1, 1, 0, &message_param); + zephir_get_strval(&message, message_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(ZEPHIR_IS_EMPTY(&_0))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_forms_exception_ce, "There are no elements in the form", "phalcon/Forms/Form.zep", 195); - return; - } - if (ZEPHIR_IS_EMPTY(&whitelist)) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&whitelist, &_1$$4); - } - ZEPHIR_INIT_VAR(&filter); - ZVAL_NULL(&filter); - ZEPHIR_INIT_VAR(&assignData); - array_init(&assignData); - ZEPHIR_INIT_VAR(&filteredData); - array_init(&filteredData); - zephir_is_iterable(&data, 0, "phalcon/Forms/Form.zep", 261); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _4, _5, _2) - { - ZEPHIR_INIT_NVAR(&key); - if (_5 != NULL) { - ZVAL_STR_COPY(&key, _5); - } else { - ZVAL_LONG(&key, _4); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _2); - ZEPHIR_OBS_NVAR(&element); - zephir_read_property(&_6$$5, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&element, &_6$$5, &key, 0))) { - continue; - } - _7$$5 = !(ZEPHIR_IS_EMPTY(&whitelist)); - if (_7$$5) { - _7$$5 = !(zephir_fast_in_array(&key, &whitelist)); - } - if (_7$$5) { - continue; - } - ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&filters)) { - if (Z_TYPE_P(&filter) != IS_OBJECT) { - ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", &_8, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_10$$9); - ZVAL_STRING(&_10$$9, "filter"); - ZEPHIR_CALL_METHOD(&_9$$9, &container, "getshared", NULL, 0, &_10$$9); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&filter, &_9$$9); - } - ZEPHIR_CALL_METHOD(&filteredValue, &filter, "sanitize", NULL, 0, &value, &filters); - zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&filteredValue, &value); - } - zephir_array_update_zval(&assignData, &key, &value, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&filteredData, &key, &filteredValue, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(entity) != IS_NULL) { - ZEPHIR_INIT_NVAR(&_11$$11); - zephir_camelize(&_11$$11, &key, NULL ); - ZEPHIR_INIT_NVAR(&_12$$11); - ZEPHIR_CONCAT_SV(&_12$$11, "set", &_11$$11); - zephir_get_strval(&method, &_12$$11); - if ((zephir_method_exists(entity, &method) == SUCCESS)) { - ZEPHIR_CALL_METHOD_ZVAL(NULL, entity, &method, NULL, 0, &filteredValue); - zephir_check_call_status(); - continue; - } - zephir_update_property_zval_zval(entity, &key, &filteredValue); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &data, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&element); - zephir_read_property(&_13$$13, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&element, &_13$$13, &key, 0))) { - continue; - } - _14$$13 = !(ZEPHIR_IS_EMPTY(&whitelist)); - if (_14$$13) { - _14$$13 = !(zephir_fast_in_array(&key, &whitelist)); - } - if (_14$$13) { - continue; - } - ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&filters)) { - if (Z_TYPE_P(&filter) != IS_OBJECT) { - ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", &_8, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_16$$17); - ZVAL_STRING(&_16$$17, "filter"); - ZEPHIR_CALL_METHOD(&_15$$17, &container, "getshared", NULL, 0, &_16$$17); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&filter, &_15$$17); - } - ZEPHIR_CALL_METHOD(&filteredValue, &filter, "sanitize", NULL, 0, &value, &filters); - zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&filteredValue, &value); - } - zephir_array_update_zval(&assignData, &key, &value, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&filteredData, &key, &filteredValue, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(entity) != IS_NULL) { - ZEPHIR_INIT_NVAR(&_17$$19); - zephir_camelize(&_17$$19, &key, NULL ); - ZEPHIR_INIT_NVAR(&_18$$19); - ZEPHIR_CONCAT_SV(&_18$$19, "set", &_17$$19); - zephir_get_strval(&method, &_18$$19); - if ((zephir_method_exists(entity, &method) == SUCCESS)) { - ZEPHIR_CALL_METHOD_ZVAL(NULL, entity, &method, NULL, 0, &filteredValue); - zephir_check_call_status(); - continue; - } - zephir_update_property_zval_zval(entity, &key, &filteredValue); - } - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_CALL_METHOD(&exception, this_ptr, "getexceptionclass", NULL, 0); + zephir_check_call_status(); + zephir_fetch_safe_class(&_0, &exception); + _1 = zephir_fetch_class_str_ex(Z_STRVAL_P(&_0), Z_STRLEN_P(&_0), ZEND_FETCH_CLASS_AUTO); + if(!_1) { + RETURN_MM_NULL(); } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &assignData); - zephir_update_property_zval(this_ptr, ZEND_STRL("filteredData"), &filteredData); - RETURN_THIS(); + object_init_ex(return_value, _1); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0, &message); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, clear) +static PHP_METHOD(Phalcon_Factory_AbstractConfigFactory, getExceptionClass) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *fields = NULL, fields_sub, __$null, elements, element, data, field, _0, *_1$$3, _2$$3, _3$$7, *_4$$6, _5$$6; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&elements); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&_5$$6); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(fields) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &fields); - if (!fields) { - fields = &fields_sub; - ZEPHIR_CPY_WRT(fields, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(fields); - } + RETURN_STRING("Exception"); +} - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&data, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&elements, &_0); - if (Z_TYPE_P(fields) == IS_NULL) { - ZEPHIR_INIT_NVAR(&data); - array_init(&data); - zephir_is_iterable(&elements, 0, "phalcon/Forms/Form.zep", 290); - if (Z_TYPE_P(&elements) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&elements), _1$$3) - { - ZEPHIR_INIT_NVAR(&element); - ZVAL_COPY(&element, _1$$3); - ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &elements, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2$$3, &elements, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&element, &elements, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &elements, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&element); - } else { - if (Z_TYPE_P(fields) != IS_ARRAY) { - ZEPHIR_INIT_VAR(&_3$$7); - zephir_create_array(&_3$$7, 1, 0); - zephir_array_fast_append(&_3$$7, fields); - ZEPHIR_CPY_WRT(fields, &_3$$7); - } - zephir_is_iterable(fields, 0, "phalcon/Forms/Form.zep", 304); - if (Z_TYPE_P(fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(fields), _4$$6) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _4$$6); - if (zephir_array_isset(&data, &field)) { - zephir_array_unset(&data, &field, PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&element); - if (zephir_array_isset_fetch(&element, &elements, &field, 0)) { - ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); - zephir_check_call_status(); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$6, fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$6)) { - break; - } - ZEPHIR_CALL_METHOD(&field, fields, "current", NULL, 0); - zephir_check_call_status(); - if (zephir_array_isset(&data, &field)) { - zephir_array_unset(&data, &field, PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&element); - if (zephir_array_isset_fetch(&element, &elements, &field, 0)) { - ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, fields, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &data); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Forms_Form, count) -{ - zval _0; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); +#ifdef HAVE_CONFIG_H +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - RETURN_LONG(zephir_fast_count_int(&_0)); -} -static PHP_METHOD(Phalcon_Forms_Form, current) -{ - zval element, _0, _1; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); +ZEPHIR_INIT_CLASS(Phalcon_Factory_AbstractFactory) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Factory, AbstractFactory, phalcon, factory_abstractfactory, phalcon_factory_abstractconfigfactory_ce, phalcon_factory_abstractfactory_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + zend_declare_property_null(phalcon_factory_abstractfactory_ce, SL("mapper"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_factory_abstractfactory_ce, SL("services"), ZEND_ACC_PROTECTED); + phalcon_factory_abstractfactory_ce->create_object = zephir_init_properties_Phalcon_Factory_AbstractFactory; + return SUCCESS; +} - zephir_read_property(&_0, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("position"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&element, &_0, &_1, 1))) { - RETURN_BOOL(0); - } - RETURN_CTORW(&element); +static PHP_METHOD(Phalcon_Factory_AbstractFactory, getServices) +{ } -static PHP_METHOD(Phalcon_Forms_Form, get) +static PHP_METHOD(Phalcon_Factory_AbstractFactory, getService) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, element, _0, _1$$3; + zval *name_param = NULL, _0, _3, _4, _1$$3; zval name, _2$$3; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&element); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; @@ -18177,160 +17785,235 @@ static PHP_METHOD(Phalcon_Forms_Form, get) } - ZEPHIR_OBS_VAR(&element); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_forms_exception_ce); + zephir_read_property(&_0, this_ptr, ZEND_STRL("mapper"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset(&_0, &name)))) { ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Service ", &name, " is not registered"); + ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "getexception", NULL, 0, &_2$$3); zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 343); + zephir_throw_exception_debug(&_1$$3, "phalcon/Factory/AbstractFactory.zep", 40); ZEPHIR_MM_RESTORE(); return; } - RETURN_CCTOR(&element); + zephir_read_property(&_3, this_ptr, ZEND_STRL("mapper"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_4, &_3, &name, PH_NOISY | PH_READONLY, "phalcon/Factory/AbstractFactory.zep", 43); + RETURN_CTOR(&_4); } -static PHP_METHOD(Phalcon_Forms_Form, getAction) +static PHP_METHOD(Phalcon_Factory_AbstractFactory, init) { - zval _3; - zval _0, _1, _2; + zend_string *_4; + zend_ulong _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *services_param = NULL, adapters, name, service, _0, *_1, _2, _5$$3, _6$$4; + zval services; zval *this_ptr = getThis(); + ZVAL_UNDEF(&services); + ZVAL_UNDEF(&adapters); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&service); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(services) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &services_param); + if (!services_param) { + ZEPHIR_INIT_VAR(&services); + array_init(&services); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); + } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getattributes", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "action"); - ZEPHIR_CALL_METHOD(&_1, &_0, "get", NULL, 0, &_2); + + ZEPHIR_CALL_METHOD(&adapters, this_ptr, "getservices", NULL, 0); zephir_check_call_status(); - zephir_cast_to_string(&_3, &_1); - RETURN_CTOR(&_3); + ZEPHIR_INIT_VAR(&_0); + zephir_fast_array_merge(&_0, &adapters, &services); + ZEPHIR_CPY_WRT(&adapters, &_0); + zephir_is_iterable(&adapters, 0, "phalcon/Factory/AbstractFactory.zep", 60); + if (Z_TYPE_P(&adapters) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&adapters), _3, _4, _1) + { + ZEPHIR_INIT_NVAR(&name); + if (_4 != NULL) { + ZVAL_STR_COPY(&name, _4); + } else { + ZVAL_LONG(&name, _3); + } + ZEPHIR_INIT_NVAR(&service); + ZVAL_COPY(&service, _1); + zephir_update_property_array(this_ptr, SL("mapper"), &name, &service); + zephir_unset_property_array(this_ptr, ZEND_STRL("services"), &name); + zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + zephir_array_unset(&_5$$3, &name, PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &adapters, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, &adapters, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &adapters, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&service, &adapters, "current", NULL, 0); + zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("mapper"), &name, &service); + zephir_unset_property_array(this_ptr, ZEND_STRL("services"), &name); + zephir_read_property(&_6$$4, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + zephir_array_unset(&_6$$4, &name, PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &adapters, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&service); + ZEPHIR_INIT_NVAR(&name); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, getAttributes) +zend_object *zephir_init_properties_Phalcon_Factory_AbstractFactory(zend_class_entry *class_type) { - zval _0, _1$$3; + zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + - - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(Z_TYPE_P(&_0) == IS_NULL)) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_html_attributes_ce); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 22); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1$$3); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("services"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("mapper"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("mapper"), &_3$$4); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); } - RETURN_MM_MEMBER(getThis(), "attributes"); } -static PHP_METHOD(Phalcon_Forms_Form, getElements) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "elements"); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Forms_Form, getEntity) + + + + +ZEPHIR_INIT_CLASS(Phalcon_Factory_Exception) { - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Factory, Exception, phalcon, factory_exception, zend_ce_exception, NULL, 0); + return SUCCESS; +} - RETURN_MEMBER(getThis(), "entity"); + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_AdapterFactory) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage, AdapterFactory, phalcon, storage_adapterfactory, phalcon_factory_abstractfactory_ce, phalcon_storage_adapterfactory_method_entry, 0); + + zend_declare_property_null(phalcon_storage_adapterfactory_ce, SL("serializerFactory"), ZEND_ACC_PRIVATE); + return SUCCESS; } -static PHP_METHOD(Phalcon_Forms_Form, getFilteredValue) +static PHP_METHOD(Phalcon_Storage_AdapterFactory, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, filteredData, value, _0; - zval name; + zval services; + zval *factory, factory_sub, *services_param = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&filteredData); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&services); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(services) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 1, 1, &factory, &services_param); + if (!services_param) { + ZEPHIR_INIT_VAR(&services); + array_init(&services); } else { - ZEPHIR_INIT_VAR(&name); + ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("filteredData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&filteredData, &_0); - if (Z_TYPE_P(&filteredData) == IS_ARRAY) { - ZEPHIR_OBS_VAR(&value); - if (zephir_array_isset_fetch(&value, &filteredData, &name, 0)) { - RETURN_CCTOR(&value); - } - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getvalue", NULL, 0, &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("serializerFactory"), factory); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, getLabel) +static PHP_METHOD(Phalcon_Storage_AdapterFactory, newInstance) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, element, label, _0, _1$$3; - zval name, _2$$3; + zval options, _0; + zval *name_param = NULL, *options_param = NULL, definition, _1; + zval name; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&label); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&options); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); + zephir_fetch_params(1, 1, 1, &name_param, &options_param); if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); @@ -18340,69 +18023,128 @@ static PHP_METHOD(Phalcon_Forms_Form, getLabel) } else { ZEPHIR_INIT_VAR(&name); } + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); + } - ZEPHIR_OBS_VAR(&element); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_forms_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 418); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&label, &element, "getlabel", NULL, 0); + ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); zephir_check_call_status(); - if (!(zephir_is_true(&label))) { - RETURN_CTOR(&name); - } - RETURN_CCTOR(&label); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 2, 0); + ZEPHIR_OBS_VAR(&_1); + zephir_read_property(&_1, this_ptr, ZEND_STRL("serializerFactory"), PH_NOISY_CC); + zephir_array_fast_append(&_0, &_1); + zephir_array_fast_append(&_0, &options); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(return_value, &definition, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, getMessages) +static PHP_METHOD(Phalcon_Storage_AdapterFactory, getExceptionClass) +{ + zval *this_ptr = getThis(); + + + + RETURN_STRING("Phalcon\\Storage\\Exception"); +} + +static PHP_METHOD(Phalcon_Storage_AdapterFactory, getServices) +{ + zval *this_ptr = getThis(); + + + + zephir_create_array(return_value, 5, 0); + add_assoc_stringl_ex(return_value, SL("apcu"), SL("Phalcon\\Storage\\Adapter\\Apcu")); + add_assoc_stringl_ex(return_value, SL("libmemcached"), SL("Phalcon\\Storage\\Adapter\\Libmemcached")); + add_assoc_stringl_ex(return_value, SL("memory"), SL("Phalcon\\Storage\\Adapter\\Memory")); + add_assoc_stringl_ex(return_value, SL("redis"), SL("Phalcon\\Storage\\Adapter\\Redis")); + add_assoc_stringl_ex(return_value, SL("stream"), SL("Phalcon\\Storage\\Adapter\\Stream")); + return; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Exception) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage, Exception, phalcon, storage_exception, zend_ce_exception, NULL, 0); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_SerializerFactory) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage, SerializerFactory, phalcon, storage_serializerfactory, phalcon_factory_abstractfactory_ce, phalcon_storage_serializerfactory_method_entry, 0); + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Storage_SerializerFactory, __construct) { - zend_bool _1; - zval messages, _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *services_param = NULL; + zval services; zval *this_ptr = getThis(); - ZVAL_UNDEF(&messages); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&services); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(services) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&messages, &_0); - _1 = Z_TYPE_P(&messages) == IS_OBJECT; - if (_1) { - _1 = zephir_instance_of_ev(&messages, phalcon_messages_messages_ce); - } - if (!(_1)) { - object_init_ex(return_value, phalcon_messages_messages_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 8); - zephir_check_call_status(); - RETURN_MM(); + zephir_fetch_params(1, 0, 1, &services_param); + if (!services_param) { + ZEPHIR_INIT_VAR(&services); + array_init(&services); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); } - RETURN_CCTOR(&messages); + + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, getMessagesFor) +static PHP_METHOD(Phalcon_Storage_SerializerFactory, newInstance) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, _0, _1; + zval *name_param = NULL, definition; zval name; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) @@ -18424,2184 +18166,2593 @@ static PHP_METHOD(Phalcon_Forms_Form, getMessagesFor) } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &name); - zephir_check_call_status(); - if (!(zephir_is_true(&_0))) { - object_init_ex(return_value, phalcon_messages_messages_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 8); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_CALL_METHOD(&_1, this_ptr, "get", NULL, 0, &name); + ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&_1, "getmessages", NULL, 0); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(return_value, &definition); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, getTagFactory) +static PHP_METHOD(Phalcon_Storage_SerializerFactory, getExceptionClass) { zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "tagFactory"); + RETURN_STRING("Phalcon\\Storage\\Exception"); } -static PHP_METHOD(Phalcon_Forms_Form, getUserOption) +static PHP_METHOD(Phalcon_Storage_SerializerFactory, getServices) +{ + zval *this_ptr = getThis(); + + + + zephir_create_array(return_value, 14, 0); + add_assoc_stringl_ex(return_value, SL("base64"), SL("Phalcon\\Storage\\Serializer\\Base64")); + add_assoc_stringl_ex(return_value, SL("igbinary"), SL("Phalcon\\Storage\\Serializer\\Igbinary")); + add_assoc_stringl_ex(return_value, SL("json"), SL("Phalcon\\Storage\\Serializer\\Json")); + add_assoc_stringl_ex(return_value, SL("memcached_igbinary"), SL("Phalcon\\Storage\\Serializer\\MemcachedIgbinary")); + add_assoc_stringl_ex(return_value, SL("memcached_json"), SL("Phalcon\\Storage\\Serializer\\MemcachedJson")); + add_assoc_stringl_ex(return_value, SL("memcached_php"), SL("Phalcon\\Storage\\Serializer\\MemcachedPhp")); + add_assoc_stringl_ex(return_value, SL("msgpack"), SL("Phalcon\\Storage\\Serializer\\Msgpack")); + add_assoc_stringl_ex(return_value, SL("none"), SL("Phalcon\\Storage\\Serializer\\None")); + add_assoc_stringl_ex(return_value, SL("php"), SL("Phalcon\\Storage\\Serializer\\Php")); + add_assoc_stringl_ex(return_value, SL("redis_igbinary"), SL("Phalcon\\Storage\\Serializer\\RedisIgbinary")); + add_assoc_stringl_ex(return_value, SL("redis_json"), SL("Phalcon\\Storage\\Serializer\\RedisJson")); + add_assoc_stringl_ex(return_value, SL("redis_msgpack"), SL("Phalcon\\Storage\\Serializer\\RedisMsgpack")); + add_assoc_stringl_ex(return_value, SL("redis_none"), SL("Phalcon\\Storage\\Serializer\\RedisNone")); + add_assoc_stringl_ex(return_value, SL("redis_php"), SL("Phalcon\\Storage\\Serializer\\RedisPhp")); + return; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_AbstractAdapter) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Storage\\Adapter, AbstractAdapter, phalcon, storage_adapter_abstractadapter, phalcon_storage_adapter_abstractadapter_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_storage_adapter_abstractadapter_ce, SL("adapter"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_storage_adapter_abstractadapter_ce, SL("defaultSerializer"), "php", ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_storage_adapter_abstractadapter_ce, SL("lifetime"), 3600, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_storage_adapter_abstractadapter_ce, SL("options"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_storage_adapter_abstractadapter_ce, SL("prefix"), "ph-memo-", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_storage_adapter_abstractadapter_ce, SL("serializer"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_storage_adapter_abstractadapter_ce, SL("serializerFactory"), ZEND_ACC_PROTECTED); + phalcon_storage_adapter_abstractadapter_ce->create_object = zephir_init_properties_Phalcon_Storage_Adapter_AbstractAdapter; + + zend_class_implements(phalcon_storage_adapter_abstractadapter_ce, 1, phalcon_storage_adapter_adapterinterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getDefaultSerializer) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "defaultSerializer"); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *option_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, value, _0; - zval option; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval options; + zval *factory, factory_sub, *options_param = NULL, _0, _1, _2, _3, _4, _5, _6, _7$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option); - ZVAL_UNDEF(&defaultValue_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&factory_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(option) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &option_param, &defaultValue); - zephir_get_strval(&option, option_param); - if (!defaultValue) { - defaultValue = &defaultValue_sub; - defaultValue = &__$null; + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + zephir_get_arrval(&options, options_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&value, &_0, &option, 1))) { - RETVAL_ZVAL(defaultValue, 1, 0); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("serializerFactory"), factory); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "defaultSerializer"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "php"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getarrval", NULL, 0, &options, &_1, &_2); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(&_3, "mb_strtolower", NULL, 10, &_0); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultSerializer"), &_3); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "lifetime"); + ZVAL_LONG(&_5, 3600); + ZEPHIR_CALL_METHOD(&_4, this_ptr, "getarrval", NULL, 0, &options, &_1, &_5); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("lifetime"), &_4); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "serializer"); + ZVAL_NULL(&_5); + ZEPHIR_CALL_METHOD(&_6, this_ptr, "getarrval", NULL, 0, &options, &_1, &_5); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("serializer"), &_6); + if (zephir_array_isset_string(&options, SL("prefix"))) { + zephir_array_fetch_string(&_7$$3, &options, SL("prefix"), PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/AbstractAdapter.zep", 99); + zephir_update_property_zval(this_ptr, ZEND_STRL("prefix"), &_7$$3); } - RETURN_CTOR(&value); + zephir_array_unset_string(&options, SL("defaultSerializer"), PH_SEPARATE); + zephir_array_unset_string(&options, SL("lifetime"), PH_SEPARATE); + zephir_array_unset_string(&options, SL("serializer"), PH_SEPARATE); + zephir_array_unset_string(&options, SL("prefix"), PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, getUserOptions) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, clear) { - zval *this_ptr = getThis(); - +} +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, decrement) +{ +} - RETURN_MEMBER(getThis(), "options"); +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, delete) +{ } -static PHP_METHOD(Phalcon_Forms_Form, getValue) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, get) { - zval forbidden; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, __$true, entity, value, data, internalEntity, element, _0, _3, _4, _1$$4, _2$$4; - zval name, method; + zval *key_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, content, _0; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&method); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&entity); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&internalEntity); - ZVAL_UNDEF(&element); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&content); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&forbidden); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); + zephir_fetch_params(1, 1, 1, &key_param, &defaultValue); + zephir_get_strval(&key, key_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; } - zephir_read_property(&_0, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&entity, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&data, &_0); - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("getcustomvalue")) == SUCCESS)) { - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getcustomvalue", NULL, 0, &name, &entity, &data); - zephir_check_call_status(); - RETURN_MM(); - } - if (Z_TYPE_P(&entity) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_1$$4); - zephir_camelize(&_1$$4, &name, NULL ); - ZEPHIR_INIT_VAR(&_2$$4); - ZEPHIR_CONCAT_SV(&_2$$4, "get", &_1$$4); - zephir_get_strval(&method, &_2$$4); - if ((zephir_method_exists(&entity, &method) == SUCCESS)) { - ZEPHIR_RETURN_CALL_METHOD_ZVAL(&entity, &method, NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_OBS_VAR(&value); - if (zephir_fetch_property_zval(&value, &entity, &name, PH_SILENT_CC)) { - RETURN_CCTOR(&value); - } - } - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&value); - if (zephir_array_isset_fetch(&value, &data, &name, 0)) { - RETURN_CCTOR(&value); - } - } - ZEPHIR_INIT_VAR(&forbidden); - zephir_create_array(&forbidden, 14, 0); - zephir_array_update_string(&forbidden, SL("attributes"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("validation"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("action"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("useroption"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("useroptions"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("entity"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("elements"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("messages"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("messagesfor"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("label"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("value"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("di"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("tagFactory"), &__$true, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&forbidden, SL("eventsmanager"), &__$true, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&internalEntity); - zephir_fast_strtolower(&internalEntity, &name); - if (zephir_array_isset(&forbidden, &internalEntity)) { - RETURN_MM_NULL(); - } - ZEPHIR_INIT_VAR(&_3); - zephir_camelize(&_3, &name, NULL ); - ZEPHIR_INIT_VAR(&_4); - ZEPHIR_CONCAT_SV(&_4, "get", &_3); - zephir_get_strval(&method, &_4); - if ((zephir_method_exists(this_ptr, &method) == SUCCESS)) { - ZEPHIR_RETURN_CALL_METHOD_ZVAL(this_ptr, &method, NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_OBS_VAR(&element); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&element, &_0, &name, 0)) { - ZEPHIR_RETURN_CALL_METHOD(&element, "getdefault", NULL, 0); - zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &key); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + RETVAL_ZVAL(defaultValue, 1, 0); RETURN_MM(); } - RETURN_MM_NULL(); + ZEPHIR_CALL_METHOD(&content, this_ptr, "doget", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getunserializeddata", NULL, 0, &content, defaultValue); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, has) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getAdapter) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "adapter"); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getKeys) +{ +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getPrefix) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "prefix"); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, has) +{ +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, increment) +{ +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, set) +{ +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, setDefaultSerializer) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, _0; - zval name; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *serializer_param = NULL, _0; + zval serializer; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&serializer); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_STR(serializer) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); - } + zephir_fetch_params(1, 1, 0, &serializer_param); + zephir_get_strval(&serializer, serializer_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); + ZEPHIR_CALL_FUNCTION(&_0, "mb_strtolower", NULL, 10, &serializer); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultSerializer"), &_0); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, hasMessagesFor) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, doGet) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, _0, _1; - zval name; + zval *key_param = NULL, _0; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); - } + zephir_fetch_params(1, 1, 0, &key_param); + zephir_get_strval(&key, key_param); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getmessagesfor", NULL, 0, &name); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, &_0, "count", NULL, 0); + ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &key); zephir_check_call_status(); - RETURN_MM_BOOL(ZEPHIR_GT_LONG(&_1, 0)); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, isValid) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getFilteredKeys) { - zend_object_iterator *_18$$20; - zend_bool validationStatus = 0, _3, _7; + zval results; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_13 = NULL, *_14 = NULL, *_21 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval whitelist; - zval *data = NULL, data_sub, *entity = NULL, entity_sub, *whitelist_param = NULL, __$null, messages, element, validators, name, filters, validator, validation, elementMessage, _0, _4, _8, *_9, _10, _17, _1$$4, _2$$5, _5$$6, _6$$7, *_11$$10, _12$$10, *_15$$15, _16$$15, _19$$21, _20$$21; + zval prefix; + zval *keys = NULL, keys_sub, *prefix_param = NULL, key, pattern, _0, _1, *_2, _3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&entity_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&messages); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&validators); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&filters); - ZVAL_UNDEF(&validator); - ZVAL_UNDEF(&validation); - ZVAL_UNDEF(&elementMessage); + ZVAL_UNDEF(&keys_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&pattern); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_17); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_6$$7); - ZVAL_UNDEF(&_12$$10); - ZVAL_UNDEF(&_16$$15); - ZVAL_UNDEF(&_19$$21); - ZVAL_UNDEF(&_20$$21); - ZVAL_UNDEF(&whitelist); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&results); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(data) - Z_PARAM_ZVAL_OR_NULL(entity) - Z_PARAM_ARRAY(whitelist) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_ZVAL(keys) + Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &data, &entity, &whitelist_param); - if (!data) { - data = &data_sub; - ZEPHIR_CPY_WRT(data, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(data); - } - if (!entity) { - entity = &entity_sub; - ZEPHIR_CPY_WRT(entity, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(entity); + zephir_fetch_params(1, 2, 0, &keys, &prefix_param); + ZEPHIR_SEPARATE_PARAM(keys); + if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); + RETURN_MM_NULL(); } - if (!whitelist_param) { - ZEPHIR_INIT_VAR(&whitelist); - array_init(&whitelist); + if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { + zephir_get_strval(&prefix, prefix_param); } else { - zephir_get_arrval(&whitelist, whitelist_param); + ZEPHIR_INIT_VAR(&prefix); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_EMPTY(&_0)) { - RETURN_MM_BOOL(1); - } - if (ZEPHIR_IS_EMPTY(&whitelist)) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&whitelist, &_1$$4); - } - if (Z_TYPE_P(data) != IS_ARRAY) { - zephir_read_property(&_2$$5, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(data, &_2$$5); - } - _3 = Z_TYPE_P(entity) != IS_OBJECT; - if (_3) { - ZEPHIR_OBS_VAR(&_4); - zephir_read_property(&_4, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC); - _3 = Z_TYPE_P(&_4) == IS_OBJECT; - } - if (_3) { - zephir_read_property(&_5$$6, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(entity, &_5$$6); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "bind", NULL, 0, data, entity, &whitelist); - zephir_check_call_status(); - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("beforevalidation")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(&_6$$7, this_ptr, "beforevalidation", NULL, 0, data, entity); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_6$$7)) { - RETURN_MM_BOOL(0); - } - } - validationStatus = 1; - ZEPHIR_CALL_METHOD(&validation, this_ptr, "getvalidation", NULL, 0); - zephir_check_call_status(); - _7 = Z_TYPE_P(&validation) != IS_OBJECT; - if (!(_7)) { - _7 = !((zephir_instance_of_ev(&validation, phalcon_filter_validation_validationinterface_ce))); - } - if (_7) { - ZEPHIR_INIT_NVAR(&validation); - object_init_ex(&validation, phalcon_filter_validation_ce); - ZEPHIR_CALL_METHOD(NULL, &validation, "__construct", NULL, 315); - zephir_check_call_status(); + ZEPHIR_INIT_VAR(&results); + array_init(&results); + zephir_read_property(&_0, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&pattern); + ZEPHIR_CONCAT_VV(&pattern, &_0, &prefix); + ZEPHIR_INIT_VAR(&_1); + if (!(zephir_is_true(keys))) { + ZEPHIR_INIT_NVAR(&_1); + array_init(&_1); + } else { + ZEPHIR_CPY_WRT(&_1, keys); } - zephir_read_property(&_8, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_8, 0, "phalcon/Forms/Form.zep", 698); - if (Z_TYPE_P(&_8) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_8), _9) + ZEPHIR_CPY_WRT(keys, &_1); + zephir_is_iterable(keys, 0, "phalcon/Storage/Adapter/AbstractAdapter.zep", 257); + if (Z_TYPE_P(keys) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(keys), _2) { - ZEPHIR_INIT_NVAR(&element); - ZVAL_COPY(&element, _9); - ZEPHIR_CALL_METHOD(&validators, &element, "getvalidators", NULL, 0); - zephir_check_call_status(); - if (zephir_fast_count_int(&validators) == 0) { - continue; - } - ZEPHIR_CALL_METHOD(&name, &element, "getname", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&validators, 0, "phalcon/Forms/Form.zep", 685); - if (Z_TYPE_P(&validators) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _11$$10) - { - ZEPHIR_INIT_NVAR(&validator); - ZVAL_COPY(&validator, _11$$10); - ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 316, &name, &validator); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_12$$10, &validators, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_12$$10)) { - break; - } - ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 316, &name, &validator); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&validator); - ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&filters) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(NULL, &validation, "setfilters", &_14, 317, &name, &filters); - zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&key); + ZVAL_COPY(&key, _2); + if (zephir_start_with(&key, &pattern, NULL)) { + zephir_array_append(&results, &key, PH_SEPARATE, "phalcon/Storage/Adapter/AbstractAdapter.zep", 253); } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_8, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, keys, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_10, &_8, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_3, keys, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_10)) { + if (!zend_is_true(&_3)) { break; } - ZEPHIR_CALL_METHOD(&element, &_8, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&key, keys, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&validators, &element, "getvalidators", NULL, 0); - zephir_check_call_status(); - if (zephir_fast_count_int(&validators) == 0) { - continue; - } - ZEPHIR_CALL_METHOD(&name, &element, "getname", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&validators, 0, "phalcon/Forms/Form.zep", 685); - if (Z_TYPE_P(&validators) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _15$$15) - { - ZEPHIR_INIT_NVAR(&validator); - ZVAL_COPY(&validator, _15$$15); - ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 316, &name, &validator); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_16$$15, &validators, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_16$$15)) { - break; - } - ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 316, &name, &validator); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&validator); - ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&filters) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(NULL, &validation, "setfilters", &_14, 317, &name, &filters); - zephir_check_call_status(); + if (zephir_start_with(&key, &pattern, NULL)) { + zephir_array_append(&results, &key, PH_SEPARATE, "phalcon/Storage/Adapter/AbstractAdapter.zep", 253); } - ZEPHIR_CALL_METHOD(NULL, &_8, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&element); - ZEPHIR_CALL_METHOD(&messages, &validation, "validate", NULL, 318, data, entity); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_17, &messages, "count", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&_17)) { - _18$$20 = zephir_get_iterator(&messages); - _18$$20->funcs->rewind(_18$$20); - for (;_18$$20->funcs->valid(_18$$20) == SUCCESS && !EG(exception); _18$$20->funcs->move_forward(_18$$20)) { - { - ZEPHIR_ITERATOR_COPY(&elementMessage, _18$$20); - } - ZEPHIR_CALL_METHOD(&_20$$21, &elementMessage, "getfield", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_19$$21, this_ptr, "get", &_21, 0, &_20$$21); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_19$$21, "appendmessage", NULL, 0, &elementMessage); + ZEPHIR_CALL_METHOD(NULL, keys, "next", NULL, 0); zephir_check_call_status(); } - zend_iterator_dtor(_18$$20); - ZEPHIR_CALL_METHOD(NULL, &messages, "rewind", NULL, 0); - zephir_check_call_status(); - validationStatus = 0; - } - if (!(validationStatus)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), &messages); - } - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("aftervalidation")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "aftervalidation", NULL, 0, &messages); - zephir_check_call_status(); } - RETURN_MM_BOOL(validationStatus); + ZEPHIR_INIT_NVAR(&key); + RETURN_CTOR(&results); } -static PHP_METHOD(Phalcon_Forms_Form, key) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getPrefixedKey) { + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *key = NULL, key_sub, _1; zval *this_ptr = getThis(); + ZVAL_UNDEF(&key_sub); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(key) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "position"); -} - -static PHP_METHOD(Phalcon_Forms_Form, label) + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key); + ZEPHIR_SEPARATE_PARAM(key); + + + zephir_cast_to_string(&_0, key); + ZEPHIR_CPY_WRT(key, &_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CONCAT_VV(return_value, &_1, key); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getSerializedData) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *name_param = NULL, *attributes_param = NULL, element, _0, _1$$3; - zval name, _2$$3; + zval *content = NULL, content_sub, _0, _1$$3, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&element); + ZVAL_UNDEF(&content_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(name) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY_OR_NULL(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(content) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); - } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } + zephir_fetch_params(1, 1, 0, &content); + ZEPHIR_SEPARATE_PARAM(content); - ZEPHIR_OBS_VAR(&element); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_forms_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) != IS_NULL) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "setdata", NULL, 0, content); + zephir_check_call_status(); + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(content, &_2$$3, "serialize", NULL, 0); zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 748); - ZEPHIR_MM_RESTORE(); - return; } - ZEPHIR_RETURN_CALL_METHOD(&element, "label", NULL, 0, &attributes); - zephir_check_call_status(); + RETVAL_ZVAL(content, 1, 0); RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, next) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getTtl) { + zend_bool _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *ttl, ttl_sub, dateTime, _1$$4, _2$$4; zval *this_ptr = getThis(); + ZVAL_UNDEF(&ttl_sub); + ZVAL_UNDEF(&dateTime); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(ttl) + ZEND_PARSE_PARAMETERS_END(); +#endif + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &ttl); - RETURN_ON_FAILURE(zephir_property_incr(this_ptr, SL("position"))); + + if (Z_TYPE_P(ttl) == IS_NULL) { + RETURN_MM_MEMBER(getThis(), "lifetime"); + } + _0 = Z_TYPE_P(ttl) == IS_OBJECT; + if (_0) { + _0 = zephir_is_instance_of(ttl, SL("DateInterval")); + } + if (_0) { + ZEPHIR_INIT_VAR(&dateTime); + object_init_ex(&dateTime, php_date_get_date_ce()); + ZEPHIR_INIT_VAR(&_1$$4); + ZVAL_STRING(&_1$$4, "@0"); + ZEPHIR_CALL_METHOD(NULL, &dateTime, "__construct", NULL, 0, &_1$$4); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2$$4, &dateTime, "add", NULL, 0, ttl); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_2$$4, "gettimestamp", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); + } + RETURN_MM_LONG(zephir_get_intval(ttl)); } -static PHP_METHOD(Phalcon_Forms_Form, render) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getUnserializedData) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *name_param = NULL, *attributes_param = NULL, element, _0, _1$$3; - zval name, _2$$3; + zval *content = NULL, content_sub, *defaultValue = NULL, defaultValue_sub, __$null, _0, _1$$3, _2$$3, _3$$3, _4$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&element); + ZVAL_UNDEF(&content_sub); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(name) + Z_PARAM_ZVAL(content) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); - } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 1, &content, &defaultValue); + ZEPHIR_SEPARATE_PARAM(content); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; } - ZEPHIR_OBS_VAR(&element); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_forms_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) != IS_NULL) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "unserialize", NULL, 0, content); + zephir_check_call_status(); + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_3$$3, &_2$$3, "issuccess", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_3$$3))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(content, &_4$$3, "getdata", NULL, 0); zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 772); - ZEPHIR_MM_RESTORE(); - return; } - ZEPHIR_RETURN_CALL_METHOD(&element, "render", NULL, 0, &attributes); - zephir_check_call_status(); + RETVAL_ZVAL(content, 1, 0); RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, remove) +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, initSerializer) { + zend_bool _1; + zval className, _0, _2, _3$$3, _4$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, __$null, _0, _1$$3; - zval name; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&className); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultSerializer"), PH_NOISY_CC); + _1 = 1 != ZEPHIR_IS_EMPTY(&_0); + if (_1) { + ZEPHIR_OBS_VAR(&_2); + zephir_read_property(&_2, this_ptr, ZEND_STRL("serializer"), PH_NOISY_CC); + _1 = Z_TYPE_P(&_2) != IS_OBJECT; + } + if (_1) { + ZEPHIR_OBS_VAR(&className); + zephir_read_property(&className, this_ptr, ZEND_STRL("defaultSerializer"), PH_NOISY_CC); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("serializerFactory"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_4$$3, &_3$$3, "newinstance", NULL, 0, &className); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("serializer"), &_4$$3); + } + ZEPHIR_MM_RESTORE(); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_AbstractAdapter, getArrVal) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval cast; + zval *collection_param = NULL, *index, index_sub, *defaultValue = NULL, defaultValue_sub, *cast_param = NULL, __$null, value; + zval collection; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&collection); + ZVAL_UNDEF(&index_sub); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&cast); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(2, 4) + Z_PARAM_ARRAY(collection) + Z_PARAM_ZVAL(index) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_STR_OR_NULL(cast) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + zephir_fetch_params(1, 2, 2, &collection_param, &index, &defaultValue, &cast_param); + ZEPHIR_OBS_COPY_OR_DUP(&collection, collection_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; + } + if (!cast_param) { + ZEPHIR_INIT_VAR(&cast); + } else { + if (UNEXPECTED(Z_TYPE_P(cast_param) != IS_STRING && Z_TYPE_P(cast_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'cast' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); + if (EXPECTED(Z_TYPE_P(cast_param) == IS_STRING)) { + zephir_get_strval(&cast, cast_param); } else { - ZEPHIR_INIT_VAR(&name); + ZEPHIR_INIT_VAR(&cast); + } } - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset(&_0, &name)) { - zephir_unset_property_array(this_ptr, ZEND_STRL("elements"), &name); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_1$$3, &name, PH_SEPARATE); - RETURN_MM_BOOL(1); + ZEPHIR_OBS_VAR(&value); + if (UNEXPECTED(!(zephir_array_isset_fetch(&value, &collection, index, 0)))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); } - zephir_update_property_zval(this_ptr, ZEND_STRL("elementsIndexed"), &__$null); - RETURN_MM_BOOL(0); + if (UNEXPECTED(zephir_is_true(&cast))) { + ZEPHIR_MAKE_REF(&value); + ZEPHIR_CALL_FUNCTION(NULL, "settype", NULL, 12, &value, &cast); + ZEPHIR_UNREF(&value); + zephir_check_call_status(); + } + RETURN_CCTOR(&value); } -static PHP_METHOD(Phalcon_Forms_Form, rewind) +zend_object *zephir_init_properties_Phalcon_Storage_Adapter_AbstractAdapter(zend_class_entry *class_type) { - zval _0, _1; + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 0); - zephir_update_property_zval(this_ptr, ZEND_STRL("position"), &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_FUNCTION(&_1, "array_values", NULL, 14, &_0); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("elementsIndexed"), &_1); - ZEPHIR_MM_RESTORE(); + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_AdapterInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Storage\\Adapter, AdapterInterface, phalcon, storage_adapter_adapterinterface, phalcon_storage_adapter_adapterinterface_method_entry); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Forms_Form, setAction) +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, clear); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, decrement); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, delete); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, get); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, getAdapter); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, getKeys); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, getPrefix); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, has); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, increment); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, set); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Adapter_AdapterInterface, setForever); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_Apcu) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Adapter, Apcu, phalcon, storage_adapter_apcu, phalcon_storage_adapter_abstractadapter_ce, phalcon_storage_adapter_apcu_method_entry, 0); + + zend_declare_property_string(phalcon_storage_adapter_apcu_ce, SL("prefix"), "ph-apcu-", ZEND_ACC_PROTECTED); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *action_param = NULL, _0, _1; - zval action; + zephir_fcall_cache_entry *_0 = NULL; + zval options; + zval *factory, factory_sub, *options_param = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&action); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(action) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &action_param); - if (UNEXPECTED(Z_TYPE_P(action_param) != IS_STRING && Z_TYPE_P(action_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'action' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(action_param) == IS_STRING)) { - zephir_get_strval(&action, action_param); + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - ZEPHIR_INIT_VAR(&action); + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getattributes", NULL, 0); + ZEPHIR_CALL_PARENT(NULL, phalcon_storage_adapter_apcu_ce, getThis(), "__construct", &_0, 0, factory, &options); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "action"); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &_1, &action); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initserializer", NULL, 0); zephir_check_call_status(); - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Form, setAttributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, clear) { - zval *attributes, attributes_sub; + zend_object_iterator *_1; + zend_bool result = 0; + zval item, pattern, apc, _0, _2$$4, _3$$4; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(attributes, phalcon_html_attributes_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&apc); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); - zephir_fetch_params_without_memory_grow(1, 0, &attributes); + ZEPHIR_MM_GROW(); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), attributes); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&apc); + ZVAL_NULL(&apc); + zephir_read_property(&_0, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&pattern); + ZEPHIR_CONCAT_SVS(&pattern, "/^", &_0, "/"); + ZEPHIR_CALL_METHOD(&apc, this_ptr, "phpapcuiterator", NULL, 0, &pattern); + zephir_check_call_status(); + result = 1; + if (Z_TYPE_P(&apc) != IS_OBJECT) { + RETURN_MM_BOOL(0); + } + _1 = zephir_get_iterator(&apc); + _1->funcs->rewind(_1); + for (;_1->funcs->valid(_1) == SUCCESS && !EG(exception); _1->funcs->move_forward(_1)) { + { + ZEPHIR_ITERATOR_COPY(&item, _1); + } + zephir_array_fetch_string(&_3$$4, &item, SL("key"), PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Apcu.zep", 63); + ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "phpapcudelete", &_4, 0, &_3$$4); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_2$$4)) { + result = 0; + } + } + zend_iterator_dtor(_1); + RETURN_MM_BOOL(result); } -static PHP_METHOD(Phalcon_Forms_Form, setEntity) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, decrement) { - zval *entity, entity_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&entity_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(entity) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &entity); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("entity"), entity); - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "phpapcudec", NULL, 0, &_0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, setTagFactory) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, delete) { - zval *tagFactory, tagFactory_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tagFactory_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(tagFactory, phalcon_html_tagfactory_ce) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &tagFactory); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), tagFactory); - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "phpapcudelete", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM_BOOL(zephir_get_boolval(&_0)); } -static PHP_METHOD(Phalcon_Forms_Form, setValidation) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, getKeys) { - zval *validation, validation_sub; + zend_object_iterator *_1; + zval results; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *prefix_param = NULL, item, pattern, apc, _0, _2$$4; + zval prefix; zval *this_ptr = getThis(); - ZVAL_UNDEF(&validation_sub); + ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&apc); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&results); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(validation, phalcon_filter_validation_validationinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &validation); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &prefix_param); + if (!prefix_param) { + ZEPHIR_INIT_VAR(&prefix); + ZVAL_STRING(&prefix, ""); + } else { + if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { + zephir_get_strval(&prefix, prefix_param); + } else { + ZEPHIR_INIT_VAR(&prefix); + } + } - zephir_update_property_zval(this_ptr, ZEND_STRL("validation"), validation); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&apc); + ZVAL_NULL(&apc); + zephir_read_property(&_0, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&pattern); + ZEPHIR_CONCAT_SVVS(&pattern, "/^", &_0, &prefix, "/"); + ZEPHIR_CALL_METHOD(&apc, this_ptr, "phpapcuiterator", NULL, 0, &pattern); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&results); + array_init(&results); + if (Z_TYPE_P(&apc) != IS_OBJECT) { + RETURN_CTOR(&results); + } + _1 = zephir_get_iterator(&apc); + _1->funcs->rewind(_1); + for (;_1->funcs->valid(_1) == SUCCESS && !EG(exception); _1->funcs->move_forward(_1)) { + { + ZEPHIR_ITERATOR_COPY(&item, _1); + } + zephir_array_fetch_string(&_2$$4, &item, SL("key"), PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Apcu.zep", 117); + zephir_array_append(&results, &_2$$4, PH_SEPARATE, "phalcon/Storage/Adapter/Apcu.zep", 117); + } + zend_iterator_dtor(_1); + RETURN_CTOR(&results); } -static PHP_METHOD(Phalcon_Forms_Form, setWhitelist) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, has) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *whitelist_param = NULL; - zval whitelist; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, result, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&whitelist); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(whitelist) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &whitelist_param); - zephir_get_arrval(&whitelist, whitelist_param); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("whitelist"), &whitelist); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, this_ptr, "phpapcuexists", NULL, 0, &_0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_1, &result); + } else { + ZVAL_BOOL(&_1, 0); + } + RETURN_CCTOR(&_1); } -static PHP_METHOD(Phalcon_Forms_Form, setUserOption) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, increment) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *option_param = NULL, *value, value_sub; - zval option; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(option) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &option_param, &value); - zephir_get_strval(&option, option_param); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } - zephir_update_property_array(this_ptr, SL("options"), &option, value); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "phpapcuinc", NULL, 0, &_0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Form, setUserOptions) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, set) { + zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL; - zval options; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, *ttl = NULL, ttl_sub, __$null, result, _1, _2, _3, _4; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&ttl_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &options_param); - ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); + zephir_fetch_params(1, 2, 1, &key_param, &value, &ttl); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!ttl) { + ttl = &ttl_sub; + ttl = &__$null; + } - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); - RETURN_THIS(); + _0 = Z_TYPE_P(ttl) == IS_LONG; + if (_0) { + _0 = ZEPHIR_LT_LONG(ttl, 1); + } + if (_0) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "delete", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getttl", NULL, 0, ttl); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, this_ptr, "phpapcustore", NULL, 0, &_1, &_2, &_3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_4, &result); + } else { + ZVAL_BOOL(&_4, 0); + } + RETURN_CCTOR(&_4); } -static PHP_METHOD(Phalcon_Forms_Form, valid) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, setForever) { - zval _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, result, _0, _1, _2; + zval key; zval *this_ptr = getThis(); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &key_param, &value); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("position"), PH_NOISY_CC | PH_READONLY); - RETURN_BOOL(zephir_array_isset(&_0, &_1)); -} - -zend_object *zephir_init_properties_Phalcon_Forms_Form(zend_class_entry *class_type) -{ - zval _0, _2, _4, _6, _8, _10, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("whitelist"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("elementsIndexed"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("elements"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("filteredData"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("filteredData"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("data"), &_11$$8); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, this_ptr, "phpapcustore", NULL, 0, &_0, &_1); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + if ((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE)) { + ZEPHIR_CPY_WRT(&_2, &result); + } else { + ZVAL_BOOL(&_2, 0); } + RETURN_CCTOR(&_2); } +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, doGet) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, _0; + zval key; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + zephir_get_strval(&key, key_param); - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Manager) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Forms, Manager, phalcon, forms_manager, phalcon_forms_manager_method_entry, 0); - - zend_declare_property_null(phalcon_forms_manager_ce, SL("forms"), ZEND_ACC_PROTECTED); - phalcon_forms_manager_ce->create_object = zephir_init_properties_Phalcon_Forms_Manager; - - return SUCCESS; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "phpapcufetch", NULL, 0, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Manager, create) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuDec) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *entity = NULL, entity_sub, __$null, form; - zval name; + zend_long step, ttl, ZEPHIR_LAST_CALL_STATUS; + zval *key, key_sub, *step_param = NULL, *success = NULL, success_sub, *ttl_param = NULL, __$null, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&entity_sub); + ZVAL_UNDEF(&key_sub); + ZVAL_UNDEF(&success_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&form); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_ZVAL(key) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(entity) + Z_PARAM_LONG(step) + Z_PARAM_ZVAL_OR_NULL(success) + Z_PARAM_LONG(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &name_param, &entity); - zephir_get_strval(&name, name_param); - if (!entity) { - entity = &entity_sub; - entity = &__$null; + zephir_fetch_params(1, 1, 3, &key, &step_param, &success, &ttl_param); + if (!step_param) { + step = 1; + } else { + step = zephir_get_intval(step_param); + } + if (!success) { + success = &success_sub; + success = &__$null; + } + if (!ttl_param) { + ttl = 0; + } else { + ttl = zephir_get_intval(ttl_param); } - ZEPHIR_INIT_VAR(&form); - object_init_ex(&form, phalcon_forms_form_ce); - ZEPHIR_CALL_METHOD(NULL, &form, "__construct", NULL, 319, entity); + ZVAL_LONG(&_0, step); + ZVAL_LONG(&_1, ttl); + ZEPHIR_MAKE_REF(success); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_dec", NULL, 99, key, &_0, success, &_1); + ZEPHIR_UNREF(success); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("forms"), &name, &form); - RETURN_CCTOR(&form); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Manager, get) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuDelete) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, form, _0, _1$$3; - zval name, _2$$3; + zval *key, key_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&form); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&key_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_ZVAL(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 1, 0, &key); - ZEPHIR_OBS_VAR(&form); - zephir_read_property(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&form, &_0, &name, 0)))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_forms_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CONCAT_SVS(&_2$$3, "There is no form with name='", &name, "'"); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Manager.zep", 46); - ZEPHIR_MM_RESTORE(); - return; - } - RETURN_CCTOR(&form); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_delete", NULL, 100, key); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Manager, has) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, _0; - zval name; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key, key_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&key_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_ZVAL(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 1, 0, &key); - zephir_read_property(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); - RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_exists", NULL, 101, key); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Manager, set) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuInc) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, *form, form_sub; - zval name; + zend_long step, ttl, ZEPHIR_LAST_CALL_STATUS; + zval *key, key_sub, *step_param = NULL, *success = NULL, success_sub, *ttl_param = NULL, __$null, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&form_sub); + ZVAL_UNDEF(&key_sub); + ZVAL_UNDEF(&success_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_OBJECT_OF_CLASS(form, phalcon_forms_form_ce) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_ZVAL(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(step) + Z_PARAM_ZVAL_OR_NULL(success) + Z_PARAM_LONG(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &form); - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 1, 3, &key, &step_param, &success, &ttl_param); + if (!step_param) { + step = 1; + } else { + step = zephir_get_intval(step_param); + } + if (!success) { + success = &success_sub; + success = &__$null; + } + if (!ttl_param) { + ttl = 0; + } else { + ttl = zephir_get_intval(ttl_param); + } - zephir_update_property_array(this_ptr, SL("forms"), &name, form); - RETURN_THIS(); + ZVAL_LONG(&_0, step); + ZVAL_LONG(&_1, ttl); + ZEPHIR_MAKE_REF(success); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_inc", NULL, 102, key, &_0, success, &_1); + ZEPHIR_UNREF(success); + zephir_check_call_status(); + RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Forms_Manager(zend_class_entry *class_type) -{ - zval _0, _1$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("forms"), &_1$$3); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_AbstractElement) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Forms\\Element, AbstractElement, phalcon, forms_element_abstractelement, phalcon_forms_element_abstractelement_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("attributes"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("filters"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("form"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("label"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_forms_element_abstractelement_ce, SL("method"), "inputText", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("messages"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("name"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("options"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("tagFactory"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("validators"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("value"), ZEND_ACC_PROTECTED); - phalcon_forms_element_abstractelement_ce->create_object = zephir_init_properties_Phalcon_Forms_Element_AbstractElement; - - zend_class_implements(phalcon_forms_element_abstractelement_ce, 1, phalcon_forms_element_elementinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, __construct) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuFetch) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *name_param = NULL, *attributes_param = NULL, _0, _1; - zval name; + zval *key, key_sub, *success = NULL, success_sub, __$null; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&key_sub); + ZVAL_UNDEF(&success_sub); + ZVAL_NULL(&__$null); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(name) + Z_PARAM_ZVAL(key) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(success) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); - zephir_get_strval(&name, name_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 1, &key, &success); + if (!success) { + success = &success_sub; + success = &__$null; } - ZEPHIR_INIT_VAR(&_0); - zephir_fast_trim(&_0, &name, NULL , ZEPHIR_TRIM_BOTH); - zephir_get_strval(&name, &_0); - if (UNEXPECTED(ZEPHIR_IS_EMPTY(&name))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Form element name is required", "phalcon/Forms/Element/AbstractElement.zep", 97); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); - ZEPHIR_INIT_VAR(&_1); - object_init_ex(&_1, phalcon_messages_messages_ce); - ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 8); + ZEPHIR_MAKE_REF(success); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_fetch", NULL, 103, key, success); + ZEPHIR_UNREF(success); zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), &_1); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, __toString) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuIterator) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *pattern_param = NULL; + zval pattern; zval *this_ptr = getThis(); + ZVAL_UNDEF(&pattern); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(pattern) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &pattern_param); + zephir_get_strval(&pattern, pattern_param); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "render", NULL, 0); + + object_init_ex(return_value, zephir_get_internal_ce(SL("apcuiterator"))); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0, &pattern); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addFilter) +static PHP_METHOD(Phalcon_Storage_Adapter_Apcu, phpApcuStore) { - zval _1$$5, _2$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *filter_param = NULL, filters, _0; - zval filter; + zend_long ttl, ZEPHIR_LAST_CALL_STATUS; + zval *key, key_sub, *payload, payload_sub, *ttl_param = NULL, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&filter); - ZVAL_UNDEF(&filters); + ZVAL_UNDEF(&key_sub); + ZVAL_UNDEF(&payload_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$5); - ZVAL_UNDEF(&_2$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(filter) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_ZVAL(key) + Z_PARAM_ZVAL(payload) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &filter_param); - zephir_get_strval(&filter, filter_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("filters"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&filters, &_0); - if (Z_TYPE_P(&filters) == IS_ARRAY) { - zephir_update_property_array_append(this_ptr, SL("filters"), &filter); + zephir_fetch_params(1, 2, 1, &key, &payload, &ttl_param); + if (!ttl_param) { + ttl = 0; } else { - if (Z_TYPE_P(&filters) == IS_STRING) { - ZEPHIR_INIT_VAR(&_1$$5); - zephir_create_array(&_1$$5, 2, 0); - zephir_array_fast_append(&_1$$5, &filters); - zephir_array_fast_append(&_1$$5, &filter); - zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), &_1$$5); - } else { - ZEPHIR_INIT_VAR(&_2$$6); - zephir_create_array(&_2$$6, 1, 0); - zephir_array_fast_append(&_2$$6, &filter); - zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), &_2$$6); - } + ttl = zephir_get_intval(ttl_param); } - RETURN_THIS(); + + + ZVAL_LONG(&_0, ttl); + ZEPHIR_RETURN_CALL_FUNCTION("apcu_store", NULL, 104, key, payload, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addValidator) -{ - zval *validator, validator_sub; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&validator_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(validator, phalcon_filter_validation_validatorinterface_ce) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - zephir_fetch_params_without_memory_grow(1, 0, &validator); - zephir_update_property_array_append(this_ptr, SL("validators"), validator); - RETURN_THISW(); + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_Libmemcached) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Adapter, Libmemcached, phalcon, storage_adapter_libmemcached, phalcon_storage_adapter_abstractadapter_ce, phalcon_storage_adapter_libmemcached_method_entry, 0); + + zend_declare_property_string(phalcon_storage_adapter_libmemcached_ce, SL("prefix"), "ph-memc-", ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addValidators) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool merge; - zval *validators_param = NULL, *merge_param = NULL, validator, *_1, _2, _0$$3; - zval validators; + zephir_fcall_cache_entry *_2 = NULL; + zval options, _0$$3, _1$$3; + zval *factory, factory_sub, *options_param = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&validators); - ZVAL_UNDEF(&validator); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&options); ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(validators) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(merge) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &validators_param, &merge_param); - ZEPHIR_OBS_COPY_OR_DUP(&validators, validators_param); - if (!merge_param) { - merge = 1; + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - merge = zephir_get_boolval(merge_param); + zephir_get_arrval(&options, options_param); } - if (UNEXPECTED(!merge)) { + if (!(zephir_array_isset_string(&options, SL("servers")))) { ZEPHIR_INIT_VAR(&_0$$3); - array_init(&_0$$3); - zephir_update_property_zval(this_ptr, ZEND_STRL("validators"), &_0$$3); - } - zephir_is_iterable(&validators, 0, "phalcon/Forms/Element/AbstractElement.zep", 163); - if (Z_TYPE_P(&validators) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _1) - { - ZEPHIR_INIT_NVAR(&validator); - ZVAL_COPY(&validator, _1); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "addvalidator", &_3, 0, &validator); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &validators, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "addvalidator", &_3, 0, &validator); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_create_array(&_0$$3, 1, 0); + ZEPHIR_INIT_VAR(&_1$$3); + zephir_create_array(&_1$$3, 3, 0); + add_assoc_stringl_ex(&_1$$3, SL("host"), SL("127.0.0.1")); + add_assoc_long_ex(&_1$$3, SL("port"), 11211); + add_assoc_long_ex(&_1$$3, SL("weight"), 1); + zephir_array_update_long(&_0$$3, 0, &_1$$3, PH_COPY ZEPHIR_DEBUG_PARAMS_DUMMY); + zephir_array_update_string(&options, SL("servers"), &_0$$3, PH_COPY | PH_SEPARATE); } - ZEPHIR_INIT_NVAR(&validator); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, appendMessage) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *message, message_sub, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&message_sub); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(message, phalcon_messages_messageinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &message); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "appendmessage", NULL, 0, message); + ZEPHIR_CALL_PARENT(NULL, phalcon_storage_adapter_libmemcached_ce, getThis(), "__construct", &_2, 0, factory, &options); zephir_check_call_status(); - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, clear) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, clear) { - zval form, _0, name; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&form); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&name); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&form, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&name, &_0); - if (Z_TYPE_P(&form) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(NULL, &form, "clear", NULL, 0, &name); - zephir_check_call_status(); - } - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_0, "flush", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getAttribute) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, decrement) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attribute_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, attributes, value, _0; - zval attribute; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&defaultValue_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(attribute) + Z_PARAM_STR(key) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &attribute_param, &defaultValue); - zephir_get_strval(&attribute, attribute_param); - if (!defaultValue) { - defaultValue = &defaultValue_sub; - defaultValue = &__$null; + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - if (!(zephir_array_isset_fetch(&value, &attributes, &attribute, 1))) { - RETVAL_ZVAL(defaultValue, 1, 0); - RETURN_MM(); - } - RETURN_CTOR(&value); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(&_0, "decrement", NULL, 0, &key, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getAttributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, delete) { - zval attributes, _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - RETURN_CCTOR(&attributes); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getDefault) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "value"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getFilters) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "filters"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getForm) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "form"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getLabel) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "label"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getMessages) -{ - zval *this_ptr = getThis(); - + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - RETURN_MEMBER(getThis(), "messages"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZVAL_LONG(&_1, 0); + ZEPHIR_RETURN_CALL_METHOD(&_0, "delete", NULL, 0, &key, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getName) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, getAdapter) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval __$true, client, connection, failover, options, persistentId, sasl, saslUser, saslPass, serverList, servers, _0, _1$$3, _2$$3, _3$$3, _4$$3, _5$$4, _6$$4, _7$$4, _8$$4, _9$$4, _10$$4; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&client); + ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&failover); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&persistentId); + ZVAL_UNDEF(&sasl); + ZVAL_UNDEF(&saslUser); + ZVAL_UNDEF(&saslPass); + ZVAL_UNDEF(&serverList); + ZVAL_UNDEF(&servers); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); - RETURN_MEMBER(getThis(), "name"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getTagFactory) -{ - zval *this_ptr = getThis(); - - + ZEPHIR_MM_GROW(); - RETURN_MEMBER(getThis(), "tagFactory"); + zephir_read_property(&_0, this_ptr, ZEND_STRL("adapter"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_is_true(&_0))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&options, &_1$$3); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "persistentId"); + ZEPHIR_INIT_VAR(&_3$$3); + ZVAL_STRING(&_3$$3, "ph-mcid-"); + ZEPHIR_CALL_METHOD(&persistentId, this_ptr, "getarrval", NULL, 0, &options, &_2$$3, &_3$$3); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_2$$3); + array_init(&_2$$3); + ZEPHIR_INIT_NVAR(&_3$$3); + ZVAL_STRING(&_3$$3, "saslAuthData"); + ZEPHIR_CALL_METHOD(&sasl, this_ptr, "getarrval", NULL, 0, &options, &_3$$3, &_2$$3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&connection); + object_init_ex(&connection, zephir_get_internal_ce(SL("memcached"))); + ZEPHIR_CALL_METHOD(NULL, &connection, "__construct", NULL, 0, &persistentId); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&serverList, &connection, "getserverlist", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_4$$3, -1002); + ZEPHIR_CALL_METHOD(NULL, &connection, "setoption", NULL, 0, &_4$$3, &_1$$3); + zephir_check_call_status(); + if (ZEPHIR_IS_EMPTY(&serverList)) { + ZEPHIR_INIT_VAR(&_5$$4); + array_init(&_5$$4); + ZEPHIR_INIT_VAR(&_6$$4); + ZVAL_STRING(&_6$$4, "servers"); + ZEPHIR_CALL_METHOD(&servers, this_ptr, "getarrval", NULL, 0, &options, &_6$$4, &_5$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6$$4); + array_init(&_6$$4); + ZEPHIR_INIT_VAR(&_7$$4); + ZVAL_STRING(&_7$$4, "client"); + ZEPHIR_CALL_METHOD(&client, this_ptr, "getarrval", NULL, 0, &options, &_7$$4, &_6$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_7$$4); + ZVAL_STRING(&_7$$4, "user"); + ZEPHIR_INIT_VAR(&_8$$4); + ZVAL_STRING(&_8$$4, ""); + ZEPHIR_CALL_METHOD(&saslUser, this_ptr, "getarrval", NULL, 0, &sasl, &_7$$4, &_8$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_7$$4); + ZVAL_STRING(&_7$$4, "pass"); + ZEPHIR_INIT_NVAR(&_8$$4); + ZVAL_STRING(&_8$$4, ""); + ZEPHIR_CALL_METHOD(&saslPass, this_ptr, "getarrval", NULL, 0, &sasl, &_7$$4, &_8$$4); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&failover); + zephir_create_array(&failover, 5, 0); + add_index_long(&failover, 14, 10); + add_index_long(&failover, 9, 1); + add_index_long(&failover, 21, 2); + zephir_array_update_long(&failover, 35, &__$true, PH_COPY ZEPHIR_DEBUG_PARAMS_DUMMY); + add_index_long(&failover, 15, 1); + ZEPHIR_INIT_NVAR(&_7$$4); + zephir_fast_array_merge(&_7$$4, &failover, &client); + ZEPHIR_CPY_WRT(&client, &_7$$4); + ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "setoptions", NULL, 105, &connection, &client); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_10$$4, &_9$$4, "setservers", NULL, 106, &connection, &servers); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &_10$$4, "setsasl", NULL, 107, &connection, &saslUser, &saslPass); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setserializer", NULL, 108, &connection); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("adapter"), &connection); + } + RETURN_MM_MEMBER(getThis(), "adapter"); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getUserOption) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, getKeys) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *option_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, value, _0; - zval option; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *prefix_param = NULL, _0, _1; + zval prefix; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option); - ZVAL_UNDEF(&defaultValue_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&prefix); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(option) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &option_param, &defaultValue); - zephir_get_strval(&option, option_param); - if (!defaultValue) { - defaultValue = &defaultValue_sub; - defaultValue = &__$null; + zephir_fetch_params(1, 0, 1, &prefix_param); + if (!prefix_param) { + ZEPHIR_INIT_VAR(&prefix); + ZVAL_STRING(&prefix, ""); + } else { + if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { + zephir_get_strval(&prefix, prefix_param); + } else { + ZEPHIR_INIT_VAR(&prefix); } - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&value, &_0, &option, 1))) { - RETVAL_ZVAL(defaultValue, 1, 0); - RETURN_MM(); } - RETURN_CTOR(&value); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getUserOptions) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "options"); -} - -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getValidators) -{ - zval *this_ptr = getThis(); - - RETURN_MEMBER(getThis(), "validators"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, &_0, "getallkeys", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getfilteredkeys", NULL, 0, &_1, &prefix); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getValue) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, has) { - zval name, _0, form, value, _1$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, connection, result, _0; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&form); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&name, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&form, &_0); - ZEPHIR_INIT_VAR(&value); - ZVAL_NULL(&value); - if (Z_TYPE_P(&form) == IS_OBJECT) { - ZEPHIR_RETURN_CALL_METHOD(&form, "getvalue", NULL, 0, &name); - zephir_check_call_status(); - RETURN_MM(); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); } - if (Z_TYPE_P(&value) == IS_NULL) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("value"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&value, &_1$$4); + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); } - RETURN_CCTOR(&value); + + + ZEPHIR_CALL_METHOD(&connection, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, &connection, "get", NULL, 0, &key); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, &connection, "getresultcode", NULL, 0); + zephir_check_call_status(); + RETURN_MM_BOOL(!ZEPHIR_IS_LONG_IDENTICAL(&_0, 16)); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, hasMessages) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, increment) { - zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) + ZEND_PARSE_PARAMETERS_END(); +#endif + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); - RETURN_BOOL(zephir_fast_count_int(&_0) > 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(&_0, "increment", NULL, 0, &key, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, label) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, set) { - zend_bool _1; + zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, code, internalAttributes, labelName, name, tagFactory, _0$$3; - zval attributes; + zval *key_param = NULL, *value, value_sub, *ttl = NULL, ttl_sub, __$null, result, _1, _2, _3, _4; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&code); - ZVAL_UNDEF(&internalAttributes); - ZVAL_UNDEF(&labelName); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&tagFactory); - ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&ttl_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 2, 1, &key_param, &value, &ttl); + zephir_get_strval(&key, key_param); + if (!ttl) { + ttl = &ttl_sub; + ttl = &__$null; } - ZEPHIR_CALL_METHOD(&tagFactory, this_ptr, "getlocaltagfactory", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&internalAttributes); - zephir_read_property(&internalAttributes, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&name); - if (!(zephir_array_isset_string_fetch(&name, &internalAttributes, SL("id"), 0))) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&name, &_0$$3); - } - if (!(zephir_array_isset_string(&attributes, SL("for")))) { - zephir_array_update_string(&attributes, SL("for"), &name, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&labelName); - zephir_read_property(&labelName, this_ptr, ZEND_STRL("label"), PH_NOISY_CC); - _1 = zephir_is_true(&labelName); - if (!(_1)) { - _1 = zephir_is_numeric(&labelName); + _0 = Z_TYPE_P(ttl) == IS_LONG; + if (_0) { + _0 = ZEPHIR_LT_LONG(ttl, 1); } - if (!(_1)) { - ZEPHIR_CPY_WRT(&labelName, &name); + if (_0) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "delete", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM(); } - ZEPHIR_CALL_METHOD(&code, &tagFactory, "label", NULL, 0, &labelName, &attributes); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - RETURN_CCTOR(&code); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getttl", NULL, 0, ttl); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, &_1, "set", NULL, 0, &key, &_2, &_3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_4, &result); + } else { + ZVAL_BOOL(&_4, 0); + } + RETURN_CCTOR(&_4); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, render) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, setForever) { - zval _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, helper, merged, method, name, result, tagFactory, value, _0; - zval attributes; + zval *key_param = NULL, *value, value_sub, result, _0, _1, _2, _3; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&helper); - ZVAL_UNDEF(&merged); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); ZVAL_UNDEF(&result); - ZVAL_UNDEF(&tagFactory); - ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } + zephir_fetch_params(1, 2, 0, &key_param, &value); + zephir_get_strval(&key, key_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&name, &_0); - ZEPHIR_CALL_METHOD(&value, this_ptr, "getvalue", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("method"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&method, &_0); - ZEPHIR_CALL_METHOD(&tagFactory, this_ptr, "getlocaltagfactory", NULL, 0); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getserializeddata", NULL, 0, value); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&helper, &tagFactory, "newinstance", NULL, 0, &method); + ZVAL_LONG(&_2, 0); + ZEPHIR_CALL_METHOD(&result, &_0, "set", NULL, 0, &key, &_1, &_2); zephir_check_call_status(); - if (zephir_array_isset_string(&attributes, SL("value"))) { - ZEPHIR_OBS_NVAR(&value); - zephir_array_fetch_string(&value, &attributes, SL("value"), PH_NOISY, "phalcon/Forms/Element/AbstractElement.zep", 391); - zephir_array_unset_string(&attributes, SL("value"), PH_SEPARATE); + ZEPHIR_INIT_VAR(&_3); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_3, &result); + } else { + ZVAL_BOOL(&_3, 0); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&merged); - zephir_fast_array_merge(&merged, &_0, &attributes); - ZEPHIR_CALL_METHOD(&result, &helper, "__invoke", NULL, 0, &name, &value, &merged); - zephir_check_call_status(); - zephir_cast_to_string(&_1, &result); - RETURN_CTOR(&_1); + RETURN_CCTOR(&_3); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setAttribute) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, setOptions) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attribute_param = NULL, *value, value_sub; - zval attribute; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval client; + zval *connection, connection_sub, *client_param = NULL, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&client); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(attribute) - Z_PARAM_ZVAL(value) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("memcached"))) + Z_PARAM_ARRAY(client) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &attribute_param, &value); - zephir_get_strval(&attribute, attribute_param); + zephir_fetch_params(1, 2, 0, &connection, &client_param); + zephir_get_arrval(&client, client_param); - zephir_update_property_array(this_ptr, SL("attributes"), &attribute, value); + ZEPHIR_CALL_METHOD(&_0, connection, "setoptions", NULL, 0, &client); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_storage_exception_ce, "Cannot set Memcached client options", "phalcon/Storage/Adapter/Libmemcached.zep", 253); + return; + } RETURN_THIS(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setAttributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, setSasl) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attributes_param = NULL; - zval attributes; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval saslUser, saslPass; + zval *connection, connection_sub, *saslUser_param = NULL, *saslPass_param = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&saslUser); + ZVAL_UNDEF(&saslPass); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("memcached"))) + Z_PARAM_STR(saslUser) + Z_PARAM_STR(saslPass) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); + zephir_fetch_params(1, 3, 0, &connection, &saslUser_param, &saslPass_param); + zephir_get_strval(&saslUser, saslUser_param); + zephir_get_strval(&saslPass, saslPass_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); + if (1 != ZEPHIR_IS_EMPTY(&saslUser)) { + ZEPHIR_CALL_METHOD(NULL, connection, "setsaslauthdata", NULL, 0, &saslUser, &saslPass); + zephir_check_call_status(); + } RETURN_THIS(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setDefault) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, setSerializer) { - zval *value, value_sub; + zval map; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, serializer, _0, _1$$3, _2$$3, _3$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&serializer); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&map); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(value) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("memcached"))) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &value); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - zephir_update_property_zval(this_ptr, ZEND_STRL("value"), value); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&map); + zephir_create_array(&map, 3, 0); + add_assoc_long_ex(&map, SL("memcached_igbinary"), 2); + add_assoc_long_ex(&map, SL("memcached_json"), 3); + add_assoc_long_ex(&map, SL("memcached_php"), 1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultSerializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&serializer); + zephir_fast_strtolower(&serializer, &_0); + if (zephir_array_isset(&map, &serializer)) { + ZEPHIR_INIT_VAR(&_1$$3); + ZEPHIR_INIT_NVAR(&_1$$3); + ZVAL_STRING(&_1$$3, ""); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultSerializer"), &_1$$3); + zephir_array_fetch(&_2$$3, &map, &serializer, PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Libmemcached.zep", 299); + ZVAL_LONG(&_3$$3, -1003); + ZEPHIR_CALL_METHOD(NULL, connection, "setoption", NULL, 0, &_3$$3, &_2$$3); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initserializer", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setFilters) +static PHP_METHOD(Phalcon_Storage_Adapter_Libmemcached, setServers) { - zend_bool _0; - zval *filters, filters_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval servers; + zval *connection, connection_sub, *servers_param = NULL, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&filters_sub); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&servers); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(filters) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("memcached"))) + Z_PARAM_ARRAY(servers) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &filters); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &connection, &servers_param); + zephir_get_arrval(&servers, servers_param); - _0 = Z_TYPE_P(filters) != IS_STRING; - if (_0) { - _0 = Z_TYPE_P(filters) != IS_ARRAY; - } - if (UNEXPECTED(_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_forms_exception_ce, "The filter needs to be an array or string", "phalcon/Forms/Element/AbstractElement.zep", 440); + ZEPHIR_CALL_METHOD(&_0, connection, "addservers", NULL, 0, &servers); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_storage_exception_ce, "Cannot connect to the Memcached server(s)", "phalcon/Storage/Adapter/Libmemcached.zep", 317); return; } - zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), filters); - RETURN_THISW(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setForm) -{ - zval *form, form_sub; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&form_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(form, phalcon_forms_form_ce) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - zephir_fetch_params_without_memory_grow(1, 0, &form); - zephir_update_property_zval(this_ptr, ZEND_STRL("form"), form); - RETURN_THISW(); + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_Memory) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Adapter, Memory, phalcon, storage_adapter_memory, phalcon_storage_adapter_abstractadapter_ce, phalcon_storage_adapter_memory_method_entry, 0); + + zend_declare_property_null(phalcon_storage_adapter_memory_ce, SL("data"), ZEND_ACC_PROTECTED); + phalcon_storage_adapter_memory_ce->create_object = zephir_init_properties_Phalcon_Storage_Adapter_Memory; + + return SUCCESS; } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setLabel) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *label_param = NULL; - zval label; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; + zval options; + zval *factory, factory_sub, *options_param = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&label); + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(label) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &label_param); - zephir_get_strval(&label, label_param); + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("label"), &label); - RETURN_THIS(); + ZEPHIR_CALL_PARENT(NULL, phalcon_storage_adapter_memory_ce, getThis(), "__construct", &_0, 0, factory, &options); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initserializer", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setMessages) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, clear) { - zval *messages, messages_sub; + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&messages_sub); + ZVAL_UNDEF(&_0); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_INIT_VAR(&_0); + array_init(&_0); + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &_0); + RETURN_MM_BOOL(1); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, decrement) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, current, newValue, prefixedKey, result, _0, _1$$3; + zval key; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&key); + ZVAL_UNDEF(¤t); + ZVAL_UNDEF(&newValue); + ZVAL_UNDEF(&prefixedKey); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(messages, phalcon_messages_messages_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &messages); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), messages); - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&prefixedKey, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&result); + ZVAL_BOOL(&result, zephir_array_key_exists(&_0, &prefixedKey)); + if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&result))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(¤t, &_1$$3, &prefixedKey, PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Memory.zep", 72); + ZEPHIR_INIT_VAR(&newValue); + ZVAL_LONG(&newValue, (zephir_get_intval(¤t) - value)); + ZEPHIR_CPY_WRT(&result, &newValue); + zephir_update_property_array(this_ptr, SL("data"), &prefixedKey, &newValue); + } + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setName) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, delete) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL; - zval name; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, exists, prefixedKey, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&exists); + ZVAL_UNDEF(&prefixedKey); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); } else { - ZEPHIR_INIT_VAR(&name); + ZEPHIR_INIT_VAR(&key); } - zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&prefixedKey, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&exists); + ZVAL_BOOL(&exists, zephir_array_key_exists(&_0, &prefixedKey)); + zephir_unset_property_array(this_ptr, ZEND_STRL("data"), &prefixedKey); + zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + zephir_array_unset(&_1, &prefixedKey, PH_SEPARATE); + RETURN_CCTOR(&exists); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setTagFactory) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, getKeys) { - zval *tagFactory, tagFactory_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *prefix_param = NULL, _0, _1; + zval prefix; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tagFactory_sub); + ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(prefix) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &prefix_param); + if (!prefix_param) { + ZEPHIR_INIT_VAR(&prefix); + ZVAL_STRING(&prefix, ""); + } else { + zephir_get_strval(&prefix, prefix_param); + } + + + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + zephir_array_keys(&_0, &_1); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getfilteredkeys", NULL, 0, &_0, &prefix); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, has) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, prefixedKey, _0; + zval key; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&prefixedKey); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(tagFactory, phalcon_html_tagfactory_ce) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &tagFactory); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), tagFactory); - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&prefixedKey, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + RETURN_MM_BOOL(zephir_array_key_exists(&_0, &prefixedKey)); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setUserOption) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, increment) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *option_param = NULL, *value, value_sub; - zval option; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, current, newValue, prefixedKey, result, _0, _1$$3; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(¤t); + ZVAL_UNDEF(&newValue); + ZVAL_UNDEF(&prefixedKey); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } + + + ZEPHIR_CALL_METHOD(&prefixedKey, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&result); + ZVAL_BOOL(&result, zephir_array_key_exists(&_0, &prefixedKey)); + if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&result))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(¤t, &_1$$3, &prefixedKey, PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Memory.zep", 145); + ZEPHIR_INIT_VAR(&newValue); + ZVAL_LONG(&newValue, (zephir_get_intval(¤t) + value)); + ZEPHIR_CPY_WRT(&result, &newValue); + zephir_update_property_array(this_ptr, SL("data"), &prefixedKey, &newValue); + } + RETURN_CCTOR(&result); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, set) +{ + zend_bool _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, *ttl = NULL, ttl_sub, __$null, content, prefixedKey; + zval key; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&key); ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&ttl_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&content); + ZVAL_UNDEF(&prefixedKey); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(option) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &option_param, &value); - zephir_get_strval(&option, option_param); + zephir_fetch_params(1, 2, 1, &key_param, &value, &ttl); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!ttl) { + ttl = &ttl_sub; + ttl = &__$null; + } - zephir_update_property_array(this_ptr, SL("options"), &option, value); - RETURN_THIS(); + _0 = Z_TYPE_P(ttl) == IS_LONG; + if (_0) { + _0 = ZEPHIR_LT_LONG(ttl, 1); + } + if (_0) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "delete", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&content, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&prefixedKey, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("data"), &prefixedKey, &content); + RETURN_MM_BOOL(1); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setUserOptions) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, setForever) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL; - zval options; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &options_param); - zephir_get_arrval(&options, options_param); + zephir_fetch_params(1, 2, 0, &key_param, &value); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); - RETURN_THIS(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "set", NULL, 0, &key, value); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getLocalTagFactory) +static PHP_METHOD(Phalcon_Storage_Adapter_Memory, doGet) { - zval container, escaper, tagFactory, _0, _1$$3, _2$$4, _4$$5, _5$$5, _6$$6, _7$$7, _8$$7, _9$$8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, _0, _1, _2; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&escaper); - ZVAL_UNDEF(&tagFactory); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_6$$6); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_9$$8); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + zephir_get_strval(&key, key_param); - ZEPHIR_INIT_VAR(&tagFactory); - ZVAL_NULL(&tagFactory); - zephir_read_property(&_0, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(ZEPHIR_IS_EMPTY(&_0))) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_1$$3) != IS_NULL) { - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&tagFactory, &_2$$4, "gettagfactory", NULL, 0); - zephir_check_call_status(); - } - if (Z_TYPE_P(&tagFactory) == IS_NULL) { - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_3, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_5$$5); - ZVAL_STRING(&_5$$5, "tag"); - ZEPHIR_CALL_METHOD(&_4$$5, &container, "has", NULL, 0, &_5$$5); - zephir_check_call_status(); - if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&_4$$5))) { - ZEPHIR_INIT_VAR(&_6$$6); - ZVAL_STRING(&_6$$6, "tag"); - ZEPHIR_CALL_METHOD(&tagFactory, &container, "getshared", NULL, 0, &_6$$6); - zephir_check_call_status(); - } - } - if (Z_TYPE_P(&tagFactory) == IS_NULL) { - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_3, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_8$$7); - ZVAL_STRING(&_8$$7, "escaper"); - ZEPHIR_CALL_METHOD(&_7$$7, &container, "has", NULL, 0, &_8$$7); - zephir_check_call_status(); - if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&_7$$7))) { - ZEPHIR_INIT_VAR(&_9$$8); - ZVAL_STRING(&_9$$8, "escaper"); - ZEPHIR_CALL_METHOD(&escaper, &container, "getshared", NULL, 0, &_9$$8); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&escaper); - object_init_ex(&escaper, phalcon_html_escaper_ce); - if (zephir_has_constructor(&escaper)) { - ZEPHIR_CALL_METHOD(NULL, &escaper, "__construct", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&tagFactory); - object_init_ex(&tagFactory, phalcon_html_tagfactory_ce); - ZEPHIR_CALL_METHOD(NULL, &tagFactory, "__construct", NULL, 9, &escaper); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), &tagFactory); - } - RETURN_MM_MEMBER(getThis(), "tagFactory"); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getprefixedkey", NULL, 0, &key); + zephir_check_call_status(); + zephir_array_fetch(&_1, &_0, &_2, PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Memory.zep", 206); + RETURN_CTOR(&_1); } -zend_object *zephir_init_properties_Phalcon_Forms_Element_AbstractElement(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_Storage_Adapter_Memory(zend_class_entry *class_type) { - zval _0, _2, _4, _6, _1$$3, _3$$4, _5$$5, _7$$6; + zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); ZEPHIR_MM_GROW(); @@ -20609,29 +20760,17 @@ zend_object *zephir_init_properties_Phalcon_Forms_Element_AbstractElement(zend_c { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("validators"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("validators"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_1$$3); } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_2) == IS_NULL) { ZEPHIR_INIT_VAR(&_3$$4); array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("filters"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("filters"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_7$$6); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("data"), &_3$$4); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -20648,662 +20787,820 @@ zend_object *zephir_init_properties_Phalcon_Forms_Element_AbstractElement(zend_c -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Check) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Check, phalcon, forms_element_check, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_check_ce, SL("method"), "inputCheckbox", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Date) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Date, phalcon, forms_element_date, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_date_ce, SL("method"), "inputDate", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_ElementInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Forms\\Element, ElementInterface, phalcon, forms_element_elementinterface, phalcon_forms_element_elementinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addFilter); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addValidator); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addValidators); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, appendMessage); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, clear); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getAttribute); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getDefault); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getFilters); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getForm); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getLabel); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getMessages); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getName); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getUserOption); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getUserOptions); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getValidators); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getValue); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, hasMessages); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, label); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, render); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setAttribute); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setDefault); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setFilters); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setForm); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setLabel); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setMessages); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setName); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setUserOption); -ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setUserOptions); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Email) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Email, phalcon, forms_element_email, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_email_ce, SL("method"), "inputEmail", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_File) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, File, phalcon, forms_element_file, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_file_ce, SL("method"), "inputFile", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Hidden) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_Redis) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Hidden, phalcon, forms_element_hidden, phalcon_forms_element_abstractelement_ce, NULL, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Adapter, Redis, phalcon, storage_adapter_redis, phalcon_storage_adapter_abstractadapter_ce, phalcon_storage_adapter_redis_method_entry, 0); - zend_declare_property_string(phalcon_forms_element_hidden_ce, SL("method"), "inputHidden", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_storage_adapter_redis_ce, SL("prefix"), "ph-reds-", ZEND_ACC_PROTECTED); return SUCCESS; } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Numeric) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, __construct) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Numeric, phalcon, forms_element_numeric, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_numeric_ce, SL("method"), "inputNumeric", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_15 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval options; + zval *factory, factory_sub, *options_param = NULL, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&options); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); + } - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Password) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Password, phalcon, forms_element_password, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_password_ce, SL("method"), "inputPassword", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "host"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "127.0.0.1"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getarrval", NULL, 0, &options, &_1, &_2); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("host"), &_0, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "port"); + ZVAL_LONG(&_4, 6379); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_STRING(&_2, "int"); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4, &_2); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("port"), &_3, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "index"); + ZVAL_LONG(&_4, 0); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("index"), &_5, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "timeout"); + ZVAL_LONG(&_4, 0); + ZEPHIR_CALL_METHOD(&_6, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("timeout"), &_6, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "persistent"); + ZVAL_BOOL(&_4, 0); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_STRING(&_2, "bool"); + ZEPHIR_CALL_METHOD(&_7, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4, &_2); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("persistent"), &_7, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "persistentId"); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_STRING(&_2, ""); + ZEPHIR_INIT_VAR(&_9); + ZVAL_STRING(&_9, "string"); + ZEPHIR_CALL_METHOD(&_8, this_ptr, "getarrval", NULL, 0, &options, &_1, &_2, &_9); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("persistentId"), &_8, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "auth"); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_STRING(&_2, ""); + ZEPHIR_CALL_METHOD(&_10, this_ptr, "getarrval", NULL, 0, &options, &_1, &_2); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("auth"), &_10, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "socket"); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_STRING(&_2, ""); + ZEPHIR_CALL_METHOD(&_11, this_ptr, "getarrval", NULL, 0, &options, &_1, &_2); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("socket"), &_11, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "connectTimeout"); + ZVAL_LONG(&_4, 0); + ZEPHIR_CALL_METHOD(&_12, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("connectTimeout"), &_12, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "retryInterval"); + ZVAL_LONG(&_4, 0); + ZEPHIR_CALL_METHOD(&_13, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("retryInterval"), &_13, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "readTimeout"); + ZVAL_LONG(&_4, 0); + ZEPHIR_CALL_METHOD(&_14, this_ptr, "getarrval", NULL, 0, &options, &_1, &_4); + zephir_check_call_status(); + zephir_array_update_string(&options, SL("readTimeout"), &_14, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_PARENT(NULL, phalcon_storage_adapter_redis_ce, getThis(), "__construct", &_15, 0, factory, &options); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Radio) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, clear) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Radio, phalcon, forms_element_radio, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_radio_ce, SL("method"), "inputRadio", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Select) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Select, phalcon, forms_element_select, phalcon_forms_element_abstractelement_ce, phalcon_forms_element_select_method_entry, 0); + ZEPHIR_MM_GROW(); - zend_declare_property_null(phalcon_forms_element_select_ce, SL("optionsValues"), ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_0, "flushdb", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_Select, __construct) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, decrement) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval attributes; - zval *name_param = NULL, *options = NULL, options_sub, *attributes_param = NULL, __$null; - zval name; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&options_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(options) - Z_PARAM_ARRAY(attributes) + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &name_param, &options, &attributes_param); - zephir_get_strval(&name, name_param); - if (!options) { - options = &options_sub; - options = &__$null; + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("optionsValues"), options); - ZEPHIR_CALL_PARENT(NULL, phalcon_forms_element_select_ce, getThis(), "__construct", &_0, 0, &name, &attributes); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(&_0, "decrby", NULL, 0, &key, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_Select, addOption) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, delete) { - zend_string *_3$$3; - zend_ulong _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *option, option_sub, key, value, *_0$$3, _1$$3; + zval *key_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option_sub); ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(option) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &option); - - - if (Z_TYPE_P(option) == IS_ARRAY) { - zephir_is_iterable(option, 0, "phalcon/Forms/Element/Select.zep", 51); - if (Z_TYPE_P(option) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(option), _2$$3, _3$$3, _0$$3) - { - ZEPHIR_INIT_NVAR(&key); - if (_3$$3 != NULL) { - ZVAL_STR_COPY(&key, _3$$3); - } else { - ZVAL_LONG(&key, _2$$3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0$$3); - zephir_update_property_array(this_ptr, SL("optionsValues"), &key, &value); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, option, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1$$3, option, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&key, option, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, option, "current", NULL, 0); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("optionsValues"), &key, &value); - ZEPHIR_CALL_METHOD(NULL, option, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); } else { - zephir_update_property_array_append(this_ptr, SL("optionsValues"), option); + ZEPHIR_INIT_VAR(&key); } - RETURN_THIS(); + + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, &_0, "del", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM_BOOL(zephir_get_boolval(&_1)); } -static PHP_METHOD(Phalcon_Forms_Element_Select, getOptions) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, getAdapter) { + zval connection, _0, _1$$3, _2$$3, _3$$3, _4$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + + ZEPHIR_MM_GROW(); - RETURN_MEMBER(getThis(), "optionsValues"); + zephir_read_property(&_0, this_ptr, ZEND_STRL("adapter"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&connection); + object_init_ex(&connection, zephir_get_internal_ce(SL("redis"))); + ZEPHIR_CALL_METHOD(NULL, &connection, "__construct", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "checkconnect", NULL, 109, &connection); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2$$3, &_1$$3, "checkauth", NULL, 110, &connection); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &_2$$3, "checkindex", NULL, 111, &connection); + zephir_check_call_status(); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_4$$3, 2); + ZEPHIR_CALL_METHOD(NULL, &connection, "setoption", NULL, 0, &_4$$3, &_3$$3); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setserializer", NULL, 112, &connection); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("adapter"), &connection); + } + RETURN_MM_MEMBER(getThis(), "adapter"); } -static PHP_METHOD(Phalcon_Forms_Element_Select, render) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, getKeys) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *attributes_param = NULL, _1, _2; - zval attributes; + zval *prefix_param = NULL, _0, _1, _2; + zval prefix; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + zephir_fetch_params(1, 0, 1, &prefix_param); + if (!prefix_param) { + ZEPHIR_INIT_VAR(&prefix); + ZVAL_STRING(&prefix, ""); } else { - zephir_get_arrval(&attributes, attributes_param); + if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { + zephir_get_strval(&prefix, prefix_param); + } else { + ZEPHIR_INIT_VAR(&prefix); + } } - ZEPHIR_CALL_METHOD(&_1, this_ptr, "prepareattributes", NULL, 0, &attributes); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_2, this_ptr, ZEND_STRL("optionsValues"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_CE_STATIC(phalcon_tag_select_ce, "selectfield", &_0, 0, &_1, &_2); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "*"); + ZEPHIR_CALL_METHOD(&_1, &_0, "keys", NULL, 0, &_2); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getfilteredkeys", NULL, 0, &_1, &prefix); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Forms_Element_Select, setOptions) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, has) { - zval *options, options_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(options) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &options); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("optionsValues"), options); - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, &_0, "exists", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM_BOOL(zephir_get_boolval(&_1)); } -static PHP_METHOD(Phalcon_Forms_Element_Select, prepareAttributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, increment) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, value, name, mergedAttributes, defaultAttributes, _0; - zval attributes; + zend_long value, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&mergedAttributes); - ZVAL_UNDEF(&defaultAttributes); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_LONG(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&name, &_0); - zephir_array_update_long(&attributes, 0, &name, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - ZEPHIR_OBS_VAR(&defaultAttributes); - zephir_read_property(&defaultAttributes, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&mergedAttributes); - zephir_fast_array_merge(&mergedAttributes, &defaultAttributes, &attributes); - ZEPHIR_CALL_METHOD(&value, this_ptr, "getvalue", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(&value) != IS_NULL) { - zephir_array_update_string(&mergedAttributes, SL("value"), &value, PH_COPY | PH_SEPARATE); - } - RETURN_CCTOR(&mergedAttributes); + ZVAL_LONG(&_1, value); + ZEPHIR_RETURN_CALL_METHOD(&_0, "incrby", NULL, 0, &key, &_1); + zephir_check_call_status(); + RETURN_MM(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Submit) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, set) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Submit, phalcon, forms_element_submit, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_submit_ce, SL("method"), "inputSubmit", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - + zend_bool _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, *ttl = NULL, ttl_sub, __$null, result, _1, _2, _3, _4; + zval key; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&ttl_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(ttl) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 1, &key_param, &value, &ttl); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!ttl) { + ttl = &ttl_sub; + ttl = &__$null; + } - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Text) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Text, phalcon, forms_element_text, phalcon_forms_element_abstractelement_ce, NULL, 0); - - return SUCCESS; + _0 = Z_TYPE_P(ttl) == IS_LONG; + if (_0) { + _0 = ZEPHIR_LT_LONG(ttl, 1); + } + if (_0) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "delete", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getttl", NULL, 0, ttl); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, &_1, "set", NULL, 0, &key, &_2, &_3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_4, &result); + } else { + ZVAL_BOOL(&_4, 0); + } + RETURN_CCTOR(&_4); } +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, setForever) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, result, _0, _1, _2; + zval key; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &key_param, &value); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - -ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_TextArea) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, TextArea, phalcon, forms_element_textarea, phalcon_forms_element_abstractelement_ce, NULL, 0); - - zend_declare_property_string(phalcon_forms_element_textarea_ce, SL("method"), "inputTextarea", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getadapter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, &_0, "set", NULL, 0, &key, &_1); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + if (((Z_TYPE_P(&result) == IS_TRUE || Z_TYPE_P(&result) == IS_FALSE) == 1)) { + ZEPHIR_CPY_WRT(&_2, &result); + } else { + ZVAL_BOOL(&_2, 0); + } + RETURN_CCTOR(&_2); } +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, checkAuth) +{ + zend_bool error = 0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, auth, _0, _3, _4, _2$$3; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&auth); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_2$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("redis"))) + ZEND_PARSE_PARAMETERS_END(); +#endif -#ifdef HAVE_CONFIG_H -#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&auth); + zephir_array_fetch_string(&auth, &_0, SL("auth"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 243); + /* try_start_1: */ + _1$$3 = 1 != ZEPHIR_IS_EMPTY(&auth); + if (_1$$3) { + ZEPHIR_CALL_METHOD(&_2$$3, connection, "auth", NULL, 0, &auth); + zephir_check_call_status_or_jump(try_end_1); + _1$$3 = !ZEPHIR_IS_TRUE_IDENTICAL(&_2$$3); + } + error = _1$$3; -ZEPHIR_INIT_CLASS(Phalcon_Html_Attributes) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html, Attributes, phalcon, html_attributes, phalcon_support_collection_ce, phalcon_html_attributes_method_entry, 0); + try_end_1: - zend_class_implements(phalcon_html_attributes_ce, 1, phalcon_html_attributes_renderinterface_ce); - return SUCCESS; + if (EG(exception)) { + ZEPHIR_INIT_VAR(&_3); + ZVAL_OBJ(&_3, EG(exception)); + Z_ADDREF_P(&_3); + ZEPHIR_INIT_VAR(&_4); + if (zephir_is_instance_of(&_3, SL("Exception"))) { + zend_clear_exception(); + ZEPHIR_CPY_WRT(&_4, &_3); + error = 1; + } + } + if (error) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_storage_exception_ce, "Failed to authenticate with the Redis server", "phalcon/Storage/Adapter/Redis.zep", 254); + return; + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Attributes, render) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, checkConnect) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, host, method, options, parameter, persistentId, port, retryInterval, readTimeout, result, timeout, _0, _1, _2$$4, _3$$4, _4$$5, _5$$5, _6$$5; zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&host); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(¶meter); + ZVAL_UNDEF(&persistentId); + ZVAL_UNDEF(&port); + ZVAL_UNDEF(&retryInterval); + ZVAL_UNDEF(&readTimeout); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&timeout); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$5); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("redis"))) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "toarray", NULL, 0); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderattributes", NULL, 0, &_0); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&options, &_0); + ZEPHIR_OBS_VAR(&host); + zephir_array_fetch_string(&host, &options, SL("host"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 272); + ZEPHIR_OBS_VAR(&port); + zephir_array_fetch_string(&port, &options, SL("port"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 273); + ZEPHIR_OBS_VAR(&timeout); + zephir_array_fetch_string(&timeout, &options, SL("timeout"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 274); + ZEPHIR_OBS_VAR(&retryInterval); + zephir_array_fetch_string(&retryInterval, &options, SL("retryInterval"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 275); + ZEPHIR_OBS_VAR(&readTimeout); + zephir_array_fetch_string(&readTimeout, &options, SL("readTimeout"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 276); + zephir_array_fetch_string(&_1, &options, SL("persistent"), PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Redis.zep", 278); + ZEPHIR_INIT_VAR(&method); + ZEPHIR_INIT_VAR(¶meter); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_1)) { + ZVAL_STRING(&method, "connect"); + ZVAL_NULL(¶meter); + } else { + ZVAL_STRING(&method, "pconnect"); + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&persistentId); + zephir_array_fetch_string(&persistentId, &_2$$4, SL("persistentId"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 283); + if (!(ZEPHIR_IS_EMPTY(&persistentId))) { + ZEPHIR_CPY_WRT(¶meter, &persistentId); + } else { + zephir_array_fetch_string(&_3$$4, &options, SL("index"), PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Redis.zep", 284); + ZEPHIR_CONCAT_SV(¶meter, "persistentId", &_3$$4); + } + } + ZEPHIR_CALL_METHOD_ZVAL(&result, connection, &method, NULL, 0, &host, &port, &timeout, ¶meter, &retryInterval, &readTimeout); zephir_check_call_status(); - RETURN_MM(); + if (!(zephir_is_true(&result))) { + ZEPHIR_INIT_VAR(&_4$$5); + object_init_ex(&_4$$5, phalcon_storage_exception_ce); + ZEPHIR_INIT_VAR(&_5$$5); + ZVAL_STRING(&_5$$5, "Could not connect to the Redisd server [%s:%s]"); + ZEPHIR_CALL_FUNCTION(&_6$$5, "sprintf", NULL, 113, &_5$$5, &host, &port); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &_4$$5, "__construct", NULL, 29, &_6$$5); + zephir_check_call_status(); + zephir_throw_exception_debug(&_4$$5, "phalcon/Storage/Adapter/Redis.zep", 303); + ZEPHIR_MM_RESTORE(); + return; + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Attributes, __toString) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, checkIndex) { + zend_bool _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, index, _0, _2; zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("redis"))) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "render", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&index); + zephir_array_fetch_string(&index, &_0, SL("index"), PH_NOISY, "phalcon/Storage/Adapter/Redis.zep", 319); + _1 = ZEPHIR_GT_LONG(&index, 0); + if (_1) { + ZEPHIR_CALL_METHOD(&_2, connection, "select", NULL, 0, &index); + zephir_check_call_status(); + _1 = !ZEPHIR_IS_TRUE_IDENTICAL(&_2); + } + if (_1) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_storage_exception_ce, "Redis server selected database failed", "phalcon/Storage/Adapter/Redis.zep", 324); + return; + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Attributes, renderAttributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Redis, setSerializer) { - zend_bool _4$$3, _10$$5; - zend_string *_3; - zend_ulong _2; + zval map; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, __$null, __$true, intersect, key, result, results, value, *_0, _1, _5$$4, _6$$4, _7$$4, _9$$4, _11$$6, _12$$6, _13$$6, _14$$6; - zval attributes, order; + zval *connection, connection_sub, serializer, _0, _1, _4, _7, _10, _2$$3, _3$$3, _5$$4, _6$$4, _8$$5, _9$$5, _11$$6, _12$$6, _13$$6; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&order); - ZVAL_NULL(&__$null); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&intersect); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&results); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&serializer); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); ZVAL_UNDEF(&_5$$4); ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); ZVAL_UNDEF(&_11$$6); ZVAL_UNDEF(&_12$$6); ZVAL_UNDEF(&_13$$6); - ZVAL_UNDEF(&_14$$6); + ZVAL_UNDEF(&map); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) + Z_PARAM_OBJECT_OF_CLASS(connection, zephir_get_internal_ce(SL("redis"))) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_INIT_VAR(&order); - zephir_create_array(&order, 10, 0); - zephir_array_update_string(&order, SL("rel"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("type"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("for"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("src"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("href"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("action"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("id"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("name"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("value"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("class"), &__$null, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_FUNCTION(&intersect, "array_intersect_key", NULL, 2, &order, &attributes); + ZEPHIR_INIT_VAR(&map); + zephir_create_array(&map, 2, 0); + add_assoc_long_ex(&map, SL("redis_none"), 0); + add_assoc_long_ex(&map, SL("redis_php"), 1); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "\\Redis::SERIALIZER_IGBINARY"); + ZEPHIR_CALL_FUNCTION(&_1, "defined", NULL, 114, &_0); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&results); - zephir_fast_array_merge(&results, &intersect, &attributes); - zephir_array_unset_string(&results, SL("escape"), PH_SEPARATE); - ZEPHIR_INIT_VAR(&result); - ZVAL_STRING(&result, ""); - zephir_is_iterable(&results, 0, "phalcon/Html/Attributes.zep", 76); - if (Z_TYPE_P(&results) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&results), _2, _3, _0) - { - ZEPHIR_INIT_NVAR(&key); - if (_3 != NULL) { - ZVAL_STR_COPY(&key, _3); - } else { - ZVAL_LONG(&key, _2); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0); - _4$$3 = Z_TYPE_P(&key) == IS_STRING; - if (_4$$3) { - _4$$3 = Z_TYPE_P(&value) != IS_NULL; - } - if (_4$$3) { - ZVAL_LONG(&_5$$4, 3); - ZEPHIR_INIT_NVAR(&_6$$4); - ZVAL_STRING(&_6$$4, "utf-8"); - ZEPHIR_CALL_FUNCTION(&_7$$4, "htmlspecialchars", &_8, 283, &value, &_5$$4, &_6$$4, &__$true); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_9$$4); - ZEPHIR_CONCAT_VSVS(&_9$$4, &key, "=\"", &_7$$4, "\" "); - zephir_concat_self(&result, &_9$$4); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &results, "rewind", NULL, 0); + if (zephir_is_true(&_1)) { + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "\\Redis::SERIALIZER_IGBINARY"); + ZEPHIR_CALL_FUNCTION(&_3$$3, "constant", NULL, 115, &_2$$3); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &results, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &results, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &results, "current", NULL, 0); - zephir_check_call_status(); - _10$$5 = Z_TYPE_P(&key) == IS_STRING; - if (_10$$5) { - _10$$5 = Z_TYPE_P(&value) != IS_NULL; - } - if (_10$$5) { - ZVAL_LONG(&_11$$6, 3); - ZEPHIR_INIT_NVAR(&_12$$6); - ZVAL_STRING(&_12$$6, "utf-8"); - ZEPHIR_CALL_FUNCTION(&_13$$6, "htmlspecialchars", &_8, 283, &value, &_11$$6, &_12$$6, &__$true); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_14$$6); - ZEPHIR_CONCAT_VSVS(&_14$$6, &key, "=\"", &_13$$6, "\" "); - zephir_concat_self(&result, &_14$$6); - } - ZEPHIR_CALL_METHOD(NULL, &results, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_array_update_string(&map, SL("redis_igbinary"), &_3$$3, PH_COPY | PH_SEPARATE); } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - RETURN_CCTOR(&result); + ZEPHIR_INIT_NVAR(&_0); + ZVAL_STRING(&_0, "\\Redis::SERIALIZER_MSGPACK"); + ZEPHIR_CALL_FUNCTION(&_4, "defined", NULL, 114, &_0); + zephir_check_call_status(); + if (zephir_is_true(&_4)) { + ZEPHIR_INIT_VAR(&_5$$4); + ZVAL_STRING(&_5$$4, "\\Redis::SERIALIZER_MSGPACK"); + ZEPHIR_CALL_FUNCTION(&_6$$4, "constant", NULL, 115, &_5$$4); + zephir_check_call_status(); + zephir_array_update_string(&map, SL("redis_msgpack"), &_6$$4, PH_COPY | PH_SEPARATE); + } + ZEPHIR_INIT_NVAR(&_0); + ZVAL_STRING(&_0, "\\Redis::SERIALIZER_JSON"); + ZEPHIR_CALL_FUNCTION(&_7, "defined", NULL, 114, &_0); + zephir_check_call_status(); + if (zephir_is_true(&_7)) { + ZEPHIR_INIT_VAR(&_8$$5); + ZVAL_STRING(&_8$$5, "\\Redis::SERIALIZER_JSON"); + ZEPHIR_CALL_FUNCTION(&_9$$5, "constant", NULL, 115, &_8$$5); + zephir_check_call_status(); + zephir_array_update_string(&map, SL("redis_json"), &_9$$5, PH_COPY | PH_SEPARATE); + } + zephir_read_property(&_10, this_ptr, ZEND_STRL("defaultSerializer"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&serializer); + zephir_fast_strtolower(&serializer, &_10); + if (1 == zephir_array_isset(&map, &serializer)) { + ZEPHIR_INIT_VAR(&_11$$6); + ZEPHIR_INIT_NVAR(&_11$$6); + ZVAL_STRING(&_11$$6, ""); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultSerializer"), &_11$$6); + zephir_array_fetch(&_12$$6, &map, &serializer, PH_NOISY | PH_READONLY, "phalcon/Storage/Adapter/Redis.zep", 366); + ZVAL_LONG(&_13$$6, 1); + ZEPHIR_CALL_METHOD(NULL, connection, "setoption", NULL, 0, &_13$$6, &_12$$6); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initserializer", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } @@ -21316,991 +21613,1283 @@ static PHP_METHOD(Phalcon_Html_Attributes, renderAttributes) -ZEPHIR_INIT_CLASS(Phalcon_Html_Breadcrumbs) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Adapter_Stream) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Html, Breadcrumbs, phalcon, html_breadcrumbs, phalcon_html_breadcrumbs_method_entry, 0); - - zend_declare_property_null(phalcon_html_breadcrumbs_ce, SL("elements"), ZEND_ACC_PRIVATE); - zend_declare_property_string(phalcon_html_breadcrumbs_ce, SL("separator"), " / ", ZEND_ACC_PRIVATE); - zend_declare_property_string(phalcon_html_breadcrumbs_ce, SL("template"), "
%label%
", ZEND_ACC_PRIVATE); - phalcon_html_breadcrumbs_ce->create_object = zephir_init_properties_Phalcon_Html_Breadcrumbs; + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Adapter, Stream, phalcon, storage_adapter_stream, phalcon_storage_adapter_abstractadapter_ce, phalcon_storage_adapter_stream_method_entry, 0); + zend_declare_property_string(phalcon_storage_adapter_stream_ce, SL("prefix"), "ph-strm", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_storage_adapter_stream_ce, SL("storageDir"), "", ZEND_ACC_PROTECTED); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Breadcrumbs, getSeparator) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "separator"); -} - -static PHP_METHOD(Phalcon_Html_Breadcrumbs, setSeparator) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *separator_param = NULL; - zval separator; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&separator); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(separator) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &separator_param); - zephir_get_strval(&separator, separator_param); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("separator"), &separator); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Breadcrumbs, add) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *label_param = NULL, *link_param = NULL; - zval label, link; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval options; + zval *factory, factory_sub, *options_param = NULL, storageDir, _0, _1, _2; zval *this_ptr = getThis(); - ZVAL_UNDEF(&label); - ZVAL_UNDEF(&link); + ZVAL_UNDEF(&factory_sub); + ZVAL_UNDEF(&storageDir); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(label) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_storage_serializerfactory_ce) Z_PARAM_OPTIONAL - Z_PARAM_STR(link) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &label_param, &link_param); - zephir_get_strval(&label, label_param); - if (!link_param) { - ZEPHIR_INIT_VAR(&link); - ZVAL_STRING(&link, ""); + zephir_fetch_params(1, 1, 1, &factory, &options_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - zephir_get_strval(&link, link_param); + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); } - zephir_update_property_array(this_ptr, SL("elements"), &link, &label); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Breadcrumbs, clear) -{ - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - - - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("elements"), &_0); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Html_Breadcrumbs, remove) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *link_param = NULL, elements, _0; - zval link; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&link); - ZVAL_UNDEF(&elements); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(link) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link_param); - zephir_get_strval(&link, link_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&elements, &_0); - zephir_array_unset(&elements, &link, PH_SEPARATE); - zephir_update_property_zval(this_ptr, ZEND_STRL("elements"), &elements); + ZVAL_STRING(&_0, "storageDir"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, ""); + ZEPHIR_CALL_METHOD(&storageDir, this_ptr, "getarrval", NULL, 0, &options, &_0, &_1); + zephir_check_call_status(); + if (ZEPHIR_IS_EMPTY(&storageDir)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_storage_exception_ce, "The 'storageDir' must be specified in the options", "phalcon/Storage/Adapter/Stream.zep", 60); + return; + } + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getdirseparator", NULL, 116, &storageDir); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("storageDir"), &_2); + ZEPHIR_CALL_PARENT(NULL, phalcon_storage_adapter_stream_ce, getThis(), "__construct", &_3, 0, factory, &options); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initserializer", NULL, 0); + zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Breadcrumbs, render) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, clear) { - zval _6$$3, _8$$3, _10$$4, _12$$4, _15$$6, _17$$6; - zend_string *_4; - zend_ulong _3; - zval element, elements, lastLabel, lastUrl, output, template, url, urls, _0, *_1, _2, _18, _19, _5$$3, _7$$3, _9$$4, _11$$4, _13$$5, _14$$6, _16$$6; + zend_bool result = 0, _4$$3, _9$$5; + zval directory, iterator, file, _0, *_1, _2, _3$$3, _5$$3, _6$$3, _8$$5, _10$$5, _11$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_7 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&elements); - ZVAL_UNDEF(&lastLabel); - ZVAL_UNDEF(&lastUrl); - ZVAL_UNDEF(&output); - ZVAL_UNDEF(&template); - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&urls); + ZVAL_UNDEF(&directory); + ZVAL_UNDEF(&iterator); + ZVAL_UNDEF(&file); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_18); - ZVAL_UNDEF(&_19); + ZVAL_UNDEF(&_3$$3); ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_9$$4); - ZVAL_UNDEF(&_11$$4); - ZVAL_UNDEF(&_13$$5); - ZVAL_UNDEF(&_14$$6); - ZVAL_UNDEF(&_16$$6); ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_8$$3); - ZVAL_UNDEF(&_10$$4); - ZVAL_UNDEF(&_12$$4); - ZVAL_UNDEF(&_15$$6); - ZVAL_UNDEF(&_17$$6); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_11$$5); ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&output); - array_init(&output); - zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&elements, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("template"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&template, &_0); - ZEPHIR_INIT_VAR(&urls); - zephir_array_keys(&urls, &elements); - ZEPHIR_MAKE_REF(&urls); - ZEPHIR_CALL_FUNCTION(&lastUrl, "end", NULL, 320, &urls); - ZEPHIR_UNREF(&urls); + result = 1; + zephir_read_property(&_0, this_ptr, ZEND_STRL("storageDir"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&directory, this_ptr, "getdirseparator", NULL, 116, &_0); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&lastLabel); - zephir_array_fetch(&lastLabel, &elements, &lastUrl, PH_NOISY, "phalcon/Html/Breadcrumbs.zep", 112); - zephir_array_unset(&elements, &lastUrl, PH_SEPARATE); - zephir_is_iterable(&elements, 0, "phalcon/Html/Breadcrumbs.zep", 133); - if (Z_TYPE_P(&elements) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&elements), _3, _4, _1) + ZEPHIR_CALL_METHOD(&iterator, this_ptr, "getiterator", NULL, 117, &directory); + zephir_check_call_status(); + zephir_is_iterable(&iterator, 0, "phalcon/Storage/Adapter/Stream.zep", 91); + if (Z_TYPE_P(&iterator) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&iterator), _1) { - ZEPHIR_INIT_NVAR(&url); - if (_4 != NULL) { - ZVAL_STR_COPY(&url, _4); - } else { - ZVAL_LONG(&url, _3); + ZEPHIR_INIT_NVAR(&file); + ZVAL_COPY(&file, _1); + ZEPHIR_CALL_METHOD(&_3$$3, &file, "isfile", NULL, 0); + zephir_check_call_status(); + _4$$3 = ZEPHIR_IS_TRUE_IDENTICAL(&_3$$3); + if (_4$$3) { + ZEPHIR_CALL_METHOD(&_6$$3, &file, "getpathname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$3, this_ptr, "phpunlink", &_7, 0, &_6$$3); + zephir_check_call_status(); + _4$$3 = !ZEPHIR_IS_TRUE_IDENTICAL(&_5$$3); + } + if (UNEXPECTED(_4$$3)) { + result = 0; } - ZEPHIR_INIT_NVAR(&element); - ZVAL_COPY(&element, _1); - ZEPHIR_INIT_NVAR(&_5$$3); - ZEPHIR_INIT_NVAR(&_6$$3); - zephir_create_array(&_6$$3, 2, 0); - ZEPHIR_INIT_NVAR(&_7$$3); - ZVAL_STRING(&_7$$3, "%label%"); - zephir_array_fast_append(&_6$$3, &_7$$3); - ZEPHIR_INIT_NVAR(&_7$$3); - ZVAL_STRING(&_7$$3, "%link%"); - zephir_array_fast_append(&_6$$3, &_7$$3); - ZEPHIR_INIT_NVAR(&_8$$3); - zephir_create_array(&_8$$3, 2, 0); - zephir_array_fast_append(&_8$$3, &element); - zephir_array_fast_append(&_8$$3, &url); - zephir_fast_str_replace(&_5$$3, &_6$$3, &_8$$3, &template); - zephir_array_append(&output, &_5$$3, PH_SEPARATE, "phalcon/Html/Breadcrumbs.zep", 127); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &elements, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &iterator, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_2, &elements, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, &iterator, "valid", NULL, 0); zephir_check_call_status(); if (!zend_is_true(&_2)) { break; } - ZEPHIR_CALL_METHOD(&url, &elements, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&element, &elements, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&file, &iterator, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_9$$4); - ZEPHIR_INIT_NVAR(&_10$$4); - zephir_create_array(&_10$$4, 2, 0); - ZEPHIR_INIT_NVAR(&_11$$4); - ZVAL_STRING(&_11$$4, "%label%"); - zephir_array_fast_append(&_10$$4, &_11$$4); - ZEPHIR_INIT_NVAR(&_11$$4); - ZVAL_STRING(&_11$$4, "%link%"); - zephir_array_fast_append(&_10$$4, &_11$$4); - ZEPHIR_INIT_NVAR(&_12$$4); - zephir_create_array(&_12$$4, 2, 0); - zephir_array_fast_append(&_12$$4, &element); - zephir_array_fast_append(&_12$$4, &url); - zephir_fast_str_replace(&_9$$4, &_10$$4, &_12$$4, &template); - zephir_array_append(&output, &_9$$4, PH_SEPARATE, "phalcon/Html/Breadcrumbs.zep", 127); - ZEPHIR_CALL_METHOD(NULL, &elements, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&_8$$5, &file, "isfile", NULL, 0); + zephir_check_call_status(); + _9$$5 = ZEPHIR_IS_TRUE_IDENTICAL(&_8$$5); + if (_9$$5) { + ZEPHIR_CALL_METHOD(&_11$$5, &file, "getpathname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_10$$5, this_ptr, "phpunlink", &_7, 0, &_11$$5); + zephir_check_call_status(); + _9$$5 = !ZEPHIR_IS_TRUE_IDENTICAL(&_10$$5); + } + if (UNEXPECTED(_9$$5)) { + result = 0; + } + ZEPHIR_CALL_METHOD(NULL, &iterator, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&element); - ZEPHIR_INIT_NVAR(&url); - if (0 != zephir_fast_count_int(&elements)) { - ZEPHIR_INIT_VAR(&_13$$5); - ZEPHIR_CONCAT_SVS(&_13$$5, "
", &lastLabel, "
"); - zephir_array_append(&output, &_13$$5, PH_SEPARATE, "phalcon/Html/Breadcrumbs.zep", 134); - } else { - ZEPHIR_INIT_VAR(&_14$$6); - ZEPHIR_INIT_VAR(&_15$$6); - zephir_create_array(&_15$$6, 2, 0); - ZEPHIR_INIT_VAR(&_16$$6); - ZVAL_STRING(&_16$$6, "%label%"); - zephir_array_fast_append(&_15$$6, &_16$$6); - ZEPHIR_INIT_NVAR(&_16$$6); - ZVAL_STRING(&_16$$6, "%link%"); - zephir_array_fast_append(&_15$$6, &_16$$6); - ZEPHIR_INIT_VAR(&_17$$6); - zephir_create_array(&_17$$6, 2, 0); - zephir_array_fast_append(&_17$$6, &lastLabel); - zephir_array_fast_append(&_17$$6, &lastUrl); - zephir_fast_str_replace(&_14$$6, &_15$$6, &_17$$6, &template); - zephir_array_append(&output, &_14$$6, PH_SEPARATE, "phalcon/Html/Breadcrumbs.zep", 146); - } - ZEPHIR_INIT_VAR(&_18); - zephir_read_property(&_0, this_ptr, ZEND_STRL("separator"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_19); - ZEPHIR_CONCAT_SVS(&_19, "
", &_0, "
"); - zephir_fast_join(&_18, &_19, &output); - ZEPHIR_CONCAT_SVS(return_value, "
", &_18, "
"); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Breadcrumbs, toArray) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "elements"); + ZEPHIR_INIT_NVAR(&file); + RETURN_MM_BOOL(result); } -zend_object *zephir_init_properties_Phalcon_Html_Breadcrumbs(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, decrement) { - zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("elements"), &_1$$3); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Escaper) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Html, Escaper, phalcon, html_escaper, phalcon_html_escaper_method_entry, 0); - - zend_declare_property_bool(phalcon_html_escaper_ce, SL("doubleEncode"), 1, ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_escaper_ce, SL("encoding"), "utf-8", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_html_escaper_ce, SL("flags"), 11, ZEND_ACC_PROTECTED); - zend_class_implements(phalcon_html_escaper_ce, 1, phalcon_html_escaper_escaperinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_Escaper, getEncoding) -{ + zend_long value, ZEPHIR_LAST_CALL_STATUS, _1; + zval *key_param = NULL, *value_param = NULL, data, result, _0; + zval key; zval *this_ptr = getThis(); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "encoding"); -} - -static PHP_METHOD(Phalcon_Html_Escaper, getFlags) -{ - zval *this_ptr = getThis(); - + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } - RETURN_MEMBER(getThis(), "flags"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &key); + zephir_check_call_status(); + if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_0))) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&data, this_ptr, "get", NULL, 0, &key); + zephir_check_call_status(); + _1 = (zephir_get_intval(&data) - value); + ZEPHIR_INIT_NVAR(&data); + ZVAL_LONG(&data, _1); + ZEPHIR_CALL_METHOD(&result, this_ptr, "set", NULL, 0, &key, &data); + zephir_check_call_status(); + if (EXPECTED(!ZEPHIR_IS_FALSE_IDENTICAL(&result))) { + ZEPHIR_CPY_WRT(&result, &data); + } + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Html_Escaper, attributes) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, delete) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0, _1, _2; - zval input; + zval *key_param = NULL, filepath, _0; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&filepath); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("encoding"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("doubleEncode"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_2, 3); - ZEPHIR_RETURN_CALL_FUNCTION("htmlspecialchars", NULL, 283, &input, &_2, &_0, &_1); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &key); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&filepath, this_ptr, "getfilepath", NULL, 118, &key); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_FUNCTION("unlink", NULL, 119, &filepath); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, css) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, get) { + zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0; - zval input; + zval *key_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, content, filepath, payload, _1, _2; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&content); + ZVAL_UNDEF(&filepath); + ZVAL_UNDEF(&payload); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 1, &key_param, &defaultValue); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; + } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "normalizeencoding", NULL, 321, &input); + ZEPHIR_CALL_METHOD(&filepath, this_ptr, "getfilepath", NULL, 118, &key); + zephir_check_call_status(); + if (1 != (zephir_file_exists(&filepath) == SUCCESS)) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&payload, this_ptr, "getpayload", NULL, 120, &filepath); + zephir_check_call_status(); + _0 = ZEPHIR_IS_EMPTY(&payload); + if (!(_0)) { + ZEPHIR_CALL_METHOD(&_1, this_ptr, "isexpired", NULL, 121, &payload); + zephir_check_call_status(); + _0 = zephir_is_true(&_1); + } + if (_0) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "content"); + ZEPHIR_CALL_METHOD(&content, this_ptr, "getarrval", NULL, 0, &payload, &_2); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "doescapecss", NULL, 322, &_0); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getunserializeddata", NULL, 0, &content, defaultValue); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, detectEncoding) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getKeys) { - zval _0; + zval files; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, __$true, charset, _1, *_2, _3, _4$$5, _6$$7; - zval input; + zval *prefix_param = NULL, directory, file, iterator, _0, *_1, _2, _3$$4, _4$$5, _5$$5, _6$$5, _7$$6, _8$$7, _9$$7, _10$$7; + zval prefix; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&charset); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&directory); + ZVAL_UNDEF(&file); + ZVAL_UNDEF(&iterator); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_10$$7); + ZVAL_UNDEF(&files); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); - - - ZEPHIR_INIT_VAR(&charset); - zephir_is_basic_charset(&charset, &input); - if (Z_TYPE_P(&charset) == IS_STRING) { - RETURN_CCTOR(&charset); - } - if (!((zephir_function_exists_ex(ZEND_STRL("mb_detect_encoding")) == SUCCESS))) { - RETURN_MM_NULL(); - } - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 4, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "UTF-32"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "UTF-8"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "ISO-8859-1"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "ASCII"); - zephir_array_fast_append(&_0, &_1); - zephir_is_iterable(&_0, 0, "phalcon/Html/Escaper.zep", 127); - if (Z_TYPE_P(&_0) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _2) + zephir_fetch_params(1, 0, 1, &prefix_param); + if (!prefix_param) { + ZEPHIR_INIT_VAR(&prefix); + ZVAL_STRING(&prefix, ""); + } else { + if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { + zephir_get_strval(&prefix, prefix_param); + } else { + ZEPHIR_INIT_VAR(&prefix); + } + } + + + ZEPHIR_INIT_VAR(&files); + array_init(&files); + ZEPHIR_CALL_METHOD(&directory, this_ptr, "getdir", NULL, 122); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "phpfileexists", NULL, 0, &directory); + zephir_check_call_status(); + if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_0))) { + array_init(return_value); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&iterator, this_ptr, "getiterator", NULL, 117, &directory); + zephir_check_call_status(); + zephir_is_iterable(&iterator, 0, "phalcon/Storage/Adapter/Stream.zep", 197); + if (Z_TYPE_P(&iterator) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&iterator), _1) { - ZEPHIR_INIT_NVAR(&charset); - ZVAL_COPY(&charset, _2); - ZEPHIR_CALL_FUNCTION(&_4$$5, "mb_detect_encoding", &_5, 323, &input, &charset, &__$true); + ZEPHIR_INIT_NVAR(&file); + ZVAL_COPY(&file, _1); + ZEPHIR_CALL_METHOD(&_3$$4, &file, "isfile", NULL, 0); zephir_check_call_status(); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&_4$$5)) { - RETURN_CCTOR(&charset); + if (ZEPHIR_IS_TRUE_IDENTICAL(&_3$$4)) { + zephir_read_property(&_4$$5, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_5$$5, &file, "getfilename", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6$$5); + ZEPHIR_CONCAT_VV(&_6$$5, &_4$$5, &_5$$5); + zephir_array_append(&files, &_6$$5, PH_SEPARATE, "phalcon/Storage/Adapter/Stream.zep", 193); } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &iterator, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_3, &_0, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, &iterator, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_3)) { + if (!zend_is_true(&_2)) { break; } - ZEPHIR_CALL_METHOD(&charset, &_0, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&file, &iterator, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_6$$7, "mb_detect_encoding", &_5, 323, &input, &charset, &__$true); + ZEPHIR_CALL_METHOD(&_7$$6, &file, "isfile", NULL, 0); zephir_check_call_status(); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&_6$$7)) { - RETURN_CCTOR(&charset); + if (ZEPHIR_IS_TRUE_IDENTICAL(&_7$$6)) { + zephir_read_property(&_8$$7, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_9$$7, &file, "getfilename", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$7); + ZEPHIR_CONCAT_VV(&_10$$7, &_8$$7, &_9$$7); + zephir_array_append(&files, &_10$$7, PH_SEPARATE, "phalcon/Storage/Adapter/Stream.zep", 193); } - ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &iterator, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&charset); - ZEPHIR_RETURN_CALL_FUNCTION("mb_detect_encoding", &_5, 323, &input); + ZEPHIR_INIT_NVAR(&file); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getfilteredkeys", NULL, 0, &files, &prefix); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, escapeCss) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, has) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input; + zval *key_param = NULL, payload, filepath, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&payload); + ZVAL_UNDEF(&filepath); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "css", NULL, 0, &input); + ZEPHIR_CALL_METHOD(&filepath, this_ptr, "getfilepath", NULL, 118, &key); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "phpfileexists", NULL, 0, &filepath); + zephir_check_call_status(); + if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_0))) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&payload, this_ptr, "getpayload", NULL, 120, &filepath); + zephir_check_call_status(); + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&payload))) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&_1, this_ptr, "isexpired", NULL, 121, &payload); + zephir_check_call_status(); + RETURN_MM_BOOL(!zephir_is_true(&_1)); } -static PHP_METHOD(Phalcon_Html_Escaper, escapeJs) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, increment) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long value, ZEPHIR_LAST_CALL_STATUS, _1; + zval *key_param = NULL, *value_param = NULL, data, result, _0; + zval key; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(key) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(value) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &key_param, &value_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!value_param) { + value = 1; + } else { + value = zephir_get_intval(value_param); + } + + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &key); + zephir_check_call_status(); + if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_0))) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&data, this_ptr, "get", NULL, 0, &key); + zephir_check_call_status(); + _1 = (zephir_get_intval(&data) + value); + ZEPHIR_INIT_NVAR(&data); + ZVAL_LONG(&data, _1); + ZEPHIR_CALL_METHOD(&result, this_ptr, "set", NULL, 0, &key, &data); + zephir_check_call_status(); + if (EXPECTED(!ZEPHIR_IS_FALSE_IDENTICAL(&result))) { + ZEPHIR_CPY_WRT(&result, &data); + } + RETURN_CCTOR(&result); +} + +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, set) { + zend_bool _0; + zval payload; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input; + zval *key_param = NULL, *value, value_sub, *ttl = NULL, ttl_sub, __$null, _1, _2; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&ttl_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&payload); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(ttl) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 2, 1, &key_param, &value, &ttl); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } + if (!ttl) { + ttl = &ttl_sub; + ttl = &__$null; + } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "js", NULL, 0, &input); + _0 = Z_TYPE_P(ttl) == IS_LONG; + if (_0) { + _0 = ZEPHIR_LT_LONG(ttl, 1); + } + if (_0) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "delete", NULL, 0, &key); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&payload); + zephir_create_array(&payload, 3, 0); + ZEPHIR_INIT_VAR(&_1); + zephir_time(&_1); + zephir_array_update_string(&payload, SL("created"), &_1, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getttl", NULL, 0, ttl); + zephir_check_call_status(); + zephir_array_update_string(&payload, SL("ttl"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + zephir_array_update_string(&payload, SL("content"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "storepayload", NULL, 123, &payload, &key); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, escapeHtml) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, setForever) { + zval payload; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input, _0; + zval *key_param = NULL, *value, value_sub, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&payload); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(input) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &input_param); - if (!input_param) { - ZEPHIR_INIT_VAR(&input); + zephir_fetch_params(1, 2, 0, &key_param, &value); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); } else { - zephir_get_strval(&input, input_param); + ZEPHIR_INIT_VAR(&key); } - zephir_cast_to_string(&_0, &input); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "html", NULL, 0, &_0); + ZEPHIR_INIT_VAR(&payload); + zephir_create_array(&payload, 3, 0); + ZEPHIR_INIT_VAR(&_0); + zephir_time(&_0); + zephir_array_update_string(&payload, SL("created"), &_0, PH_COPY | PH_SEPARATE); + add_assoc_stringl_ex(&payload, SL("ttl"), SL("forever")); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getserializeddata", NULL, 0, value); + zephir_check_call_status(); + zephir_array_update_string(&payload, SL("content"), &_1, PH_COPY | PH_SEPARATE); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "storepayload", NULL, 123, &payload, &key); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, escapeHtmlAttr) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getDir) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input, _0; + zval *key_param = NULL, dirFromFile, dirPrefix, _0, _1, _2, _3, _4, _5, _6; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&dirFromFile); + ZVAL_UNDEF(&dirPrefix); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(input) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &input_param); - if (!input_param) { - ZEPHIR_INIT_VAR(&input); + zephir_fetch_params(1, 0, 1, &key_param); + if (!key_param) { + ZEPHIR_INIT_VAR(&key); + ZVAL_STRING(&key, ""); } else { - zephir_get_strval(&input, input_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } } - zephir_cast_to_string(&_0, &input); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "attributes", NULL, 0, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("storageDir"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_2); + ZEPHIR_CONCAT_VV(&_2, &_0, &_1); + ZEPHIR_CALL_METHOD(&dirPrefix, this_ptr, "getdirseparator", NULL, 116, &_2); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_3); + zephir_read_property(&_4, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, ""); + zephir_fast_str_replace(&_3, &_4, &_5, &key); + ZEPHIR_CALL_METHOD(&dirFromFile, this_ptr, "getdirfromfile", NULL, 124, &_3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6); + ZEPHIR_CONCAT_VV(&_6, &dirPrefix, &dirFromFile); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getdirseparator", NULL, 116, &_6); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, escapeUrl) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getFilepath) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input; + zval *key_param = NULL, _0, _1, _2, _3; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &key_param); + if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { + zephir_get_strval(&key, key_param); + } else { + ZEPHIR_INIT_VAR(&key); + } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "url", NULL, 0, &input); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getdir", NULL, 122, &key); zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + zephir_read_property(&_2, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, ""); + zephir_fast_str_replace(&_1, &_2, &_3, &key); + ZEPHIR_CONCAT_VV(return_value, &_0, &_1); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, html) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getIterator) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0, _1, _2; - zval input; + zval *dir_param = NULL, _0, _1; + zval dir; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&dir); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(input) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(dir) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &input_param); - if (!input_param) { - ZEPHIR_INIT_VAR(&input); + zephir_fetch_params(1, 1, 0, &dir_param); + if (UNEXPECTED(Z_TYPE_P(dir_param) != IS_STRING && Z_TYPE_P(dir_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'dir' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(dir_param) == IS_STRING)) { + zephir_get_strval(&dir, dir_param); } else { - zephir_get_strval(&input, input_param); + ZEPHIR_INIT_VAR(&dir); } - if (!(!(ZEPHIR_IS_EMPTY(&input)))) { - RETURN_MM_STRING(""); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("flags"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("encoding"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_2, this_ptr, ZEND_STRL("doubleEncode"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_FUNCTION("htmlspecialchars", NULL, 283, &input, &_0, &_1, &_2); + object_init_ex(return_value, spl_ce_RecursiveIteratorIterator); + ZEPHIR_INIT_VAR(&_0); + object_init_ex(&_0, spl_ce_RecursiveDirectoryIterator); + ZVAL_LONG(&_1, 4096); + ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 125, &dir, &_1); + zephir_check_call_status(); + ZVAL_LONG(&_1, 2); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 126, &_0, &_1); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, js) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getPayload) { + zend_bool _10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0; - zval input; + zval *filepath_param = NULL, __$false, payload, pointer, version, _0, _1, _2, _3, _4, _9, _5$$6, _6$$6, _7$$7, _8$$7; + zval filepath; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&filepath); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&payload); + ZVAL_UNDEF(&pointer); + ZVAL_UNDEF(&version); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_8$$7); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(filepath) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &filepath_param); + zephir_get_strval(&filepath, filepath_param); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "normalizeencoding", NULL, 321, &input); + ZEPHIR_INIT_VAR(&payload); + ZVAL_BOOL(&payload, 0); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "r"); + ZEPHIR_CALL_METHOD(&pointer, this_ptr, "phpfopen", NULL, 0, &filepath, &_0); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "doescapejs", NULL, 324, &_0); + if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&pointer))) { + array_init(return_value); + RETURN_MM(); + } + ZVAL_LONG(&_1, 1); + ZEPHIR_CALL_FUNCTION(&_2, "flock", NULL, 127, &pointer, &_1); zephir_check_call_status(); - RETURN_MM(); + if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&_2))) { + ZEPHIR_CALL_METHOD(&payload, this_ptr, "phpfilegetcontents", NULL, 0, &filepath); + zephir_check_call_status(); + } + zephir_fclose(&pointer); + if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&payload))) { + array_init(return_value); + RETURN_MM(); + } + ZEPHIR_CALL_FUNCTION(&version, "phpversion", NULL, 128); + zephir_check_call_status(); + ZEPHIR_GLOBAL(warning).enable = zend_is_true(&__$false); + ZEPHIR_INIT_NVAR(&_0); + ZVAL_STRING(&_0, "8.0"); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, ">="); + ZEPHIR_CALL_FUNCTION(&_4, "version_compare", NULL, 129, &version, &_0, &_3); + zephir_check_call_status(); + if (zephir_is_true(&_4)) { + ZEPHIR_INIT_VAR(&_5$$6); + ZEPHIR_INIT_NVAR(&_5$$6); + zephir_create_closure_ex(&_5$$6, NULL, phalcon_1__closure_ce, SL("__invoke")); + ZVAL_LONG(&_6$$6, 8); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_5$$6, &_6$$6); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_VAR(&_7$$7); + ZEPHIR_INIT_NVAR(&_7$$7); + zephir_create_closure_ex(&_7$$7, NULL, phalcon_2__closure_ce, SL("__invoke")); + ZVAL_LONG(&_8$$7, 8); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_7$$7, &_8$$7); + zephir_check_call_status(); + } + ZEPHIR_CALL_FUNCTION(&_9, "unserialize", NULL, 16, &payload); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&payload, &_9); + ZEPHIR_CALL_FUNCTION(NULL, "restore_error_handler", NULL, 131); + zephir_check_call_status(); + _10 = ZEPHIR_GLOBAL(warning).enable; + if (!(_10)) { + _10 = Z_TYPE_P(&payload) != IS_ARRAY; + } + if (UNEXPECTED(_10)) { + array_init(return_value); + RETURN_MM(); + } + RETURN_CCTOR(&payload); } -static PHP_METHOD(Phalcon_Html_Escaper, normalizeEncoding) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, isExpired) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0, _1; - zval input; + zval *payload_param = NULL, created, ttl, _0, _1, _2, _3, _4; + zval payload; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&payload); + ZVAL_UNDEF(&created); + ZVAL_UNDEF(&ttl); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_ARRAY(payload) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &payload_param); + ZEPHIR_OBS_COPY_OR_DUP(&payload, payload_param); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "detectencoding", NULL, 325, &input); - zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_0); + zephir_time(&_0); ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "UTF-32"); - ZEPHIR_RETURN_CALL_FUNCTION("mb_convert_encoding", NULL, 326, &input, &_1, &_0); + ZVAL_STRING(&_1, "created"); + ZEPHIR_CALL_METHOD(&created, this_ptr, "getarrval", NULL, 0, &payload, &_1, &_0); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "ttl"); + ZVAL_LONG(&_2, 3600); + ZEPHIR_CALL_METHOD(&ttl, this_ptr, "getarrval", NULL, 0, &payload, &_1, &_2); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "forever"); + if (ZEPHIR_IS_IDENTICAL(&_3, &ttl)) { + RETURN_MM_BOOL(0); + } + ZEPHIR_INIT_VAR(&_4); + zephir_add_function(&_4, &created, &ttl); + ZEPHIR_INIT_NVAR(&_1); + zephir_time(&_1); + RETURN_MM_BOOL(ZEPHIR_LT(&_4, &_1)); } -static PHP_METHOD(Phalcon_Html_Escaper, setDoubleEncode) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, storePayload) { - zval *doubleEncode_param = NULL, __$true, __$false; - zend_bool doubleEncode; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval key; + zval payload, *payload_param = NULL, *key_param = NULL, __$true, directory, _0, _2, _3, _4, _1$$3; zval *this_ptr = getThis(); + ZVAL_UNDEF(&payload); ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&directory); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&key); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(doubleEncode) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_ARRAY(payload) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &doubleEncode_param); - doubleEncode = zephir_get_boolval(doubleEncode_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &payload_param, &key_param); + zephir_get_arrval(&payload, payload_param); + zephir_get_strval(&key, key_param); - if (doubleEncode) { - zephir_update_property_zval(this_ptr, ZEND_STRL("doubleEncode"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("doubleEncode"), &__$false); + ZEPHIR_CALL_FUNCTION(&_0, "serialize", NULL, 15, &payload); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&payload, &_0); + ZEPHIR_CALL_METHOD(&directory, this_ptr, "getdir", NULL, 122, &key); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(&_0, "is_dir", NULL, 132, &directory); + zephir_check_call_status(); + if (!(zephir_is_true(&_0))) { + ZVAL_LONG(&_1$$3, 0777); + ZEPHIR_CALL_FUNCTION(NULL, "mkdir", NULL, 133, &directory, &_1$$3, &__$true); + zephir_check_call_status(); } - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_3); + ZEPHIR_CONCAT_VV(&_3, &directory, &key); + ZVAL_LONG(&_4, 2); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "phpfileputcontents", NULL, 0, &_3, &payload, &_4); + zephir_check_call_status(); + RETURN_MM_BOOL(!ZEPHIR_IS_FALSE_IDENTICAL(&_2)); } -static PHP_METHOD(Phalcon_Html_Escaper, setEncoding) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, phpFileExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *encoding_param = NULL; - zval encoding; + zval *filename_param = NULL; + zval filename; zval *this_ptr = getThis(); - ZVAL_UNDEF(&encoding); + ZVAL_UNDEF(&filename); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(encoding) + Z_PARAM_STR(filename) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &encoding_param); - zephir_get_strval(&encoding, encoding_param); + zephir_fetch_params(1, 1, 0, &filename_param); + zephir_get_strval(&filename, filename_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("encoding"), &encoding); - RETURN_THIS(); + RETURN_MM_BOOL((zephir_file_exists(&filename) == SUCCESS)); } -static PHP_METHOD(Phalcon_Html_Escaper, setFlags) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, phpFileGetContents) { - zval *flags_param = NULL, _0; - zend_long flags; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *filename_param = NULL; + zval filename; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&filename); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(flags) + Z_PARAM_STR(filename) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &flags_param); - flags = zephir_get_intval(flags_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &filename_param); + zephir_get_strval(&filename, filename_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, flags); - zephir_update_property_zval(this_ptr, ZEND_STRL("flags"), &_0); - RETURN_THISW(); + zephir_file_get_contents(return_value, &filename); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, setHtmlQuoteType) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, phpFilePutContents) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *flags_param = NULL, _0; zend_long flags, ZEPHIR_LAST_CALL_STATUS; + zval *filename_param = NULL, *data, data_sub, *flags_param = NULL, *context = NULL, context_sub, __$null, _0; + zval filename; zval *this_ptr = getThis(); + ZVAL_UNDEF(&filename); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&context_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) + ZEND_PARSE_PARAMETERS_START(2, 4) + Z_PARAM_STR(filename) + Z_PARAM_ZVAL(data) + Z_PARAM_OPTIONAL Z_PARAM_LONG(flags) + Z_PARAM_ZVAL_OR_NULL(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &flags_param); - flags = zephir_get_intval(flags_param); + zephir_fetch_params(1, 2, 2, &filename_param, &data, &flags_param, &context); + zephir_get_strval(&filename, filename_param); + if (!flags_param) { + flags = 0; + } else { + flags = zephir_get_intval(flags_param); + } + if (!context) { + context = &context_sub; + context = &__$null; + } ZVAL_LONG(&_0, flags); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setflags", NULL, 0, &_0); + ZEPHIR_RETURN_CALL_FUNCTION("file_put_contents", NULL, 134, &filename, data, &_0, context); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, url) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, phpFopen) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL; - zval input; + zval *filename_param = NULL, *mode_param = NULL; + zval filename, mode; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&filename); + ZVAL_UNDEF(&mode); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(filename) + Z_PARAM_STR(mode) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 2, 0, &filename_param, &mode_param); + zephir_get_strval(&filename, filename_param); + zephir_get_strval(&mode, mode_param); - ZEPHIR_RETURN_CALL_FUNCTION("rawurlencode", NULL, 327, &input); + ZEPHIR_RETURN_CALL_FUNCTION("fopen", NULL, 135, &filename, &mode); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, doEscapeCss) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, phpUnlink) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *input_param = NULL; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *filename_param = NULL; + zval filename; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&filename); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(filename) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &filename_param); + zephir_get_strval(&filename, filename_param); - zephir_escape_css(return_value, &input); + ZEPHIR_RETURN_CALL_FUNCTION("unlink", NULL, 119, &filename); + zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Escaper, doEscapeJs) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getDirFromFile) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *input_param = NULL; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *file_param = NULL, name, start, _0, _1, _7, _8, _9, _2$$3, _3$$3, _4$$3, _5$$4, _6$$4; + zval file; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&file); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&start); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(file) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &file_param); + if (UNEXPECTED(Z_TYPE_P(file_param) != IS_STRING && Z_TYPE_P(file_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'file' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(file_param) == IS_STRING)) { + zephir_get_strval(&file, file_param); + } else { + ZEPHIR_INIT_VAR(&file); + } - zephir_escape_js(return_value, &input); + ZVAL_LONG(&_0, 8); + ZEPHIR_CALL_FUNCTION(&name, "pathinfo", NULL, 85, &file, &_0); + zephir_check_call_status(); + ZVAL_LONG(&_0, 0); + ZVAL_LONG(&_1, -2); + ZEPHIR_INIT_VAR(&start); + zephir_substr(&start, &name, 0 , -2 , 0); + if (!(ZEPHIR_IS_EMPTY(&start))) { + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_INIT_VAR(&_3$$3); + ZVAL_STRING(&_3$$3, "."); + ZEPHIR_INIT_VAR(&_4$$3); + ZVAL_STRING(&_4$$3, "-"); + zephir_fast_str_replace(&_2$$3, &_3$$3, &_4$$3, &start); + ZEPHIR_CPY_WRT(&start, &_2$$3); + } + if (!(zephir_is_true(&start))) { + ZVAL_LONG(&_5$$4, 0); + ZVAL_LONG(&_6$$4, 1); + ZEPHIR_INIT_NVAR(&start); + zephir_substr(&start, &name, 0 , 1 , 0); + } + ZEPHIR_INIT_VAR(&_7); + ZVAL_LONG(&_8, 2); + ZEPHIR_CALL_FUNCTION(&_9, "str_split", NULL, 84, &start, &_8); + zephir_check_call_status(); + zephir_fast_join_str(&_7, SL("/"), &_9); + ZEPHIR_CONCAT_VS(return_value, &_7, "/"); RETURN_MM(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_EscaperFactory) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Html, EscaperFactory, phalcon, html_escaperfactory, phalcon_html_escaperfactory_method_entry, 0); - - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_EscaperFactory, newInstance) +static PHP_METHOD(Phalcon_Storage_Adapter_Stream, getDirSeparator) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *directory_param = NULL, _0, _1; + zval directory; zval *this_ptr = getThis(); + ZVAL_UNDEF(&directory); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(directory) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - object_init_ex(return_value, phalcon_html_escaper_ce); - if (zephir_has_constructor(return_value)) { - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0); - zephir_check_call_status(); + zephir_fetch_params(1, 1, 0, &directory_param); + if (UNEXPECTED(Z_TYPE_P(directory_param) != IS_STRING && Z_TYPE_P(directory_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'directory' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(directory_param) == IS_STRING)) { + zephir_get_strval(&directory, directory_param); + } else { + ZEPHIR_INIT_VAR(&directory); } - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html, Exception, phalcon, html_exception, zend_ce_exception, NULL, 0); - return SUCCESS; + ZEPHIR_INIT_VAR(&_0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "/"); + zephir_fast_trim(&_0, &directory, &_1, ZEPHIR_TRIM_RIGHT); + ZEPHIR_CONCAT_VS(return_value, &_0, "/"); + RETURN_MM(); } @@ -22313,699 +22902,517 @@ ZEPHIR_INIT_CLASS(Phalcon_Html_Exception) -ZEPHIR_INIT_CLASS(Phalcon_Html_TagFactory) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_AbstractSerializer) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html, TagFactory, phalcon, html_tagfactory, phalcon_factory_abstractfactory_ce, phalcon_html_tagfactory_method_entry, 0); - - zend_declare_property_null(phalcon_html_tagfactory_ce, SL("escaper"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_html_tagfactory_ce, SL("services"), ZEND_ACC_PROTECTED); - phalcon_html_tagfactory_ce->create_object = zephir_init_properties_Phalcon_Html_TagFactory; + ZEPHIR_REGISTER_CLASS(Phalcon\\Storage\\Serializer, AbstractSerializer, phalcon, storage_serializer_abstractserializer, phalcon_storage_serializer_abstractserializer_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + zend_declare_property_null(phalcon_storage_serializer_abstractserializer_ce, SL("data"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_storage_serializer_abstractserializer_ce, SL("isSuccess"), 1, ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_storage_serializer_abstractserializer_ce, 1, phalcon_storage_serializer_serializerinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_TagFactory, __construct) +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval services; - zval *escaper, escaper_sub, *services_param = NULL; + zval *data = NULL, data_sub, __$null; zval *this_ptr = getThis(); - ZVAL_UNDEF(&escaper_sub); - ZVAL_UNDEF(&services); + ZVAL_UNDEF(&data_sub); + ZVAL_NULL(&__$null); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_OBJECT_OF_CLASS(escaper, phalcon_html_escaper_escaperinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(services) + Z_PARAM_ZVAL_OR_NULL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &escaper, &services_param); - if (!services_param) { - ZEPHIR_INIT_VAR(&services); - array_init(&services); - } else { - ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); + zephir_fetch_params(1, 0, 1, &data); + if (!data) { + data = &data_sub; + data = &__$null; } - zephir_update_property_zval(this_ptr, ZEND_STRL("escaper"), escaper); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setdata", NULL, 0, data); zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_TagFactory, __call) +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, __serialize) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval arguments, _0; - zval *name_param = NULL, *arguments_param = NULL, helper, _1; - zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&helper); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&arguments); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_ARRAY(arguments) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &arguments_param); - zephir_get_strval(&name, name_param); - zephir_get_arrval(&arguments, arguments_param); - - ZEPHIR_CALL_METHOD(&helper, this_ptr, "newinstance", NULL, 0, &name); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 2, 0); - zephir_array_fast_append(&_0, &helper); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "__invoke"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_CALL_USER_FUNC_ARRAY(return_value, &_0, &arguments); - zephir_check_call_status(); + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + RETURN_MM_MEMBER(getThis(), "data"); + } + array_init(return_value); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_TagFactory, has) +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, __unserialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, _0; - zval name; + zval *data_param = NULL; + zval data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&data); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_ARRAY(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 1, 0, &data_param); + zephir_get_arrval(&data, data_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("mapper"), PH_NOISY_CC | PH_READONLY); - RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &data); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_TagFactory, newInstance) +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, getData) { - zval _2$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, definition, _0, _4, _5, _1$$3, _3$$3; - zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&definition); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_2$$3); + + + RETURN_MEMBER(getThis(), "data"); +} + +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, isSuccess) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "isSuccess"); +} + +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, setData) +{ + zval *data, data_sub; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&data_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - zephir_get_strval(&name, name_param); + zephir_fetch_params_without_memory_grow(1, 0, &data); - zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_0, &name))) { - ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_INIT_VAR(&_2$$3); - zephir_create_array(&_2$$3, 1, 0); - ZEPHIR_OBS_VAR(&_3$$3); - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC); - zephir_array_fast_append(&_2$$3, &_3$$3); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&_1$$3, &definition, &_2$$3); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("services"), &name, &_1$$3); - } - zephir_read_property(&_4, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_5, &_4, &name, PH_NOISY | PH_READONLY, "phalcon/Html/TagFactory.zep", 145); - RETURN_CTOR(&_5); + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), data); } -static PHP_METHOD(Phalcon_Html_TagFactory, set) +static PHP_METHOD(Phalcon_Storage_Serializer_AbstractSerializer, isSerializable) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, *method, method_sub, _0; - zval name; + zend_bool _0, _1; + zval *data, data_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&method_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&data_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_ZVAL(method) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &method); - zephir_get_strval(&name, name_param); + zephir_fetch_params_without_memory_grow(1, 0, &data); - zephir_update_property_array(this_ptr, SL("mapper"), &name, method); - zephir_unset_property_array(this_ptr, ZEND_STRL("services"), &name); - zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_0, &name, PH_SEPARATE); - ZEPHIR_MM_RESTORE(); + _0 = Z_TYPE_P(data) == IS_NULL; + if (!(_0)) { + _0 = 1 == (Z_TYPE_P(data) == IS_TRUE || Z_TYPE_P(data) == IS_FALSE); + } + _1 = _0; + if (!(_1)) { + _1 = 1 == zephir_is_numeric(data); + } + RETURN_BOOL(!(_1)); } -static PHP_METHOD(Phalcon_Html_TagFactory, getExceptionClass) -{ - zval *this_ptr = getThis(); - RETURN_STRING("Phalcon\\Html\\Exception"); +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_Base64) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, Base64, phalcon, storage_serializer_base64, phalcon_storage_serializer_abstractserializer_ce, phalcon_storage_serializer_base64_method_entry, 0); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_TagFactory, getServices) +static PHP_METHOD(Phalcon_Storage_Serializer_Base64, serialize) { + zval _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); - zephir_create_array(return_value, 41, 0); - add_assoc_stringl_ex(return_value, SL("a"), SL("Phalcon\\Html\\Helper\\Anchor")); - add_assoc_stringl_ex(return_value, SL("base"), SL("Phalcon\\Html\\Helper\\Base")); - add_assoc_stringl_ex(return_value, SL("body"), SL("Phalcon\\Html\\Helper\\Body")); - add_assoc_stringl_ex(return_value, SL("button"), SL("Phalcon\\Html\\Helper\\Button")); - add_assoc_stringl_ex(return_value, SL("close"), SL("Phalcon\\Html\\Helper\\Close")); - add_assoc_stringl_ex(return_value, SL("doctype"), SL("Phalcon\\Html\\Helper\\Doctype")); - add_assoc_stringl_ex(return_value, SL("element"), SL("Phalcon\\Html\\Helper\\Element")); - add_assoc_stringl_ex(return_value, SL("form"), SL("Phalcon\\Html\\Helper\\Form")); - add_assoc_stringl_ex(return_value, SL("img"), SL("Phalcon\\Html\\Helper\\Img")); - add_assoc_stringl_ex(return_value, SL("inputCheckbox"), SL("Phalcon\\Html\\Helper\\Input\\Checkbox")); - add_assoc_stringl_ex(return_value, SL("inputColor"), SL("Phalcon\\Html\\Helper\\Input\\Color")); - add_assoc_stringl_ex(return_value, SL("inputDate"), SL("Phalcon\\Html\\Helper\\Input\\Date")); - add_assoc_stringl_ex(return_value, SL("inputDateTime"), SL("Phalcon\\Html\\Helper\\Input\\DateTime")); - add_assoc_stringl_ex(return_value, SL("inputDateTimeLocal"), SL("Phalcon\\Html\\Helper\\Input\\DateTimeLocal")); - add_assoc_stringl_ex(return_value, SL("inputEmail"), SL("Phalcon\\Html\\Helper\\Input\\Email")); - add_assoc_stringl_ex(return_value, SL("inputFile"), SL("Phalcon\\Html\\Helper\\Input\\File")); - add_assoc_stringl_ex(return_value, SL("inputHidden"), SL("Phalcon\\Html\\Helper\\Input\\Hidden")); - add_assoc_stringl_ex(return_value, SL("inputImage"), SL("Phalcon\\Html\\Helper\\Input\\Image")); - add_assoc_stringl_ex(return_value, SL("inputInput"), SL("Phalcon\\Html\\Helper\\Input\\Input")); - add_assoc_stringl_ex(return_value, SL("inputMonth"), SL("Phalcon\\Html\\Helper\\Input\\Month")); - add_assoc_stringl_ex(return_value, SL("inputNumeric"), SL("Phalcon\\Html\\Helper\\Input\\Numeric")); - add_assoc_stringl_ex(return_value, SL("inputPassword"), SL("Phalcon\\Html\\Helper\\Input\\Password")); - add_assoc_stringl_ex(return_value, SL("inputRadio"), SL("Phalcon\\Html\\Helper\\Input\\Radio")); - add_assoc_stringl_ex(return_value, SL("inputRange"), SL("Phalcon\\Html\\Helper\\Input\\Range")); - add_assoc_stringl_ex(return_value, SL("inputSearch"), SL("Phalcon\\Html\\Helper\\Input\\Search")); - add_assoc_stringl_ex(return_value, SL("inputSelect"), SL("Phalcon\\Html\\Helper\\Input\\Select")); - add_assoc_stringl_ex(return_value, SL("inputSubmit"), SL("Phalcon\\Html\\Helper\\Input\\Submit")); - add_assoc_stringl_ex(return_value, SL("inputTel"), SL("Phalcon\\Html\\Helper\\Input\\Tel")); - add_assoc_stringl_ex(return_value, SL("inputText"), SL("Phalcon\\Html\\Helper\\Input\\Text")); - add_assoc_stringl_ex(return_value, SL("inputTextarea"), SL("Phalcon\\Html\\Helper\\Input\\Textarea")); - add_assoc_stringl_ex(return_value, SL("inputTime"), SL("Phalcon\\Html\\Helper\\Input\\Time")); - add_assoc_stringl_ex(return_value, SL("inputUrl"), SL("Phalcon\\Html\\Helper\\Input\\Url")); - add_assoc_stringl_ex(return_value, SL("inputWeek"), SL("Phalcon\\Html\\Helper\\Input\\Week")); - add_assoc_stringl_ex(return_value, SL("label"), SL("Phalcon\\Html\\Helper\\Label")); - add_assoc_stringl_ex(return_value, SL("link"), SL("Phalcon\\Html\\Helper\\Link")); - add_assoc_stringl_ex(return_value, SL("meta"), SL("Phalcon\\Html\\Helper\\Meta")); - add_assoc_stringl_ex(return_value, SL("ol"), SL("Phalcon\\Html\\Helper\\Ol")); - add_assoc_stringl_ex(return_value, SL("script"), SL("Phalcon\\Html\\Helper\\Script")); - add_assoc_stringl_ex(return_value, SL("style"), SL("Phalcon\\Html\\Helper\\Style")); - add_assoc_stringl_ex(return_value, SL("title"), SL("Phalcon\\Html\\Helper\\Title")); - add_assoc_stringl_ex(return_value, SL("ul"), SL("Phalcon\\Html\\Helper\\Ul")); - return; -} - -zend_object *zephir_init_properties_Phalcon_Html_TagFactory(zend_class_entry *class_type) -{ - zval _0, _2, _1$$3, _3$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - + ZEPHIR_MM_GROW(); - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("mapper"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("mapper"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("services"), &_3$$4); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC); + if (Z_TYPE_P(&_0) != IS_STRING) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Data for the serializer must of type string", "phalcon/Storage/Serializer/Base64.zep", 27); + return; } + zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_FUNCTION("base64_encode", NULL, 227, &_1); + zephir_check_call_status(); + RETURN_MM(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Escaper_EscaperInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Escaper, EscaperInterface, phalcon, html_escaper_escaperinterface, phalcon_html_escaper_escaperinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, attributes); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, css); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, getEncoding); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, html); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, js); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, setEncoding); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, setFlags); -ZEPHIR_DOC_METHOD(Phalcon_Html_Escaper_EscaperInterface, url); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Escaper_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Escaper, Exception, phalcon, html_escaper_exception, zend_ce_exception, NULL, 0); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_AbstractLink) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Html\\Link, AbstractLink, phalcon, html_link_abstractlink, phalcon_html_link_abstractlink_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_null(phalcon_html_link_abstractlink_ce, SL("attributes"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_link_abstractlink_ce, SL("href"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_link_abstractlink_ce, SL("rels"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_html_link_abstractlink_ce, SL("templated"), 0, ZEND_ACC_PROTECTED); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, __construct) +static PHP_METHOD(Phalcon_Storage_Serializer_Base64, unserialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *rel_param = NULL, *href_param = NULL, *attributes_param = NULL, _0, _1, _2, _3$$3, _4$$3; - zval rel, href; + zval data_sub, __$true, __$false, result, _0, _1; + zval *data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&rel); - ZVAL_UNDEF(&href); + ZVAL_UNDEF(&data_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&attributes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_STR(rel) - Z_PARAM_STR(href) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &rel_param, &href_param, &attributes_param); - if (!rel_param) { - ZEPHIR_INIT_VAR(&rel); - ZVAL_STRING(&rel, ""); - } else { - zephir_get_strval(&rel, rel_param); - } - if (!href_param) { - ZEPHIR_INIT_VAR(&href); - ZVAL_STRING(&href, ""); - } else { - zephir_get_strval(&href, href_param); - } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } + zephir_fetch_params(1, 1, 0, &data); ZEPHIR_INIT_VAR(&_0); - object_init_ex(&_0, phalcon_support_collection_ce); - ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 22, &attributes); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_0); - ZEPHIR_INIT_VAR(&_1); - object_init_ex(&_1, phalcon_support_collection_ce); - ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 22); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("rels"), &_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("href"), &href); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "hrefistemplated", NULL, 0, &href); + zephir_gettype(&_0, data); + if (!ZEPHIR_IS_STRING_IDENTICAL(&_0, "string")) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Data for the unserializer must of type string", "phalcon/Storage/Serializer/Base64.zep", 47); + return; + } + ZVAL_BOOL(&_1, 1); + ZEPHIR_CALL_METHOD(&result, this_ptr, "phpbase64decode", NULL, 0, data, &_1); zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("templated"), &_2); - if (1 != ZEPHIR_IS_EMPTY(&rel)) { - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("rels"), PH_NOISY_CC | PH_READONLY); - ZVAL_BOOL(&_4$$3, 1); - ZEPHIR_CALL_METHOD(NULL, &_3$$3, "set", NULL, 0, &rel, &_4$$3); - zephir_check_call_status(); + if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&result))) { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + ZEPHIR_INIT_NVAR(&result); + ZVAL_STRING(&result, ""); + } else { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } } + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &result); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doGetAttributes) +static PHP_METHOD(Phalcon_Storage_Serializer_Base64, phpBase64Decode) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool strict; + zval *input_param = NULL, *strict_param = NULL, _0; + zval input; zval *this_ptr = getThis(); + ZVAL_UNDEF(&input); ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(input) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(strict) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &input_param, &strict_param); + zephir_get_strval(&input, input_param); + if (!strict_param) { + strict = 0; + } else { + strict = zephir_get_boolval(strict_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "toarray", NULL, 0); + + ZVAL_BOOL(&_0, (strict ? 1 : 0)); + ZEPHIR_RETURN_CALL_FUNCTION("base64_decode", NULL, 226, &input, &_0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doGetHref) -{ - zval *this_ptr = getThis(); - - RETURN_MEMBER(getThis(), "href"); -} -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doGetRels) -{ - zval _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("rels"), PH_NOISY_CC | PH_READONLY); - ZVAL_BOOL(&_1, 0); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getkeys", NULL, 0, &_1); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doIsTemplated) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_Igbinary) { - zval *this_ptr = getThis(); - - + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, Igbinary, phalcon, storage_serializer_igbinary, phalcon_storage_serializer_abstractserializer_ce, phalcon_storage_serializer_igbinary_method_entry, 0); - RETURN_MEMBER(getThis(), "templated"); + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, hrefIsTemplated) +static PHP_METHOD(Phalcon_Storage_Serializer_Igbinary, serialize) { - zend_bool _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval __$true, __$false, result, _0, _1, _2; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *href_param = NULL, _0, _1, _3; - zval href; zval *this_ptr = getThis(); - ZVAL_UNDEF(&href); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(href) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_2); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &href_param); - zephir_get_strval(&href, href_param); - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "{"); - ZEPHIR_CALL_FUNCTION(&_1, "mb_strpos", NULL, 82, &href, &_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isserializable", NULL, 0, &_1); zephir_check_call_status(); - _2 = !ZEPHIR_IS_FALSE_IDENTICAL(&_1); - if (_2) { - ZEPHIR_INIT_NVAR(&_0); - ZVAL_STRING(&_0, "}"); - ZEPHIR_CALL_FUNCTION(&_3, "mb_strpos", NULL, 82, &href, &_0); - zephir_check_call_status(); - _2 = !ZEPHIR_IS_FALSE_IDENTICAL(&_3); - } - RETURN_MM_BOOL(_2); -} - -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithAttribute) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, *value, value_sub, newInstance, _0; - zval key; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value_sub); - ZVAL_UNDEF(&newInstance); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(key) - Z_PARAM_ZVAL(value) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &key_param, &value); - zephir_get_strval(&key, key_param); - - - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + RETURN_MM_MEMBER(getThis(), "data"); } - zephir_read_property(&_0, &newInstance, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &key, value); + zephir_read_property(&_2, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, this_ptr, "doserialize", NULL, 0, &_2); zephir_check_call_status(); - RETURN_CCTOR(&newInstance); + if (UNEXPECTED(Z_TYPE_P(&result) == IS_NULL)) { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + ZEPHIR_INIT_NVAR(&result); + ZVAL_STRING(&result, ""); + } else { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + } + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithHref) +static PHP_METHOD(Phalcon_Storage_Serializer_Igbinary, unserialize) { + zend_bool _8$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *href_param = NULL, newInstance, _0; - zval href; + zval data_sub, __$false, __$true, result, version, _0, _1$$4, _2$$4, _3$$4, _4$$5, _5$$5, _6$$6, _7$$6; + zval *data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&href); - ZVAL_UNDEF(&newInstance); + ZVAL_UNDEF(&data_sub); + ZVAL_BOOL(&__$false, 0); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&version); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(href) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &href_param); - zephir_get_strval(&href, href_param); + zephir_fetch_params(1, 1, 0, &data); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); - } - zephir_update_property_zval(&newInstance, ZEND_STRL("href"), &href); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "hrefistemplated", NULL, 0, &href); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isserializable", NULL, 0, data); zephir_check_call_status(); - zephir_update_property_zval(&newInstance, ZEND_STRL("templated"), &_0); - RETURN_CCTOR(&newInstance); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), data); + } else { + ZEPHIR_CALL_FUNCTION(&version, "phpversion", NULL, 128); + zephir_check_call_status(); + ZEPHIR_GLOBAL(warning).enable = zend_is_true(&__$false); + ZEPHIR_INIT_VAR(&_1$$4); + ZVAL_STRING(&_1$$4, "8.0"); + ZEPHIR_INIT_VAR(&_2$$4); + ZVAL_STRING(&_2$$4, ">="); + ZEPHIR_CALL_FUNCTION(&_3$$4, "version_compare", NULL, 129, &version, &_1$$4, &_2$$4); + zephir_check_call_status(); + if (zephir_is_true(&_3$$4)) { + ZEPHIR_INIT_VAR(&_4$$5); + ZEPHIR_INIT_NVAR(&_4$$5); + zephir_create_closure_ex(&_4$$5, NULL, phalcon_3__closure_ce, SL("__invoke")); + ZVAL_LONG(&_5$$5, 2); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_4$$5, &_5$$5); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_VAR(&_6$$6); + ZEPHIR_INIT_NVAR(&_6$$6); + zephir_create_closure_ex(&_6$$6, NULL, phalcon_4__closure_ce, SL("__invoke")); + ZVAL_LONG(&_7$$6, 2); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_6$$6, &_7$$6); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(&result, this_ptr, "dounserialize", NULL, 0, data); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(NULL, "restore_error_handler", NULL, 131); + zephir_check_call_status(); + _8$$4 = ZEPHIR_GLOBAL(warning).enable; + if (!(_8$$4)) { + _8$$4 = ZEPHIR_IS_FALSE_IDENTICAL(&result); + } + if (UNEXPECTED(_8$$4)) { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + ZEPHIR_INIT_NVAR(&result); + ZVAL_STRING(&result, ""); + } else { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + } + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &result); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithRel) +static PHP_METHOD(Phalcon_Storage_Serializer_Igbinary, phpIgbinarySerialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, newInstance, _0, _1; - zval key; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&newInstance); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - zephir_get_strval(&key, key_param); + zephir_fetch_params(1, 1, 0, &value); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); - } - zephir_read_property(&_0, &newInstance, ZEND_STRL("rels"), PH_NOISY_CC | PH_READONLY); - ZVAL_BOOL(&_1, 1); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &key, &_1); + ZEPHIR_RETURN_CALL_FUNCTION("igbinary_serialize", NULL, 136, value); zephir_check_call_status(); - RETURN_CCTOR(&newInstance); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithoutAttribute) +static PHP_METHOD(Phalcon_Storage_Serializer_Igbinary, doSerialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, newInstance, _0; - zval key; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&newInstance); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - zephir_get_strval(&key, key_param); + zephir_fetch_params(1, 1, 0, &value); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); - } - zephir_read_property(&_0, &newInstance, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "remove", NULL, 0, &key); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "phpigbinaryserialize", NULL, 0, value); zephir_check_call_status(); - RETURN_CCTOR(&newInstance); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithoutRel) +static PHP_METHOD(Phalcon_Storage_Serializer_Igbinary, doUnserialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, newInstance, _0; - zval key; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&newInstance); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - zephir_get_strval(&key, key_param); + zephir_fetch_params(1, 1, 0, &value); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); - } - zephir_read_property(&_0, &newInstance, ZEND_STRL("rels"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "remove", NULL, 0, &key); + ZEPHIR_RETURN_CALL_FUNCTION("igbinary_unserialize", NULL, 137, value); zephir_check_call_status(); - RETURN_CCTOR(&newInstance); + RETURN_MM(); } @@ -23018,306 +23425,257 @@ static PHP_METHOD(Phalcon_Html_Link_AbstractLink, doWithoutRel) -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_AbstractLinkProvider) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_Json) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Html\\Link, AbstractLinkProvider, phalcon, html_link_abstractlinkprovider, phalcon_html_link_abstractlinkprovider_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_null(phalcon_html_link_abstractlinkprovider_ce, SL("links"), ZEND_ACC_PROTECTED); - phalcon_html_link_abstractlinkprovider_ce->create_object = zephir_init_properties_Phalcon_Html_Link_AbstractLinkProvider; + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, Json, phalcon, storage_serializer_json, phalcon_storage_serializer_abstractserializer_ce, phalcon_storage_serializer_json_method_entry, 0); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, __construct) +static PHP_METHOD(Phalcon_Storage_Serializer_Json, serialize) { - zend_bool _5$$3, _11$$5; + zval _4$$3; + zend_bool _1; + zval _0, _2, _5, _6, _7, _3$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL, *_8 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *links_param = NULL, link, *_0, _1, _2$$3, _3$$3, _6$$3, _7$$4, _9$$5, _10$$5, _12$$5, _13$$6; - zval links; zval *this_ptr = getThis(); - ZVAL_UNDEF(&links); - ZVAL_UNDEF(&link); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_9$$5); - ZVAL_UNDEF(&_10$$5); - ZVAL_UNDEF(&_12$$5); - ZVAL_UNDEF(&_13$$6); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(links) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_4$$3); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &links_param); - if (!links_param) { - ZEPHIR_INIT_VAR(&links); - array_init(&links); - } else { - zephir_get_arrval(&links, links_param); - } - - zephir_is_iterable(&links, 0, "phalcon/Html/Link/AbstractLinkProvider.zep", 42); - if (Z_TYPE_P(&links) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&links), _0) - { - ZEPHIR_INIT_NVAR(&link); - ZVAL_COPY(&link, _0); - ZEPHIR_INIT_NVAR(&_2$$3); - ZVAL_STRING(&_2$$3, "Phalcon\\Html\\Link\\Interfaces\\LinkInterface"); - ZEPHIR_CALL_FUNCTION(&_3$$3, "is_a", &_4, 83, &link, &_2$$3); - zephir_check_call_status(); - _5$$3 = ZEPHIR_IS_TRUE_IDENTICAL(&_3$$3); - if (!(_5$$3)) { - ZEPHIR_INIT_NVAR(&_2$$3); - ZVAL_STRING(&_2$$3, "Psr\\Link\\LinkInterface"); - ZEPHIR_CALL_FUNCTION(&_6$$3, "is_a", &_4, 83, &link, &_2$$3); - zephir_check_call_status(); - _5$$3 = ZEPHIR_IS_TRUE_IDENTICAL(&_6$$3); - } - if (_5$$3) { - ZEPHIR_CALL_METHOD(&_7$$4, this_ptr, "getkey", &_8, 0, &link); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("links"), &_7$$4, &link); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &links, "rewind", NULL, 0); + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC); + _1 = Z_TYPE_P(&_0) == IS_OBJECT; + if (_1) { + ZEPHIR_OBS_VAR(&_2); + zephir_read_property(&_2, this_ptr, ZEND_STRL("data"), PH_NOISY_CC); + _1 = !(zephir_is_instance_of(&_2, SL("JsonSerializable"))); + } + if (_1) { + ZEPHIR_INIT_VAR(&_3$$3); + object_init_ex(&_3$$3, spl_ce_InvalidArgumentException); + ZEPHIR_INIT_VAR(&_4$$3); + ZEPHIR_CONCAT_SS(&_4$$3, "Data for the JSON serializer cannot be of type 'object' ", "without implementing 'JsonSerializable'"); + ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 192, &_4$$3); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &links, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&link, &links, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_9$$5); - ZVAL_STRING(&_9$$5, "Phalcon\\Html\\Link\\Interfaces\\LinkInterface"); - ZEPHIR_CALL_FUNCTION(&_10$$5, "is_a", &_4, 83, &link, &_9$$5); - zephir_check_call_status(); - _11$$5 = ZEPHIR_IS_TRUE_IDENTICAL(&_10$$5); - if (!(_11$$5)) { - ZEPHIR_INIT_NVAR(&_9$$5); - ZVAL_STRING(&_9$$5, "Psr\\Link\\LinkInterface"); - ZEPHIR_CALL_FUNCTION(&_12$$5, "is_a", &_4, 83, &link, &_9$$5); - zephir_check_call_status(); - _11$$5 = ZEPHIR_IS_TRUE_IDENTICAL(&_12$$5); - } - if (_11$$5) { - ZEPHIR_CALL_METHOD(&_13$$6, this_ptr, "getkey", &_8, 0, &link); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("links"), &_13$$6, &link); - } - ZEPHIR_CALL_METHOD(NULL, &links, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_throw_exception_debug(&_3$$3, "phalcon/Storage/Serializer/Json.zep", 29); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_INIT_NVAR(&link); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, doGetLinks) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "links"); + zephir_read_property(&_6, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "isserializable", NULL, 0, &_6); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_5)) { + RETURN_MM_MEMBER(getThis(), "data"); + } + zephir_read_property(&_7, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getencode", NULL, 0, &_7); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, doGetLinksByRel) +static PHP_METHOD(Phalcon_Storage_Serializer_Json, unserialize) { - zval filtered; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *rel_param = NULL, link, rels, _0, *_1, _2; - zval rel; + zval data_sub, _0, _1$$4; + zval *data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&rel); - ZVAL_UNDEF(&link); - ZVAL_UNDEF(&rels); + ZVAL_UNDEF(&data_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&filtered); + ZVAL_UNDEF(&_1$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(rel) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &rel_param); - zephir_get_strval(&rel, rel_param); + zephir_fetch_params(1, 1, 0, &data); - ZEPHIR_INIT_VAR(&filtered); - array_init(&filtered); - zephir_read_property(&_0, this_ptr, ZEND_STRL("links"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_0, 0, "phalcon/Html/Link/AbstractLinkProvider.zep", 80); - if (Z_TYPE_P(&_0) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) - { - ZEPHIR_INIT_NVAR(&link); - ZVAL_COPY(&link, _1); - ZEPHIR_CALL_METHOD(&rels, &link, "getrels", NULL, 0); - zephir_check_call_status(); - if (1 == zephir_fast_in_array(&rel, &rels)) { - zephir_array_append(&filtered, &link, PH_SEPARATE, "phalcon/Html/Link/AbstractLinkProvider.zep", 76); - } - } ZEND_HASH_FOREACH_END(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isserializable", NULL, 0, data); + zephir_check_call_status(); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), data); } else { - ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(&_1$$4, this_ptr, "getdecode", NULL, 0, data); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&link, &_0, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&rels, &link, "getrels", NULL, 0); - zephir_check_call_status(); - if (1 == zephir_fast_in_array(&rel, &rels)) { - zephir_array_append(&filtered, &link, PH_SEPARATE, "phalcon/Html/Link/AbstractLinkProvider.zep", 76); - } - ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &_1$$4); } - ZEPHIR_INIT_NVAR(&link); - RETURN_CTOR(&filtered); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, doWithLink) +static PHP_METHOD(Phalcon_Storage_Serializer_Json, getDecode) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *link, link_sub, key, newInstance; + zend_long depth, options, ZEPHIR_LAST_CALL_STATUS; + zend_bool associative; + zval *data_param = NULL, *associative_param = NULL, *depth_param = NULL, *options_param = NULL, decoded, _0, _1, _2, _3, _4$$3, _5$$3, _6$$3; + zval data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&link_sub); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&newInstance); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&decoded); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(link) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(data) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(associative) + Z_PARAM_LONG(depth) + Z_PARAM_LONG(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link); + zephir_fetch_params(1, 1, 3, &data_param, &associative_param, &depth_param, &options_param); + if (UNEXPECTED(Z_TYPE_P(data_param) != IS_STRING && Z_TYPE_P(data_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'data' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(data_param) == IS_STRING)) { + zephir_get_strval(&data, data_param); + } else { + ZEPHIR_INIT_VAR(&data); + } + if (!associative_param) { + associative = 0; + } else { + associative = zephir_get_boolval(associative_param); + } + if (!depth_param) { + depth = 512; + } else { + depth = zephir_get_intval(depth_param); + } + if (!options_param) { + options = 0; + } else { + options = zephir_get_intval(options_param); + } - ZEPHIR_CALL_METHOD(&key, this_ptr, "getkey", NULL, 0, link); + ZVAL_BOOL(&_0, (associative ? 1 : 0)); + ZVAL_LONG(&_1, depth); + ZVAL_LONG(&_2, options); + ZEPHIR_INIT_VAR(&decoded); + zephir_json_decode(&decoded, &data, zephir_get_intval(&_0) ); + ZEPHIR_CALL_FUNCTION(&_3, "json_last_error", NULL, 190); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); + if (UNEXPECTED(!ZEPHIR_IS_LONG_IDENTICAL(&_3, 0))) { + ZEPHIR_INIT_VAR(&_4$$3); + object_init_ex(&_4$$3, spl_ce_InvalidArgumentException); + ZEPHIR_CALL_FUNCTION(&_5$$3, "json_last_error_msg", NULL, 191); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6$$3); + ZEPHIR_CONCAT_SV(&_6$$3, "json_decode error: ", &_5$$3); + ZEPHIR_CALL_METHOD(NULL, &_4$$3, "__construct", NULL, 192, &_6$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_4$$3, "phalcon/Storage/Serializer/Json.zep", 71); + ZEPHIR_MM_RESTORE(); + return; } - zephir_update_property_array(&newInstance, SL("links"), &key, link); - RETURN_CCTOR(&newInstance); + RETURN_CCTOR(&decoded); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, doWithoutLink) +static PHP_METHOD(Phalcon_Storage_Serializer_Json, getEncode) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *link, link_sub, key, newInstance, _0; + zend_long options, depth, ZEPHIR_LAST_CALL_STATUS; + zval *data, data_sub, *options_param = NULL, *depth_param = NULL, encoded, _0, _1, _2, _3$$3, _4$$3, _5$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&link_sub); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&newInstance); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&encoded); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(link) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(data) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(options) + Z_PARAM_LONG(depth) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link); + zephir_fetch_params(1, 1, 2, &data, &options_param, &depth_param); + if (!options_param) { + options = 0; + } else { + options = zephir_get_intval(options_param); + } + if (!depth_param) { + depth = 512; + } else { + depth = zephir_get_intval(depth_param); + } - ZEPHIR_CALL_METHOD(&key, this_ptr, "getkey", NULL, 0, link); + ZVAL_LONG(&_0, options); + ZVAL_LONG(&_1, depth); + ZEPHIR_INIT_VAR(&encoded); + zephir_json_encode(&encoded, data, zephir_get_intval(&_0) ); + ZEPHIR_CALL_FUNCTION(&_2, "json_last_error", NULL, 190); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&newInstance); - if (zephir_clone(&newInstance, this_ptr) == FAILURE) { - RETURN_MM(); + if (UNEXPECTED(!ZEPHIR_IS_LONG_IDENTICAL(&_2, 0))) { + ZEPHIR_INIT_VAR(&_3$$3); + object_init_ex(&_3$$3, spl_ce_InvalidArgumentException); + ZEPHIR_CALL_FUNCTION(&_4$$3, "json_last_error_msg", NULL, 191); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_5$$3); + ZEPHIR_CONCAT_SV(&_5$$3, "json_encode error: ", &_4$$3); + ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 192, &_5$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_3$$3, "phalcon/Storage/Serializer/Json.zep", 92); + ZEPHIR_MM_RESTORE(); + return; } - zephir_unset_property_array(&newInstance, ZEND_STRL("links"), &key); - zephir_read_property(&_0, &newInstance, ZEND_STRL("links"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_0, &key, PH_SEPARATE); - RETURN_CCTOR(&newInstance); + RETURN_CCTOR(&encoded); } -static PHP_METHOD(Phalcon_Html_Link_AbstractLinkProvider, getKey) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *link, link_sub; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&link_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(link) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link); - ZEPHIR_RETURN_CALL_FUNCTION("spl_object_hash", NULL, 77, link); - zephir_check_call_status(); - RETURN_MM(); -} -zend_object *zephir_init_properties_Phalcon_Html_Link_AbstractLinkProvider(zend_class_entry *class_type) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_MemcachedIgbinary) { - zval _0, _1$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, MemcachedIgbinary, phalcon, storage_serializer_memcachedigbinary, phalcon_storage_serializer_none_ce, NULL, 0); - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("links"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("links"), &_1$$3); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } + return SUCCESS; } @@ -23330,145 +23688,95 @@ zend_object *zephir_init_properties_Phalcon_Html_Link_AbstractLinkProvider(zend_ -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_EvolvableLink) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_MemcachedJson) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Link, EvolvableLink, phalcon, html_link_evolvablelink, phalcon_html_link_link_ce, phalcon_html_link_evolvablelink_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, MemcachedJson, phalcon, storage_serializer_memcachedjson, phalcon_storage_serializer_none_ce, NULL, 0); - zend_class_implements(phalcon_html_link_evolvablelink_ce, 1, phalcon_html_link_interfaces_evolvablelinkinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withAttribute) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attribute, attribute_sub, *value, value_sub; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute_sub); - ZVAL_UNDEF(&value_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ZVAL(attribute) - Z_PARAM_ZVAL(value) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &attribute, &value); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithattribute", NULL, 0, attribute, value); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withHref) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_MemcachedPhp) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *href_param = NULL; - zval href; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, MemcachedPhp, phalcon, storage_serializer_memcachedphp, phalcon_storage_serializer_none_ce, NULL, 0); - ZVAL_UNDEF(&href); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(href) - ZEND_PARSE_PARAMETERS_END(); -#endif + return SUCCESS; +} - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &href_param); - zephir_get_strval(&href, href_param); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithhref", NULL, 0, &href); - zephir_check_call_status(); - RETURN_MM(); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withRel) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *rel_param = NULL; - zval rel; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&rel); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(rel) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &rel_param); - zephir_get_strval(&rel, rel_param); +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_Msgpack) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, Msgpack, phalcon, storage_serializer_msgpack, phalcon_storage_serializer_igbinary_ce, phalcon_storage_serializer_msgpack_method_entry, 0); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithrel", NULL, 0, &rel); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withoutAttribute) +static PHP_METHOD(Phalcon_Storage_Serializer_Msgpack, doSerialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attribute_param = NULL; - zval attribute; + zval *value, value_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(attribute) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attribute_param); - zephir_get_strval(&attribute, attribute_param); + zephir_fetch_params(1, 1, 0, &value); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithoutattribute", NULL, 0, &attribute); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_FUNCTION("msgpack_pack", NULL, 0, &_0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withoutRel) +static PHP_METHOD(Phalcon_Storage_Serializer_Msgpack, doUnserialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *rel_param = NULL; - zval rel; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&rel); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(rel) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &rel_param); - zephir_get_strval(&rel, rel_param); + zephir_fetch_params(1, 1, 0, &value); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithoutrel", NULL, 0, &rel); + ZEPHIR_RETURN_CALL_FUNCTION("msgpack_unpack", NULL, 0, value); zephir_check_call_status(); RETURN_MM(); } @@ -23483,62 +23791,41 @@ static PHP_METHOD(Phalcon_Html_Link_EvolvableLink, withoutRel) -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_EvolvableLinkProvider) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_None) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Link, EvolvableLinkProvider, phalcon, html_link_evolvablelinkprovider, phalcon_html_link_linkprovider_ce, phalcon_html_link_evolvablelinkprovider_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, None, phalcon, storage_serializer_none, phalcon_storage_serializer_abstractserializer_ce, phalcon_storage_serializer_none_method_entry, 0); - zend_class_implements(phalcon_html_link_evolvablelinkprovider_ce, 1, phalcon_html_link_interfaces_evolvablelinkproviderinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_EvolvableLinkProvider, withLink) +static PHP_METHOD(Phalcon_Storage_Serializer_None, serialize) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *link, link_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&link_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(link, phalcon_html_link_interfaces_linkinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithlink", NULL, 0, link); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "data"); } -static PHP_METHOD(Phalcon_Html_Link_EvolvableLinkProvider, withoutLink) +static PHP_METHOD(Phalcon_Storage_Serializer_None, unserialize) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *link, link_sub; + zval data_sub; + zval *data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&link_sub); + ZVAL_UNDEF(&data_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(link, phalcon_html_link_interfaces_linkinterface_ce) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &link); + zephir_fetch_params_without_memory_grow(1, 0, &data); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dowithoutlink", NULL, 0, link); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), data); } @@ -23551,550 +23838,167 @@ static PHP_METHOD(Phalcon_Html_Link_EvolvableLinkProvider, withoutLink) -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Link) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_Php) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Link, Link, phalcon, html_link_link, phalcon_html_link_abstractlink_ce, phalcon_html_link_link_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, Php, phalcon, storage_serializer_php, phalcon_storage_serializer_abstractserializer_ce, phalcon_storage_serializer_php_method_entry, 0); - zend_class_implements(phalcon_html_link_link_ce, 1, phalcon_html_link_interfaces_linkinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Link_Link, getAttributes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - - - ZEPHIR_MM_GROW(); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dogetattributes", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Link_Link, getHref) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - - - ZEPHIR_MM_GROW(); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dogethref", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Link_Link, getRels) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - - - ZEPHIR_MM_GROW(); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dogetrels", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Link_Link, isTemplated) +static PHP_METHOD(Phalcon_Storage_Serializer_Php, serialize) { + zval _0, _1, _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); ZEPHIR_MM_GROW(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "doistemplated", NULL, 0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isserializable", NULL, 0, &_1); zephir_check_call_status(); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_LinkProvider) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Link, LinkProvider, phalcon, html_link_linkprovider, phalcon_html_link_abstractlinkprovider_ce, phalcon_html_link_linkprovider_method_entry, 0); - - zend_class_implements(phalcon_html_link_linkprovider_ce, 1, phalcon_html_link_interfaces_linkproviderinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_Link_LinkProvider, getLinks) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - - - ZEPHIR_MM_GROW(); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dogetlinks", NULL, 0); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + RETURN_MM_MEMBER(getThis(), "data"); + } + zephir_read_property(&_2, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_FUNCTION("serialize", NULL, 15, &_2); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Link_LinkProvider, getLinksByRel) +static PHP_METHOD(Phalcon_Storage_Serializer_Php, unserialize) { + zend_bool _8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *rel, rel_sub; + zval data_sub, __$false, __$true, result, version, _0, _1, _2, _3, _4$$4, _5$$4, _6$$5, _7$$5; + zval *data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&rel_sub); + ZVAL_UNDEF(&data_sub); + ZVAL_BOOL(&__$false, 0); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&version); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(rel) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &rel); + zephir_fetch_params(1, 1, 0, &data); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "dogetlinksbyrel", NULL, 0, rel); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isserializable", NULL, 0, data); zephir_check_call_status(); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Serializer_Header) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Html\\Link\\Serializer, Header, phalcon, html_link_serializer_header, phalcon_html_link_serializer_header_method_entry, 0); - - zend_class_implements(phalcon_html_link_serializer_header_ce, 1, phalcon_html_link_serializer_serializerinterface_ce); - return SUCCESS; + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), data); + RETURN_MM_NULL(); + } + ZEPHIR_CALL_FUNCTION(&version, "phpversion", NULL, 128); + zephir_check_call_status(); + ZEPHIR_GLOBAL(warning).enable = zend_is_true(&__$false); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "8.0"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ">="); + ZEPHIR_CALL_FUNCTION(&_3, "version_compare", NULL, 129, &version, &_1, &_2); + zephir_check_call_status(); + if (zephir_is_true(&_3)) { + ZEPHIR_INIT_VAR(&_4$$4); + ZEPHIR_INIT_NVAR(&_4$$4); + zephir_create_closure_ex(&_4$$4, NULL, phalcon_11__closure_ce, SL("__invoke")); + ZVAL_LONG(&_5$$4, 8); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_4$$4, &_5$$4); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_VAR(&_6$$5); + ZEPHIR_INIT_NVAR(&_6$$5); + zephir_create_closure_ex(&_6$$5, NULL, phalcon_12__closure_ce, SL("__invoke")); + ZVAL_LONG(&_7$$5, 8); + ZEPHIR_CALL_FUNCTION(NULL, "set_error_handler", NULL, 130, &_6$$5, &_7$$5); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(&result, this_ptr, "phpunserialize", NULL, 0, data); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(NULL, "restore_error_handler", NULL, 131); + zephir_check_call_status(); + _8 = ZEPHIR_GLOBAL(warning).enable; + if (!(_8)) { + _8 = ZEPHIR_IS_FALSE_IDENTICAL(&result); + } + if (UNEXPECTED(_8)) { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + ZEPHIR_INIT_NVAR(&result); + ZVAL_STRING(&result, ""); + } else { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("isSuccess"), &__$false); + } + } + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &result); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Link_Serializer_Header, serialize) +static PHP_METHOD(Phalcon_Storage_Serializer_Php, phpUnserialize) { - zend_string *_8$$3, *_28$$17; - zend_ulong _7$$3, _27$$17; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *links_param = NULL, attributes, key, link, rels, result, subValue, value, *_0, _1, _2$$3, _3$$3, _4$$3, *_5$$3, _6$$3, _19$$3, _20$$3, *_9$$6, _10$$6, _11$$7, _12$$8, _13$$9, *_14$$12, _15$$12, _16$$13, _17$$14, _18$$15, _21$$17, _22$$17, _23$$17, _24$$17, *_25$$17, _26$$17, _39$$17, _40$$17, *_29$$20, _30$$20, _31$$21, _32$$22, _33$$23, *_34$$26, _35$$26, _36$$27, _37$$28, _38$$29; - zval links, elements, parts; + zval options; + zval *data_param = NULL, *options_param = NULL; + zval data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&links); - ZVAL_UNDEF(&elements); - ZVAL_UNDEF(&parts); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&link); - ZVAL_UNDEF(&rels); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&subValue); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_19$$3); - ZVAL_UNDEF(&_20$$3); - ZVAL_UNDEF(&_10$$6); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_15$$12); - ZVAL_UNDEF(&_16$$13); - ZVAL_UNDEF(&_17$$14); - ZVAL_UNDEF(&_18$$15); - ZVAL_UNDEF(&_21$$17); - ZVAL_UNDEF(&_22$$17); - ZVAL_UNDEF(&_23$$17); - ZVAL_UNDEF(&_24$$17); - ZVAL_UNDEF(&_26$$17); - ZVAL_UNDEF(&_39$$17); - ZVAL_UNDEF(&_40$$17); - ZVAL_UNDEF(&_30$$20); - ZVAL_UNDEF(&_31$$21); - ZVAL_UNDEF(&_32$$22); - ZVAL_UNDEF(&_33$$23); - ZVAL_UNDEF(&_35$$26); - ZVAL_UNDEF(&_36$$27); - ZVAL_UNDEF(&_37$$28); - ZVAL_UNDEF(&_38$$29); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(links) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(data) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &links_param); - zephir_get_arrval(&links, links_param); - - - ZEPHIR_INIT_VAR(&result); - ZVAL_NULL(&result); - ZEPHIR_INIT_VAR(&elements); - array_init(&elements); - zephir_is_iterable(&links, 0, "phalcon/Html/Link/Serializer/Header.zep", 70); - if (Z_TYPE_P(&links) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&links), _0) - { - ZEPHIR_INIT_NVAR(&link); - ZVAL_COPY(&link, _0); - ZEPHIR_CALL_METHOD(&_2$$3, &link, "istemplated", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_2$$3)) { - continue; - } - ZEPHIR_CALL_METHOD(&attributes, &link, "getattributes", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&rels, &link, "getrels", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&parts); - zephir_create_array(&parts, 2, 0); - ZEPHIR_INIT_NVAR(&_3$$3); - ZVAL_STRING(&_3$$3, ""); - zephir_array_fast_append(&parts, &_3$$3); - ZEPHIR_INIT_NVAR(&_3$$3); - zephir_fast_join_str(&_3$$3, SL(" "), &rels); - ZEPHIR_INIT_NVAR(&_4$$3); - ZEPHIR_CONCAT_SVS(&_4$$3, "rel=\"", &_3$$3, "\""); - zephir_array_fast_append(&parts, &_4$$3); - zephir_is_iterable(&attributes, 0, "phalcon/Html/Link/Serializer/Header.zep", 64); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&attributes), _7$$3, _8$$3, _5$$3) - { - ZEPHIR_INIT_NVAR(&key); - if (_8$$3 != NULL) { - ZVAL_STR_COPY(&key, _8$$3); - } else { - ZVAL_LONG(&key, _7$$3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _5$$3); - if (Z_TYPE_P(&value) == IS_ARRAY) { - zephir_is_iterable(&value, 0, "phalcon/Html/Link/Serializer/Header.zep", 50); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&value), _9$$6) - { - ZEPHIR_INIT_NVAR(&subValue); - ZVAL_COPY(&subValue, _9$$6); - ZEPHIR_INIT_NVAR(&_11$$7); - ZEPHIR_CONCAT_VSVS(&_11$$7, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_11$$7, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_10$$6, &value, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_10$$6)) { - break; - } - ZEPHIR_CALL_METHOD(&subValue, &value, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_12$$8); - ZEPHIR_CONCAT_VSVS(&_12$$8, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_12$$8, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&subValue); - continue; - } - if (((Z_TYPE_P(&value) == IS_TRUE || Z_TYPE_P(&value) == IS_FALSE) != 1)) { - ZEPHIR_INIT_NVAR(&_13$$9); - ZEPHIR_CONCAT_VSVS(&_13$$9, &key, "=\"", &value, "\""); - zephir_array_append(&parts, &_13$$9, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 54); - continue; - } - if (ZEPHIR_IS_TRUE_IDENTICAL(&value)) { - zephir_array_append(&parts, &key, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 59); - continue; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_6$$3, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_6$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &attributes, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &attributes, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&value) == IS_ARRAY) { - zephir_is_iterable(&value, 0, "phalcon/Html/Link/Serializer/Header.zep", 50); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&value), _14$$12) - { - ZEPHIR_INIT_NVAR(&subValue); - ZVAL_COPY(&subValue, _14$$12); - ZEPHIR_INIT_NVAR(&_16$$13); - ZEPHIR_CONCAT_VSVS(&_16$$13, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_16$$13, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_15$$12, &value, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_15$$12)) { - break; - } - ZEPHIR_CALL_METHOD(&subValue, &value, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_17$$14); - ZEPHIR_CONCAT_VSVS(&_17$$14, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_17$$14, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&subValue); - continue; - } - if (((Z_TYPE_P(&value) == IS_TRUE || Z_TYPE_P(&value) == IS_FALSE) != 1)) { - ZEPHIR_INIT_NVAR(&_18$$15); - ZEPHIR_CONCAT_VSVS(&_18$$15, &key, "=\"", &value, "\""); - zephir_array_append(&parts, &_18$$15, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 54); - continue; - } - if (ZEPHIR_IS_TRUE_IDENTICAL(&value)) { - zephir_array_append(&parts, &key, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 59); - continue; - } - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - ZEPHIR_CALL_METHOD(&_19$$3, &link, "gethref", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_20$$3); - zephir_fast_join_str(&_20$$3, SL("; "), &parts); - ZEPHIR_INIT_NVAR(&_4$$3); - ZEPHIR_CONCAT_SVSV(&_4$$3, "<", &_19$$3, ">", &_20$$3); - zephir_array_append(&elements, &_4$$3, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 67); - } ZEND_HASH_FOREACH_END(); + zephir_fetch_params(1, 1, 1, &data_param, &options_param); + zephir_get_strval(&data, data_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - ZEPHIR_CALL_METHOD(NULL, &links, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &links, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&link, &links, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_21$$17, &link, "istemplated", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_21$$17)) { - continue; - } - ZEPHIR_CALL_METHOD(&attributes, &link, "getattributes", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&rels, &link, "getrels", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_22$$17); - zephir_create_array(&_22$$17, 2, 0); - ZEPHIR_INIT_NVAR(&_23$$17); - ZVAL_STRING(&_23$$17, ""); - zephir_array_fast_append(&_22$$17, &_23$$17); - ZEPHIR_INIT_NVAR(&_23$$17); - zephir_fast_join_str(&_23$$17, SL(" "), &rels); - ZEPHIR_INIT_NVAR(&_24$$17); - ZEPHIR_CONCAT_SVS(&_24$$17, "rel=\"", &_23$$17, "\""); - zephir_array_fast_append(&_22$$17, &_24$$17); - ZEPHIR_CPY_WRT(&parts, &_22$$17); - zephir_is_iterable(&attributes, 0, "phalcon/Html/Link/Serializer/Header.zep", 64); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&attributes), _27$$17, _28$$17, _25$$17) - { - ZEPHIR_INIT_NVAR(&key); - if (_28$$17 != NULL) { - ZVAL_STR_COPY(&key, _28$$17); - } else { - ZVAL_LONG(&key, _27$$17); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _25$$17); - if (Z_TYPE_P(&value) == IS_ARRAY) { - zephir_is_iterable(&value, 0, "phalcon/Html/Link/Serializer/Header.zep", 50); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&value), _29$$20) - { - ZEPHIR_INIT_NVAR(&subValue); - ZVAL_COPY(&subValue, _29$$20); - ZEPHIR_INIT_NVAR(&_31$$21); - ZEPHIR_CONCAT_VSVS(&_31$$21, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_31$$21, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_30$$20, &value, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_30$$20)) { - break; - } - ZEPHIR_CALL_METHOD(&subValue, &value, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_32$$22); - ZEPHIR_CONCAT_VSVS(&_32$$22, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_32$$22, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&subValue); - continue; - } - if (((Z_TYPE_P(&value) == IS_TRUE || Z_TYPE_P(&value) == IS_FALSE) != 1)) { - ZEPHIR_INIT_NVAR(&_33$$23); - ZEPHIR_CONCAT_VSVS(&_33$$23, &key, "=\"", &value, "\""); - zephir_array_append(&parts, &_33$$23, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 54); - continue; - } - if (ZEPHIR_IS_TRUE_IDENTICAL(&value)) { - zephir_array_append(&parts, &key, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 59); - continue; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_26$$17, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_26$$17)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &attributes, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &attributes, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&value) == IS_ARRAY) { - zephir_is_iterable(&value, 0, "phalcon/Html/Link/Serializer/Header.zep", 50); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&value), _34$$26) - { - ZEPHIR_INIT_NVAR(&subValue); - ZVAL_COPY(&subValue, _34$$26); - ZEPHIR_INIT_NVAR(&_36$$27); - ZEPHIR_CONCAT_VSVS(&_36$$27, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_36$$27, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_35$$26, &value, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_35$$26)) { - break; - } - ZEPHIR_CALL_METHOD(&subValue, &value, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_37$$28); - ZEPHIR_CONCAT_VSVS(&_37$$28, &key, "=\"", &subValue, "\""); - zephir_array_append(&parts, &_37$$28, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 48); - ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&subValue); - continue; - } - if (((Z_TYPE_P(&value) == IS_TRUE || Z_TYPE_P(&value) == IS_FALSE) != 1)) { - ZEPHIR_INIT_NVAR(&_38$$29); - ZEPHIR_CONCAT_VSVS(&_38$$29, &key, "=\"", &value, "\""); - zephir_array_append(&parts, &_38$$29, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 54); - continue; - } - if (ZEPHIR_IS_TRUE_IDENTICAL(&value)) { - zephir_array_append(&parts, &key, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 59); - continue; - } - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - ZEPHIR_CALL_METHOD(&_39$$17, &link, "gethref", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_40$$17); - zephir_fast_join_str(&_40$$17, SL("; "), &parts); - ZEPHIR_INIT_NVAR(&_24$$17); - ZEPHIR_CONCAT_SVSV(&_24$$17, "<", &_39$$17, ">", &_40$$17); - zephir_array_append(&elements, &_24$$17, PH_SEPARATE, "phalcon/Html/Link/Serializer/Header.zep", 67); - ZEPHIR_CALL_METHOD(NULL, &links, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&link); - if (zephir_fast_count_int(&elements) > 0) { - ZEPHIR_INIT_NVAR(&result); - zephir_fast_join_str(&result, SL(","), &elements); + zephir_get_arrval(&options, options_param); } - RETURN_CCTOR(&result); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Serializer_SerializerInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Link\\Serializer, SerializerInterface, phalcon, html_link_serializer_serializerinterface, phalcon_html_link_serializer_serializerinterface_method_entry); - - return SUCCESS; + ZEPHIR_RETURN_CALL_FUNCTION("unserialize", NULL, 16, &data, &options); + zephir_check_call_status(); + RETURN_MM(); } -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Serializer_SerializerInterface, serialize); @@ -24105,19 +24009,13 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Serializer_SerializerInterface, serialize); -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_RedisIgbinary) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Link\\Interfaces, EvolvableLinkInterface, phalcon, html_link_interfaces_evolvablelinkinterface, phalcon_html_link_interfaces_evolvablelinkinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, RedisIgbinary, phalcon, storage_serializer_redisigbinary, phalcon_storage_serializer_none_ce, NULL, 0); - zend_class_implements(phalcon_html_link_interfaces_evolvablelinkinterface_ce, 1, phalcon_html_link_interfaces_linkinterface_ce); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withHref); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withRel); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withoutRel); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withAttribute); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withoutAttribute); @@ -24128,16 +24026,13 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkInterface, withoutAt -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Interfaces_EvolvableLinkProviderInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_RedisJson) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Link\\Interfaces, EvolvableLinkProviderInterface, phalcon, html_link_interfaces_evolvablelinkproviderinterface, phalcon_html_link_interfaces_evolvablelinkproviderinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, RedisJson, phalcon, storage_serializer_redisjson, phalcon_storage_serializer_none_ce, NULL, 0); - zend_class_implements(phalcon_html_link_interfaces_evolvablelinkproviderinterface_ce, 1, phalcon_html_link_interfaces_linkproviderinterface_ce); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkProviderInterface, withLink); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkProviderInterface, withoutLink); @@ -24148,17 +24043,13 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_EvolvableLinkProviderInterface, w -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Interfaces_LinkInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_RedisMsgpack) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Link\\Interfaces, LinkInterface, phalcon, html_link_interfaces_linkinterface, phalcon_html_link_interfaces_linkinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, RedisMsgpack, phalcon, storage_serializer_redismsgpack, phalcon_storage_serializer_none_ce, NULL, 0); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkInterface, getAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkInterface, getHref); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkInterface, getRels); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkInterface, isTemplated); @@ -24169,15 +24060,13 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkInterface, isTemplated); -ZEPHIR_INIT_CLASS(Phalcon_Html_Link_Interfaces_LinkProviderInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_RedisNone) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Link\\Interfaces, LinkProviderInterface, phalcon, html_link_interfaces_linkproviderinterface, phalcon_html_link_interfaces_linkproviderinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, RedisNone, phalcon, storage_serializer_redisnone, phalcon_storage_serializer_none_ce, NULL, 0); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkProviderInterface, getLinks); -ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkProviderInterface, getLinksByRel); @@ -24188,15 +24077,13 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Link_Interfaces_LinkProviderInterface, getLinksBy -ZEPHIR_INIT_CLASS(Phalcon_Html_Attributes_AttributesInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_RedisPhp) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Attributes, AttributesInterface, phalcon, html_attributes_attributesinterface, phalcon_html_attributes_attributesinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Storage\\Serializer, RedisPhp, phalcon, storage_serializer_redisphp, phalcon_storage_serializer_none_ce, NULL, 0); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Attributes_AttributesInterface, getAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Html_Attributes_AttributesInterface, setAttributes); @@ -24207,14 +24094,16 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Attributes_AttributesInterface, setAttributes); -ZEPHIR_INIT_CLASS(Phalcon_Html_Attributes_RenderInterface) +ZEPHIR_INIT_CLASS(Phalcon_Storage_Serializer_SerializerInterface) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Html\\Attributes, RenderInterface, phalcon, html_attributes_renderinterface, phalcon_html_attributes_renderinterface_method_entry); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Storage\\Serializer, SerializerInterface, phalcon, storage_serializer_serializerinterface, phalcon_storage_serializer_serializerinterface_method_entry); + zend_class_implements(phalcon_storage_serializer_serializerinterface_ce, 1, zend_ce_serializable); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Html_Attributes_RenderInterface, render); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Serializer_SerializerInterface, getData); +ZEPHIR_DOC_METHOD(Phalcon_Storage_Serializer_SerializerInterface, setData); @@ -24225,841 +24114,959 @@ ZEPHIR_DOC_METHOD(Phalcon_Html_Attributes_RenderInterface, render); -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_AbstractHelper) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Html\\Helper, AbstractHelper, phalcon, html_helper_abstracthelper, phalcon_html_helper_abstracthelper_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_string(phalcon_html_helper_abstracthelper_ce, SL("delimiter"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_helper_abstracthelper_ce, SL("escaper"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_abstracthelper_ce, SL("indent"), " ", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_html_helper_abstracthelper_ce, SL("indentLevel"), 1, ZEND_ACC_PROTECTED); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, __construct) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Console) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *escaper, escaper_sub, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&escaper_sub); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(escaper, phalcon_html_escaper_escaperinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &escaper); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli, Console, phalcon, cli_console, phalcon_application_abstractapplication_ce, phalcon_cli_console_method_entry, 0); + zend_declare_property_null(phalcon_cli_console_ce, SL("arguments"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_console_ce, SL("options"), ZEND_ACC_PROTECTED); + phalcon_cli_console_ce->create_object = zephir_init_properties_Phalcon_Cli_Console; - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_GET_CONSTANT(&_0, "PHP_EOL"); - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("escaper"), escaper); - ZEPHIR_MM_RESTORE(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, close) +static PHP_METHOD(Phalcon_Cli_Console, handle) { + zend_bool _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *tag_param = NULL, *raw_param = NULL, _0, _1; - zval tag; + zval *arguments_param = NULL, __$false, className, container, dispatcher, eventsManager, module, moduleName, moduleObject, modules, path, router, task, _0, _3, _4, _16, _17, _18, _19, _1$$4, _2$$4, _6$$6, _7$$10, _8$$10, _9$$9, _10$$12, _11$$12, _12$$16, _13$$16, _14$$18, _15$$18, _20$$20, _21$$20, _22$$22; + zval arguments; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); + ZVAL_UNDEF(&arguments); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&className); + ZVAL_UNDEF(&container); + ZVAL_UNDEF(&dispatcher); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&module); + ZVAL_UNDEF(&moduleName); + ZVAL_UNDEF(&moduleObject); + ZVAL_UNDEF(&modules); + ZVAL_UNDEF(&path); + ZVAL_UNDEF(&router); + ZVAL_UNDEF(&task); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_16); + ZVAL_UNDEF(&_17); + ZVAL_UNDEF(&_18); + ZVAL_UNDEF(&_19); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$10); + ZVAL_UNDEF(&_8$$10); + ZVAL_UNDEF(&_9$$9); + ZVAL_UNDEF(&_10$$12); + ZVAL_UNDEF(&_11$$12); + ZVAL_UNDEF(&_12$$16); + ZVAL_UNDEF(&_13$$16); + ZVAL_UNDEF(&_14$$18); + ZVAL_UNDEF(&_15$$18); + ZVAL_UNDEF(&_20$$20); + ZVAL_UNDEF(&_21$$20); + ZVAL_UNDEF(&_22$$22); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(tag) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) + Z_PARAM_ARRAY_OR_NULL(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &tag_param, &raw_param); - zephir_get_strval(&tag, tag_param); - if (!raw_param) { - raw = 0; + zephir_fetch_params(1, 0, 1, &arguments_param); + if (!arguments_param) { + ZEPHIR_INIT_VAR(&arguments); } else { - raw = zephir_get_boolval(raw_param); + zephir_get_arrval(&arguments, arguments_param); } - ZEPHIR_INIT_VAR(&_0); - if (raw) { - ZEPHIR_CPY_WRT(&_0, &tag); + zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&container, &_0); + if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_console_exception_ce, "A dependency injection container is required to access internal services", "phalcon/Cli/Console.zep", 47); + return; + } + zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_0); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_2$$4); + ZVAL_STRING(&_2$$4, "console:boot"); + ZEPHIR_CALL_METHOD(&_1$$4, &eventsManager, "fire", NULL, 0, &_2$$4, this_ptr); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$4)) { + RETURN_MM_BOOL(0); + } + } + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "router"); + ZEPHIR_CALL_METHOD(&_3, &container, "getshared", NULL, 0, &_4); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&router, &_3); + _5 = !(zephir_fast_count_int(&arguments)); + if (_5) { + zephir_read_property(&_0, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + _5 = zephir_is_true(&_0); + } + if (_5) { + zephir_read_property(&_6$$6, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &router, "handle", NULL, 0, &_6$$6); + zephir_check_call_status(); } else { - zephir_read_property(&_1, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_0, &_1, "html", NULL, 0, &tag); + ZEPHIR_CALL_METHOD(NULL, &router, "handle", NULL, 0, &arguments); zephir_check_call_status(); } - zephir_get_strval(&tag, &_0); - ZEPHIR_CONCAT_SVS(return_value, ""); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, indent) -{ - zval _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - - - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("indent"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("indentLevel"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_FUNCTION("str_repeat", NULL, 1, &_0, &_1); + ZEPHIR_CALL_METHOD(&moduleName, &router, "getmodulename", NULL, 0); zephir_check_call_status(); - RETURN_MM(); + if (!(zephir_is_true(&moduleName))) { + ZEPHIR_OBS_NVAR(&moduleName); + zephir_read_property(&moduleName, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC); + } + if (zephir_is_true(&moduleName)) { + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_8$$10); + ZVAL_STRING(&_8$$10, "console:beforeStartModule"); + ZEPHIR_CALL_METHOD(&_7$$10, &eventsManager, "fire", NULL, 0, &_8$$10, this_ptr, &moduleName); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_7$$10)) { + RETURN_MM_BOOL(0); + } + } + zephir_read_property(&_9$$9, this_ptr, ZEND_STRL("modules"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&modules, &_9$$9); + if (UNEXPECTED(!(zephir_array_isset(&modules, &moduleName)))) { + ZEPHIR_INIT_VAR(&_10$$12); + object_init_ex(&_10$$12, phalcon_cli_console_exception_ce); + ZEPHIR_INIT_VAR(&_11$$12); + ZEPHIR_CONCAT_SVS(&_11$$12, "Module '", &moduleName, "' isn't registered in the console container"); + ZEPHIR_CALL_METHOD(NULL, &_10$$12, "__construct", NULL, 29, &_11$$12); + zephir_check_call_status(); + zephir_throw_exception_debug(&_10$$12, "phalcon/Cli/Console.zep", 91); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_VAR(&module); + zephir_array_fetch(&module, &modules, &moduleName, PH_NOISY, "phalcon/Cli/Console.zep", 94); + if (UNEXPECTED(Z_TYPE_P(&module) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_console_exception_ce, "Invalid module definition path", "phalcon/Cli/Console.zep", 97); + return; + } + ZEPHIR_OBS_VAR(&className); + if (!(zephir_array_isset_string_fetch(&className, &module, SL("className"), 0))) { + ZEPHIR_INIT_NVAR(&className); + ZVAL_STRING(&className, "Module"); + } + ZEPHIR_OBS_VAR(&path); + if (zephir_array_isset_string_fetch(&path, &module, SL("path"), 0)) { + if (UNEXPECTED(!((zephir_file_exists(&path) == SUCCESS)))) { + ZEPHIR_INIT_VAR(&_12$$16); + object_init_ex(&_12$$16, phalcon_cli_console_exception_ce); + ZEPHIR_INIT_VAR(&_13$$16); + ZEPHIR_CONCAT_SVS(&_13$$16, "Module definition path '", &path, "' doesn't exist"); + ZEPHIR_CALL_METHOD(NULL, &_12$$16, "__construct", NULL, 29, &_13$$16); + zephir_check_call_status(); + zephir_throw_exception_debug(&_12$$16, "phalcon/Cli/Console.zep", 108); + ZEPHIR_MM_RESTORE(); + return; + } + if (!(zephir_class_exists(&className, zephir_is_true(&__$false) ))) { + if (zephir_require_once_zval(&path) == FAILURE) { + RETURN_MM_NULL(); + } + } + } + ZEPHIR_CALL_METHOD(&moduleObject, &container, "get", NULL, 0, &className); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &moduleObject, "registerautoloaders", NULL, 0, &container); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &moduleObject, "registerservices", NULL, 0, &container); + zephir_check_call_status(); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_15$$18); + ZVAL_STRING(&_15$$18, "console:afterStartModule"); + ZEPHIR_CALL_METHOD(&_14$$18, &eventsManager, "fire", NULL, 0, &_15$$18, this_ptr, &moduleObject); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_14$$18)) { + RETURN_MM_BOOL(0); + } + } + } + ZEPHIR_INIT_NVAR(&_4); + ZVAL_STRING(&_4, "dispatcher"); + ZEPHIR_CALL_METHOD(&_3, &container, "getshared", NULL, 0, &_4); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&dispatcher, &_3); + ZEPHIR_CALL_METHOD(&_3, &router, "getmodulename", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setmodulename", NULL, 0, &_3); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_16, &router, "gettaskname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &dispatcher, "settaskname", NULL, 0, &_16); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_17, &router, "getactionname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setactionname", NULL, 0, &_17); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_18, &router, "getparams", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setparams", NULL, 0, &_18); + zephir_check_call_status(); + zephir_read_property(&_19, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setoptions", NULL, 0, &_19); + zephir_check_call_status(); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_21$$20); + ZVAL_STRING(&_21$$20, "console:beforeHandleTask"); + ZEPHIR_CALL_METHOD(&_20$$20, &eventsManager, "fire", NULL, 0, &_21$$20, this_ptr, &dispatcher); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_20$$20)) { + RETURN_MM_BOOL(0); + } + } + ZEPHIR_CALL_METHOD(&task, &dispatcher, "dispatch", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_22$$22); + ZVAL_STRING(&_22$$22, "console:afterHandleTask"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_22$$22, this_ptr, &task); + zephir_check_call_status(); + } + RETURN_CCTOR(&task); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, orderAttributes) +static PHP_METHOD(Phalcon_Cli_Console, setArgument) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_6 = NULL, *_44 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *overrides_param = NULL, *attributes_param = NULL, __$null, intersect, results, _0; - zval overrides, attributes, order; + zend_bool str, shift, _0; + zval *arguments_param = NULL, *str_param = NULL, *shift_param = NULL, __$true, arg, pos, args, opts, handleArgs, *_1, _2, _3$$5, _4$$5, _5$$5, _7$$6, _8$$7, _9$$7, _10$$7, _11$$7, _12$$7, _13$$7, _14$$7, _15$$8, _16$$8, _17$$8, _18$$9, _19$$9, _20$$9, _21$$10, _22$$10, _23$$14, _24$$14, _25$$14, _26$$15, _27$$16, _28$$16, _29$$16, _30$$16, _31$$16, _32$$16, _33$$16, _34$$17, _35$$17, _36$$17, _37$$18, _38$$18, _39$$18, _40$$19, _41$$19, _42$$22, _43$$22, _45$$24, _46$$25, _47$$26; + zval arguments; zval *this_ptr = getThis(); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&order); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&intersect); - ZVAL_UNDEF(&results); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&arguments); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&arg); + ZVAL_UNDEF(&pos); + ZVAL_UNDEF(&args); + ZVAL_UNDEF(&opts); + ZVAL_UNDEF(&handleArgs); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_10$$7); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_13$$7); + ZVAL_UNDEF(&_14$$7); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_18$$9); + ZVAL_UNDEF(&_19$$9); + ZVAL_UNDEF(&_20$$9); + ZVAL_UNDEF(&_21$$10); + ZVAL_UNDEF(&_22$$10); + ZVAL_UNDEF(&_23$$14); + ZVAL_UNDEF(&_24$$14); + ZVAL_UNDEF(&_25$$14); + ZVAL_UNDEF(&_26$$15); + ZVAL_UNDEF(&_27$$16); + ZVAL_UNDEF(&_28$$16); + ZVAL_UNDEF(&_29$$16); + ZVAL_UNDEF(&_30$$16); + ZVAL_UNDEF(&_31$$16); + ZVAL_UNDEF(&_32$$16); + ZVAL_UNDEF(&_33$$16); + ZVAL_UNDEF(&_34$$17); + ZVAL_UNDEF(&_35$$17); + ZVAL_UNDEF(&_36$$17); + ZVAL_UNDEF(&_37$$18); + ZVAL_UNDEF(&_38$$18); + ZVAL_UNDEF(&_39$$18); + ZVAL_UNDEF(&_40$$19); + ZVAL_UNDEF(&_41$$19); + ZVAL_UNDEF(&_42$$22); + ZVAL_UNDEF(&_43$$22); + ZVAL_UNDEF(&_45$$24); + ZVAL_UNDEF(&_46$$25); + ZVAL_UNDEF(&_47$$26); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ARRAY(overrides) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(0, 3) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY_OR_NULL(arguments) + Z_PARAM_BOOL(str) + Z_PARAM_BOOL(shift) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &overrides_param, &attributes_param); - zephir_get_arrval(&overrides, overrides_param); - zephir_get_arrval(&attributes, attributes_param); - - - ZEPHIR_INIT_VAR(&order); - zephir_create_array(&order, 10, 0); - zephir_array_update_string(&order, SL("rel"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("type"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("for"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("src"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("href"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("action"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("id"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("name"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("value"), &__$null, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&order, SL("class"), &__$null, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_FUNCTION(&intersect, "array_intersect_key", NULL, 2, &order, &attributes); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&results); - zephir_fast_array_merge(&results, &intersect, &attributes); - ZEPHIR_INIT_VAR(&_0); - zephir_fast_array_merge(&_0, &overrides, &results); - ZEPHIR_CPY_WRT(&results, &_0); - zephir_array_unset_string(&results, SL("escape"), PH_SEPARATE); - RETURN_CCTOR(&results); -} - -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, renderArrayElements) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval delimiter; - zval *elements_param = NULL, *delimiter_param = NULL, item, result, *_0, _1, _2$$3, _3$$3, _5$$3, _6$$3, _7$$3, _8$$4, _9$$4, _11$$4, _12$$4, _13$$4; - zval elements, _4$$3, _10$$4; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&elements); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_10$$4); - ZVAL_UNDEF(&item); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_8$$4); - ZVAL_UNDEF(&_9$$4); - ZVAL_UNDEF(&_11$$4); - ZVAL_UNDEF(&_12$$4); - ZVAL_UNDEF(&_13$$4); - ZVAL_UNDEF(&delimiter); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ARRAY(elements) - Z_PARAM_STR(delimiter) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &elements_param, &delimiter_param); - zephir_get_arrval(&elements, elements_param); - zephir_get_strval(&delimiter, delimiter_param); - - - ZEPHIR_INIT_VAR(&result); - ZVAL_STRING(&result, ""); - zephir_is_iterable(&elements, 0, "phalcon/Html/Helper/AbstractHelper.zep", 140); - if (Z_TYPE_P(&elements) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&elements), _0) - { - ZEPHIR_INIT_NVAR(&item); - ZVAL_COPY(&item, _0); - zephir_array_fetch_long(&_2$$3, &item, 2, PH_NOISY | PH_READONLY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - ZEPHIR_INIT_NVAR(&_3$$3); - ZEPHIR_INIT_NVAR(&_4$$3); - zephir_create_array(&_4$$3, 2, 0); - zephir_array_fast_append(&_4$$3, this_ptr); - ZEPHIR_OBS_NVAR(&_5$$3); - zephir_array_fetch_long(&_5$$3, &item, 0, PH_NOISY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - zephir_array_fast_append(&_4$$3, &_5$$3); - zephir_array_fetch_long(&_6$$3, &item, 1, PH_NOISY | PH_READONLY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_3$$3, &_4$$3, &_6$$3); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_7$$3); - ZEPHIR_CONCAT_VVV(&_7$$3, &_2$$3, &_3$$3, &delimiter); - zephir_concat_self(&result, &_7$$3); - } ZEND_HASH_FOREACH_END(); + zephir_fetch_params(1, 0, 3, &arguments_param, &str_param, &shift_param); + if (!arguments_param) { + ZEPHIR_INIT_VAR(&arguments); } else { - ZEPHIR_CALL_METHOD(NULL, &elements, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &elements, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&item, &elements, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_fetch_long(&_8$$4, &item, 2, PH_NOISY | PH_READONLY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - ZEPHIR_INIT_NVAR(&_9$$4); - ZEPHIR_INIT_NVAR(&_10$$4); - zephir_create_array(&_10$$4, 2, 0); - zephir_array_fast_append(&_10$$4, this_ptr); - ZEPHIR_OBS_NVAR(&_11$$4); - zephir_array_fetch_long(&_11$$4, &item, 0, PH_NOISY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - zephir_array_fast_append(&_10$$4, &_11$$4); - zephir_array_fetch_long(&_12$$4, &item, 1, PH_NOISY | PH_READONLY, "phalcon/Html/Helper/AbstractHelper.zep", 136); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_9$$4, &_10$$4, &_12$$4); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_13$$4); - ZEPHIR_CONCAT_VVV(&_13$$4, &_8$$4, &_9$$4, &delimiter); - zephir_concat_self(&result, &_13$$4); - ZEPHIR_CALL_METHOD(NULL, &elements, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_OBS_COPY_OR_DUP(&arguments, arguments_param); + } + if (!str_param) { + str = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(str_param) != IS_TRUE && Z_TYPE_P(str_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'str' must be of the type bool")); + RETURN_MM_NULL(); + } + str = (Z_TYPE_P(str_param) == IS_TRUE); + } + if (!shift_param) { + shift = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(shift_param) != IS_TRUE && Z_TYPE_P(shift_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'shift' must be of the type bool")); + RETURN_MM_NULL(); + } + shift = (Z_TYPE_P(shift_param) == IS_TRUE); } - ZEPHIR_INIT_NVAR(&item); - RETURN_CCTOR(&result); -} - -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, renderAttributes) -{ - zend_bool _4$$3, _8$$5; - zend_string *_3; - zend_ulong _2; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, key, result, value, *_0, _1, _5$$4, _6$$4, _7$$4, _9$$6, _10$$6, _11$$6; - zval attributes; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_9$$6); - ZVAL_UNDEF(&_10$$6); - ZVAL_UNDEF(&_11$$6); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - zephir_get_arrval(&attributes, attributes_param); - ZEPHIR_INIT_VAR(&result); - ZVAL_STRING(&result, ""); - zephir_is_iterable(&attributes, 0, "phalcon/Html/Helper/AbstractHelper.zep", 161); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&attributes), _2, _3, _0) + ZEPHIR_INIT_VAR(&args); + array_init(&args); + ZEPHIR_INIT_VAR(&opts); + array_init(&opts); + ZEPHIR_INIT_VAR(&handleArgs); + array_init(&handleArgs); + _0 = shift; + if (_0) { + _0 = ((zephir_fast_count_int(&arguments)) ? 1 : 0); + } + if (_0) { + ZEPHIR_MAKE_REF(&arguments); + ZEPHIR_CALL_FUNCTION(NULL, "array_shift", NULL, 21, &arguments); + ZEPHIR_UNREF(&arguments); + zephir_check_call_status(); + } + zephir_is_iterable(&arguments, 0, "phalcon/Cli/Console.zep", 189); + if (Z_TYPE_P(&arguments) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&arguments), _1) { - ZEPHIR_INIT_NVAR(&key); - if (_3 != NULL) { - ZVAL_STR_COPY(&key, _3); - } else { - ZVAL_LONG(&key, _2); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0); - _4$$3 = Z_TYPE_P(&key) == IS_STRING; - if (_4$$3) { - _4$$3 = Z_TYPE_P(&value) != IS_NULL; - } - if (_4$$3) { - zephir_read_property(&_5$$4, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_6$$4, &_5$$4, "attributes", NULL, 0, &value); + ZEPHIR_INIT_NVAR(&arg); + ZVAL_COPY(&arg, _1); + if (Z_TYPE_P(&arg) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_3$$5); + ZVAL_STRING(&_3$$5, "--"); + ZVAL_LONG(&_4$$5, 2); + ZEPHIR_CALL_FUNCTION(&_5$$5, "strncmp", &_6, 183, &arg, &_3$$5, &_4$$5); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_7$$4); - ZEPHIR_CONCAT_VSVS(&_7$$4, &key, "=\"", &_6$$4, "\" "); - zephir_concat_self(&result, &_7$$4); + if (ZEPHIR_IS_LONG(&_5$$5, 0)) { + ZEPHIR_INIT_NVAR(&_7$$6); + ZVAL_STRING(&_7$$6, "="); + ZEPHIR_INIT_NVAR(&pos); + zephir_fast_strpos(&pos, &arg, &_7$$6, 0 ); + if (zephir_is_true(&pos)) { + ZEPHIR_INIT_NVAR(&_8$$7); + ZVAL_LONG(&_9$$7, (zephir_get_numberval(&pos) + 1)); + ZEPHIR_INIT_NVAR(&_10$$7); + zephir_substr(&_10$$7, &arg, zephir_get_intval(&_9$$7), 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_fast_trim(&_8$$7, &_10$$7, NULL , ZEPHIR_TRIM_BOTH); + ZEPHIR_INIT_NVAR(&_11$$7); + ZVAL_LONG(&_12$$7, 2); + ZVAL_LONG(&_13$$7, (zephir_get_numberval(&pos) - 2)); + ZEPHIR_INIT_NVAR(&_14$$7); + zephir_substr(&_14$$7, &arg, 2 , zephir_get_intval(&_13$$7), 0); + zephir_fast_trim(&_11$$7, &_14$$7, NULL , ZEPHIR_TRIM_BOTH); + zephir_array_update_zval(&opts, &_11$$7, &_8$$7, PH_COPY | PH_SEPARATE); + } else { + ZEPHIR_INIT_NVAR(&_15$$8); + ZVAL_LONG(&_16$$8, 2); + ZEPHIR_INIT_NVAR(&_17$$8); + zephir_substr(&_17$$8, &arg, 2 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_fast_trim(&_15$$8, &_17$$8, NULL , ZEPHIR_TRIM_BOTH); + zephir_array_update_zval(&opts, &_15$$8, &__$true, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_INIT_NVAR(&_18$$9); + ZVAL_STRING(&_18$$9, "-"); + ZVAL_LONG(&_19$$9, 1); + ZEPHIR_CALL_FUNCTION(&_20$$9, "strncmp", &_6, 183, &arg, &_18$$9, &_19$$9); + zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&_20$$9, 0)) { + ZVAL_LONG(&_21$$10, 1); + ZEPHIR_INIT_NVAR(&_22$$10); + zephir_substr(&_22$$10, &arg, 1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_array_update_zval(&opts, &_22$$10, &__$true, PH_COPY | PH_SEPARATE); + } else { + zephir_array_append(&args, &arg, PH_SEPARATE, "phalcon/Cli/Console.zep", 181); + } + } + } else { + zephir_array_append(&args, &arg, PH_SEPARATE, "phalcon/Cli/Console.zep", 185); } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &arguments, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_1, &attributes, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, &arguments, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_1)) { + if (!zend_is_true(&_2)) { break; } - ZEPHIR_CALL_METHOD(&key, &attributes, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &attributes, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&arg, &arguments, "current", NULL, 0); zephir_check_call_status(); - _8$$5 = Z_TYPE_P(&key) == IS_STRING; - if (_8$$5) { - _8$$5 = Z_TYPE_P(&value) != IS_NULL; - } - if (_8$$5) { - zephir_read_property(&_9$$6, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_10$$6, &_9$$6, "attributes", NULL, 0, &value); + if (Z_TYPE_P(&arg) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_23$$14); + ZVAL_STRING(&_23$$14, "--"); + ZVAL_LONG(&_24$$14, 2); + ZEPHIR_CALL_FUNCTION(&_25$$14, "strncmp", &_6, 183, &arg, &_23$$14, &_24$$14); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_11$$6); - ZEPHIR_CONCAT_VSVS(&_11$$6, &key, "=\"", &_10$$6, "\" "); - zephir_concat_self(&result, &_11$$6); + if (ZEPHIR_IS_LONG(&_25$$14, 0)) { + ZEPHIR_INIT_NVAR(&_26$$15); + ZVAL_STRING(&_26$$15, "="); + ZEPHIR_INIT_NVAR(&pos); + zephir_fast_strpos(&pos, &arg, &_26$$15, 0 ); + if (zephir_is_true(&pos)) { + ZEPHIR_INIT_NVAR(&_27$$16); + ZVAL_LONG(&_28$$16, (zephir_get_numberval(&pos) + 1)); + ZEPHIR_INIT_NVAR(&_29$$16); + zephir_substr(&_29$$16, &arg, zephir_get_intval(&_28$$16), 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_fast_trim(&_27$$16, &_29$$16, NULL , ZEPHIR_TRIM_BOTH); + ZEPHIR_INIT_NVAR(&_30$$16); + ZVAL_LONG(&_31$$16, 2); + ZVAL_LONG(&_32$$16, (zephir_get_numberval(&pos) - 2)); + ZEPHIR_INIT_NVAR(&_33$$16); + zephir_substr(&_33$$16, &arg, 2 , zephir_get_intval(&_32$$16), 0); + zephir_fast_trim(&_30$$16, &_33$$16, NULL , ZEPHIR_TRIM_BOTH); + zephir_array_update_zval(&opts, &_30$$16, &_27$$16, PH_COPY | PH_SEPARATE); + } else { + ZEPHIR_INIT_NVAR(&_34$$17); + ZVAL_LONG(&_35$$17, 2); + ZEPHIR_INIT_NVAR(&_36$$17); + zephir_substr(&_36$$17, &arg, 2 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_fast_trim(&_34$$17, &_36$$17, NULL , ZEPHIR_TRIM_BOTH); + zephir_array_update_zval(&opts, &_34$$17, &__$true, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_INIT_NVAR(&_37$$18); + ZVAL_STRING(&_37$$18, "-"); + ZVAL_LONG(&_38$$18, 1); + ZEPHIR_CALL_FUNCTION(&_39$$18, "strncmp", &_6, 183, &arg, &_37$$18, &_38$$18); + zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&_39$$18, 0)) { + ZVAL_LONG(&_40$$19, 1); + ZEPHIR_INIT_NVAR(&_41$$19); + zephir_substr(&_41$$19, &arg, 1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_array_update_zval(&opts, &_41$$19, &__$true, PH_COPY | PH_SEPARATE); + } else { + zephir_array_append(&args, &arg, PH_SEPARATE, "phalcon/Cli/Console.zep", 181); + } + } + } else { + zephir_array_append(&args, &arg, PH_SEPARATE, "phalcon/Cli/Console.zep", 185); } - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &arguments, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - RETURN_CCTOR(&result); + ZEPHIR_INIT_NVAR(&arg); + if (str) { + ZEPHIR_INIT_VAR(&_42$$22); + ZEPHIR_CALL_CE_STATIC(&_43$$22, phalcon_cli_router_route_ce, "getdelimiter", &_44, 0); + zephir_check_call_status(); + zephir_fast_join(&_42$$22, &_43$$22, &args); + zephir_update_property_zval(this_ptr, ZEND_STRL("arguments"), &_42$$22); + } else { + if (zephir_fast_count_int(&args)) { + ZEPHIR_MAKE_REF(&args); + ZEPHIR_CALL_FUNCTION(&_45$$24, "array_shift", NULL, 21, &args); + ZEPHIR_UNREF(&args); + zephir_check_call_status(); + zephir_array_update_string(&handleArgs, SL("task"), &_45$$24, PH_COPY | PH_SEPARATE); + } + if (zephir_fast_count_int(&args)) { + ZEPHIR_MAKE_REF(&args); + ZEPHIR_CALL_FUNCTION(&_46$$25, "array_shift", NULL, 21, &args); + ZEPHIR_UNREF(&args); + zephir_check_call_status(); + zephir_array_update_string(&handleArgs, SL("action"), &_46$$25, PH_COPY | PH_SEPARATE); + } + if (zephir_fast_count_int(&args)) { + ZEPHIR_INIT_VAR(&_47$$26); + zephir_fast_array_merge(&_47$$26, &handleArgs, &args); + ZEPHIR_CPY_WRT(&handleArgs, &_47$$26); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("arguments"), &handleArgs); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &opts); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, renderElement) +zend_object *zephir_init_properties_Phalcon_Cli_Console(zend_class_entry *class_type) { + zval _0, _2, _4, _1$$3, _3$$4, _5$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *tag_param = NULL, *attributes_param = NULL; - zval tag; - zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(tag) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("modules"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("modules"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("arguments"), &_5$$5); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &tag_param, &attributes_param); - zephir_get_strval(&tag, tag_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rendertag", NULL, 0, &tag, &attributes); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Cli_Dispatcher) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli, Dispatcher, phalcon, cli_dispatcher, phalcon_dispatcher_abstractdispatcher_ce, phalcon_cli_dispatcher_method_entry, 0); + + zend_declare_property_string(phalcon_cli_dispatcher_ce, SL("defaultHandler"), "main", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_cli_dispatcher_ce, SL("defaultAction"), "main", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_cli_dispatcher_ce, SL("handlerSuffix"), "Task", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_dispatcher_ce, SL("options"), ZEND_ACC_PROTECTED); + phalcon_cli_dispatcher_ce->create_object = zephir_init_properties_Phalcon_Cli_Dispatcher; + + zend_class_implements(phalcon_cli_dispatcher_ce, 1, phalcon_cli_dispatcherinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, renderFullElement) +static PHP_METHOD(Phalcon_Cli_Dispatcher, callActionMethod) { + zval _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes; - zval *tag_param = NULL, *text_param = NULL, *attributes_param = NULL, *raw_param = NULL, content, _0, _1, _2, _3; - zval tag, text; + zval actionMethod; + zval *handler, handler_sub, *actionMethod_param = NULL, params, *params_param = NULL, _0, _1, _2; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&content); + ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(¶ms); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&actionMethod); ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&attributes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_STR(tag) - Z_PARAM_STR(text) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_ZVAL(handler) + Z_PARAM_STR(actionMethod) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) + Z_PARAM_ARRAY(params) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &tag_param, &text_param, &attributes_param, &raw_param); - zephir_get_strval(&tag, tag_param); - zephir_get_strval(&text, text_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - if (!raw_param) { - raw = 0; + zephir_fetch_params(1, 2, 1, &handler, &actionMethod_param, ¶ms_param); + zephir_get_strval(&actionMethod, actionMethod_param); + if (!params_param) { + ZEPHIR_INIT_VAR(¶ms); + array_init(¶ms); } else { - raw = zephir_get_boolval(raw_param); + ZEPHIR_OBS_COPY_OR_DUP(¶ms, params_param); } - if (raw) { - ZEPHIR_CPY_WRT(&content, &text); - } else { - zephir_read_property(&_0, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&content, &_0, "html", NULL, 0, &text); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_1, this_ptr, "renderelement", NULL, 0, &tag, &attributes); + ZEPHIR_CALL_FUNCTION(&_0, "array_values", NULL, 14, ¶ms); zephir_check_call_status(); - if (raw) { - ZVAL_BOOL(&_3, 1); - } else { - ZVAL_BOOL(&_3, 0); - } - ZEPHIR_CALL_METHOD(&_2, this_ptr, "close", NULL, 0, &tag, &_3); + ZEPHIR_CPY_WRT(¶ms, &_0); + ZEPHIR_INIT_VAR(&_1); + zephir_read_property(&_2, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + zephir_fast_array_merge(&_1, ¶ms, &_2); + ZEPHIR_CPY_WRT(¶ms, &_1); + ZEPHIR_INIT_VAR(&_3); + zephir_create_array(&_3, 2, 0); + zephir_array_fast_append(&_3, handler); + zephir_array_fast_append(&_3, &actionMethod); + ZEPHIR_CALL_USER_FUNC_ARRAY(return_value, &_3, ¶ms); zephir_check_call_status(); - ZEPHIR_CONCAT_VVV(return_value, &_1, &content, &_2); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, renderTag) +static PHP_METHOD(Phalcon_Cli_Dispatcher, getActiveTask) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "activeHandler"); +} + +static PHP_METHOD(Phalcon_Cli_Dispatcher, getLastTask) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "lastHandler"); +} + +static PHP_METHOD(Phalcon_Cli_Dispatcher, getOption) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *tag_param = NULL, *attributes_param = NULL, close, *close_param = NULL, attrs, escapedAttrs, _3, _4, _5, _0$$3, _1$$3, _2$$3; - zval tag; + zval *option, option_sub, *filters = NULL, filters_sub, *defaultValue = NULL, defaultValue_sub, __$null, options, filter, optionValue, container, _0, _3, _4, _1$$5, _2$$5; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&close); - ZVAL_UNDEF(&attrs); - ZVAL_UNDEF(&escapedAttrs); + ZVAL_UNDEF(&option_sub); + ZVAL_UNDEF(&filters_sub); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&filter); + ZVAL_UNDEF(&optionValue); + ZVAL_UNDEF(&container); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&_2$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(tag) + Z_PARAM_ZVAL(option) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_STR(close) + Z_PARAM_ZVAL_OR_NULL(filters) + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &tag_param, &attributes_param, &close_param); - zephir_get_strval(&tag, tag_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 2, &option, &filters, &defaultValue); + if (!filters) { + filters = &filters_sub; + filters = &__$null; } - if (!close_param) { - ZEPHIR_INIT_VAR(&close); - ZVAL_STRING(&close, ""); - } else { - zephir_get_strval(&close, close_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; } - ZEPHIR_INIT_VAR(&escapedAttrs); - ZVAL_STRING(&escapedAttrs, ""); - if (1 != ZEPHIR_IS_EMPTY(&attributes)) { - ZEPHIR_INIT_VAR(&_0$$3); - array_init(&_0$$3); - ZEPHIR_CALL_METHOD(&attrs, this_ptr, "orderattributes", NULL, 0, &_0$$3, &attributes); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "renderattributes", NULL, 0, &attrs); + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&options, &_0); + ZEPHIR_OBS_VAR(&optionValue); + if (!(zephir_array_isset_fetch(&optionValue, &options, option, 0))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + if (Z_TYPE_P(filters) == IS_NULL) { + RETURN_CCTOR(&optionValue); + } + zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&container, &_0); + if (Z_TYPE_P(&container) != IS_OBJECT) { + ZEPHIR_INIT_VAR(&_1$$5); + ZVAL_STRING(&_1$$5, "A dependency injection container is required to access the 'filter' service"); + ZVAL_LONG(&_2$$5, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "throwdispatchexception", NULL, 0, &_1$$5, &_2$$5); zephir_check_call_status(); - zephir_fast_trim(&_1$$3, &_2$$3, NULL , ZEPHIR_TRIM_RIGHT); - ZEPHIR_INIT_NVAR(&escapedAttrs); - ZEPHIR_CONCAT_SV(&escapedAttrs, " ", &_1$$3); } - ZEPHIR_INIT_VAR(&_3); ZEPHIR_INIT_VAR(&_4); - zephir_fast_trim(&_4, &close, NULL , ZEPHIR_TRIM_BOTH); - if (ZEPHIR_IS_EMPTY(&_4)) { - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, ""); - } else { - ZEPHIR_INIT_VAR(&_5); - zephir_fast_trim(&_5, &close, NULL , ZEPHIR_TRIM_BOTH); - ZEPHIR_INIT_NVAR(&_3); - ZEPHIR_CONCAT_SV(&_3, " ", &_5); - } - ZEPHIR_CPY_WRT(&close, &_3); - ZEPHIR_CONCAT_SVVVS(return_value, "<", &tag, &escapedAttrs, &close, ">"); + ZVAL_STRING(&_4, "filter"); + ZEPHIR_CALL_METHOD(&_3, &container, "getshared", NULL, 0, &_4); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&filter, &_3); + ZEPHIR_RETURN_CALL_METHOD(&filter, "sanitize", NULL, 0, &optionValue, filters); + zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractHelper, selfClose) +static PHP_METHOD(Phalcon_Cli_Dispatcher, getOptions) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *tag_param = NULL, *attributes_param = NULL, _0; - zval tag; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(tag) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &tag_param, &attributes_param); - zephir_get_strval(&tag, tag_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "/"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rendertag", NULL, 0, &tag, &attributes, &_0); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "options"); } +static PHP_METHOD(Phalcon_Cli_Dispatcher, getTaskName) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif + RETURN_MEMBER(getThis(), "handlerName"); +} +static PHP_METHOD(Phalcon_Cli_Dispatcher, getTaskSuffix) +{ + zval *this_ptr = getThis(); + RETURN_MEMBER(getThis(), "handlerSuffix"); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_AbstractList) +static PHP_METHOD(Phalcon_Cli_Dispatcher, hasOption) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, AbstractList, phalcon, html_helper_abstractlist, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_abstractlist_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + zval *option, option_sub, _0; + zval *this_ptr = getThis(); - zend_declare_property_null(phalcon_html_helper_abstractlist_ce, SL("attributes"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_abstractlist_ce, SL("elementTag"), "li", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_helper_abstractlist_ce, SL("store"), ZEND_ACC_PROTECTED); - phalcon_html_helper_abstractlist_ce->create_object = zephir_init_properties_Phalcon_Html_Helper_AbstractList; + ZVAL_UNDEF(&option_sub); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(option) + ZEND_PARSE_PARAMETERS_END(); +#endif - return SUCCESS; + + zephir_fetch_params_without_memory_grow(1, 0, &option); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + RETURN_BOOL(zephir_array_isset(&_0, option)); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractList, __invoke) +static PHP_METHOD(Phalcon_Cli_Dispatcher, setDefaultTask) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval attributes; - zval *indent_param = NULL, *delimiter_param = NULL, *attributes_param = NULL, _0, _1; - zval indent, delimiter; + zval *taskName_param = NULL; + zval taskName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&indent); - ZVAL_UNDEF(&delimiter); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&taskName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_STR(indent) - Z_PARAM_STR_OR_NULL(delimiter) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(taskName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &indent_param, &delimiter_param, &attributes_param); - if (!indent_param) { - ZEPHIR_INIT_VAR(&indent); - ZVAL_STRING(&indent, " "); - } else { - zephir_get_strval(&indent, indent_param); - } - if (!delimiter_param) { - ZEPHIR_INIT_VAR(&delimiter); - } else { - zephir_get_strval(&delimiter, delimiter_param); - } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } + zephir_fetch_params(1, 1, 0, &taskName_param); + zephir_get_strval(&taskName, taskName_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); - ZEPHIR_INIT_VAR(&_0); - if (ZEPHIR_IS_EMPTY(&delimiter)) { - ZEPHIR_INIT_NVAR(&_0); - ZEPHIR_GET_CONSTANT(&_0, "PHP_EOL"); - } else { - ZEPHIR_CPY_WRT(&_0, &delimiter); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("indent"), &indent); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("store"), &_1); - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultHandler"), &taskName); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractList, __toString) +static PHP_METHOD(Phalcon_Cli_Dispatcher, setOptions) { - zval contents, _0, _1, _2, _3, _4, _5, _6, _7; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *options_param = NULL; + zval options; zval *this_ptr = getThis(); - ZVAL_UNDEF(&contents); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&options); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &options_param); + zephir_get_arrval(&options, options_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_EMPTY(&_0)) { - RETURN_MM_STRING(""); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_4, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "renderarrayelements", NULL, 0, &_3, &_4); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&contents); - ZEPHIR_CONCAT_VV(&contents, &_1, &_2); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "gettag", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_6, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZVAL_BOOL(&_7, 1); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &_5, &contents, &_6, &_7); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Html_Helper_AbstractList, getTag) -{ + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); + ZEPHIR_MM_RESTORE(); } -zend_object *zephir_init_properties_Phalcon_Html_Helper_AbstractList(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Cli_Dispatcher, setTaskName) { - zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("store"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_3$$4); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} + zval *taskName_param = NULL; + zval taskName; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&taskName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(taskName) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &taskName_param); + zephir_get_strval(&taskName, taskName_param); -#ifdef HAVE_CONFIG_H -#endif + zephir_update_property_zval(this_ptr, ZEND_STRL("handlerName"), &taskName); + ZEPHIR_MM_RESTORE(); +} +static PHP_METHOD(Phalcon_Cli_Dispatcher, setTaskSuffix) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *taskSuffix_param = NULL; + zval taskSuffix; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&taskSuffix); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(taskSuffix) + ZEND_PARSE_PARAMETERS_END(); +#endif -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_AbstractSeries) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, AbstractSeries, phalcon, html_helper_abstractseries, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_abstractseries_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &taskSuffix_param); + zephir_get_strval(&taskSuffix, taskSuffix_param); - zend_declare_property_null(phalcon_html_helper_abstractseries_ce, SL("attributes"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_helper_abstractseries_ce, SL("store"), ZEND_ACC_PROTECTED); - phalcon_html_helper_abstractseries_ce->create_object = zephir_init_properties_Phalcon_Html_Helper_AbstractSeries; - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("handlerSuffix"), &taskSuffix); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractSeries, __invoke) +static PHP_METHOD(Phalcon_Cli_Dispatcher, handleException) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *indent_param = NULL, *delimiter_param = NULL, _0, _1; - zval indent, delimiter; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *exception, exception_sub, eventsManager, _0, _1$$3, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&indent); - ZVAL_UNDEF(&delimiter); + ZVAL_UNDEF(&exception_sub); + ZVAL_UNDEF(&eventsManager); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_STR(indent) - Z_PARAM_STR_OR_NULL(delimiter) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(exception, zend_ce_exception) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &indent_param, &delimiter_param); - if (!indent_param) { - ZEPHIR_INIT_VAR(&indent); - ZVAL_STRING(&indent, " "); - } else { - zephir_get_strval(&indent, indent_param); - } - if (!delimiter_param) { - ZEPHIR_INIT_VAR(&delimiter); - } else { - zephir_get_strval(&delimiter, delimiter_param); - } + zephir_fetch_params(1, 1, 0, &exception); - ZEPHIR_INIT_VAR(&_0); - if (Z_TYPE_P(&delimiter) == IS_NULL) { - ZEPHIR_INIT_NVAR(&_0); - ZEPHIR_GET_CONSTANT(&_0, "PHP_EOL"); - } else { - ZEPHIR_CPY_WRT(&_0, &delimiter); + zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_0); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "dispatch:beforeException"); + ZEPHIR_CALL_METHOD(&_1$$3, &eventsManager, "fire", NULL, 0, &_2$$3, this_ptr, exception); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$3)) { + RETURN_MM_BOOL(0); + } } - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("indent"), &indent); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("store"), &_1); - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_AbstractSeries, __toString) +static PHP_METHOD(Phalcon_Cli_Dispatcher, throwDispatchException) { - zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long exceptionCode, ZEPHIR_LAST_CALL_STATUS; + zval *message_param = NULL, *exceptionCode_param = NULL, exception, _0, _1; + zval message; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&exception); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(exceptionCode) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &message_param, &exceptionCode_param); + zephir_get_strval(&message, message_param); + if (!exceptionCode_param) { + exceptionCode = 0; + } else { + exceptionCode = zephir_get_intval(exceptionCode_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderarrayelements", NULL, 0, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Html_Helper_AbstractSeries, getTag) -{ + ZEPHIR_INIT_VAR(&exception); + object_init_ex(&exception, phalcon_cli_dispatcher_exception_ce); + ZVAL_LONG(&_0, exceptionCode); + ZEPHIR_CALL_METHOD(NULL, &exception, "__construct", NULL, 29, &message, &_0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "handleexception", NULL, 0, &exception); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_1)) { + RETURN_MM_BOOL(0); + } + zephir_throw_exception_debug(&exception, "phalcon/Cli/Dispatcher.zep", 221); + ZEPHIR_MM_RESTORE(); + return; } -zend_object *zephir_init_properties_Phalcon_Html_Helper_AbstractSeries(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_Cli_Dispatcher(zend_class_entry *class_type) { - zval _0, _2, _1$$3, _3$$4; + zval _0, _2, _4, _6, _8, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_8); ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_9$$7); ZEPHIR_MM_GROW(); @@ -25067,17 +25074,35 @@ zend_object *zephir_init_properties_Phalcon_Html_Helper_AbstractSeries(zend_clas { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("store"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("params"), &_1$$3); } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("handlerHashes"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_2) == IS_NULL) { ZEPHIR_INIT_VAR(&_3$$4); array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("handlerHashes"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("camelCaseMap"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("camelCaseMap"), &_5$$5); + } + zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("activeMethodMap"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_6) == IS_NULL) { + ZEPHIR_INIT_VAR(&_7$$6); + array_init(&_7$$6); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("activeMethodMap"), &_7$$6); + } + zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_8) == IS_NULL) { + ZEPHIR_INIT_VAR(&_9$$7); + array_init(&_9$$7); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_9$$7); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -25094,553 +25119,982 @@ zend_object *zephir_init_properties_Phalcon_Html_Helper_AbstractSeries(zend_clas -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Anchor) +ZEPHIR_INIT_CLASS(Phalcon_Cli_DispatcherInterface) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Anchor, phalcon, html_helper_anchor, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_anchor_method_entry, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Cli, DispatcherInterface, phalcon, cli_dispatcherinterface, phalcon_cli_dispatcherinterface_method_entry); + zend_class_implements(phalcon_cli_dispatcherinterface_ce, 1, phalcon_dispatcher_dispatcherinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Anchor, __invoke) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes; - zval *href_param = NULL, *text_param = NULL, *attributes_param = NULL, *raw_param = NULL, overrides, _0, _1; - zval href, text; - zval *this_ptr = getThis(); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, getActiveTask); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, getLastTask); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, getOptions); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, getTaskName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, getTaskSuffix); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, setDefaultTask); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, setOptions); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, setTaskName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_DispatcherInterface, setTaskSuffix); - ZVAL_UNDEF(&href); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_STR(href) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &href_param, &text_param, &attributes_param, &raw_param); - zephir_get_strval(&href, href_param); - zephir_get_strval(&text, text_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - ZEPHIR_CALL_METHOD(&overrides, this_ptr, "processattributes", NULL, 0, &href, &attributes); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "a"); - if (raw) { - ZVAL_BOOL(&_1, 1); - } else { - ZVAL_BOOL(&_1, 0); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &_0, &text, &overrides, &_1); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Cli_Router) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli, Router, phalcon, cli_router, phalcon_di_abstractinjectionaware_ce, phalcon_cli_router_method_entry, 0); + + zend_declare_property_null(phalcon_cli_router_ce, SL("action"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("defaultAction"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_cli_router_ce, SL("defaultModule"), "", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("defaultParams"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("defaultTask"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("matchedRoute"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("matches"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_cli_router_ce, SL("module"), "", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("params"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("routes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_ce, SL("task"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_cli_router_ce, SL("wasMatched"), 0, ZEND_ACC_PROTECTED); + phalcon_cli_router_ce->create_object = zephir_init_properties_Phalcon_Cli_Router; + + return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Anchor, processAttributes) +static PHP_METHOD(Phalcon_Cli_Router, __construct) { + zval routes, _1$$3, _3$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval attributes; - zval *href_param = NULL, *attributes_param = NULL, overrides; - zval href; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *defaultRoutes_param = NULL, _0$$3, _2$$3, _4$$3; + zend_bool defaultRoutes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&href); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&routes); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(href) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(defaultRoutes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &href_param, &attributes_param); - zephir_get_strval(&href, href_param); - zephir_get_arrval(&attributes, attributes_param); - - - ZEPHIR_INIT_VAR(&overrides); - zephir_create_array(&overrides, 1, 0); - zephir_array_update_string(&overrides, SL("href"), &href, PH_COPY | PH_SEPARATE); - zephir_array_unset_string(&attributes, SL("href"), PH_SEPARATE); - zephir_fast_array_merge(return_value, &overrides, &attributes); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - + zephir_fetch_params(1, 0, 1, &defaultRoutes_param); + if (!defaultRoutes_param) { + defaultRoutes = 1; + } else { + defaultRoutes = zephir_get_boolval(defaultRoutes_param); + } -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Base) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Base, phalcon, html_helper_base, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_base_method_entry, 0); - return SUCCESS; + ZEPHIR_INIT_VAR(&routes); + array_init(&routes); + if (defaultRoutes) { + ZEPHIR_INIT_VAR(&_0$$3); + object_init_ex(&_0$$3, phalcon_cli_router_route_ce); + ZEPHIR_INIT_VAR(&_1$$3); + zephir_create_array(&_1$$3, 1, 0); + add_assoc_long_ex(&_1$$3, SL("task"), 1); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "#^(?::delimiter)?([a-zA-Z0-9\\_\\-]+)[:delimiter]{0,1}$#"); + ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 184, &_2$$3, &_1$$3); + zephir_check_call_status(); + zephir_array_append(&routes, &_0$$3, PH_SEPARATE, "phalcon/Cli/Router.zep", 120); + ZEPHIR_INIT_NVAR(&_2$$3); + object_init_ex(&_2$$3, phalcon_cli_router_route_ce); + ZEPHIR_INIT_VAR(&_3$$3); + zephir_create_array(&_3$$3, 3, 0); + add_assoc_long_ex(&_3$$3, SL("task"), 1); + add_assoc_long_ex(&_3$$3, SL("action"), 2); + add_assoc_long_ex(&_3$$3, SL("params"), 3); + ZEPHIR_INIT_VAR(&_4$$3); + ZVAL_STRING(&_4$$3, "#^(?::delimiter)?([a-zA-Z0-9\\_\\-]+):delimiter([a-zA-Z0-9\\.\\_]+)(:delimiter.*)*$#"); + ZEPHIR_CALL_METHOD(NULL, &_2$$3, "__construct", NULL, 184, &_4$$3, &_3$$3); + zephir_check_call_status(); + zephir_array_append(&routes, &_2$$3, PH_SEPARATE, "phalcon/Cli/Router.zep", 129); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("routes"), &routes); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Base, __invoke) +static PHP_METHOD(Phalcon_Cli_Router, add) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *href_param = NULL, *attributes_param = NULL, overrides, _1, _0$$3; - zval href; + zval *pattern_param = NULL, *paths = NULL, paths_sub, __$null, route; + zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&href); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&paths_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&route); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(pattern) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(href) - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(paths) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &href_param, &attributes_param); - if (!href_param) { - ZEPHIR_INIT_VAR(&href); - } else { - zephir_get_strval(&href, href_param); + zephir_fetch_params(1, 1, 1, &pattern_param, &paths); + if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); + RETURN_MM_NULL(); } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { + zephir_get_strval(&pattern, pattern_param); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_INIT_VAR(&pattern); + } + if (!paths) { + paths = &paths_sub; + paths = &__$null; } - ZEPHIR_INIT_VAR(&overrides); - array_init(&overrides); - if (!(ZEPHIR_IS_EMPTY(&href))) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - zephir_array_update_string(&_0$$3, SL("href"), &href, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&overrides, &_0$$3); - } - zephir_array_unset_string(&attributes, SL("href"), PH_SEPARATE); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_array_merge(&_1, &overrides, &attributes); - ZEPHIR_CPY_WRT(&overrides, &_1); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "base"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderelement", NULL, 0, &_1, &overrides); + ZEPHIR_INIT_VAR(&route); + object_init_ex(&route, phalcon_cli_router_route_ce); + ZEPHIR_CALL_METHOD(NULL, &route, "__construct", NULL, 184, &pattern, paths); zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array_append(this_ptr, SL("routes"), &route); + RETURN_CCTOR(&route); } +static PHP_METHOD(Phalcon_Cli_Router, getActionName) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif + RETURN_MEMBER(getThis(), "action"); +} +static PHP_METHOD(Phalcon_Cli_Router, getMatchedRoute) +{ + zval *this_ptr = getThis(); + RETURN_MEMBER(getThis(), "matchedRoute"); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Body) +static PHP_METHOD(Phalcon_Cli_Router, getMatches) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Body, phalcon, html_helper_body, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_body_method_entry, 0); + zval *this_ptr = getThis(); - return SUCCESS; + + + RETURN_MEMBER(getThis(), "matches"); } -static PHP_METHOD(Phalcon_Html_Helper_Body, __invoke) +static PHP_METHOD(Phalcon_Cli_Router, getModuleName) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, _0; - zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "body"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderelement", NULL, 0, &_0, &attributes); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "module"); } +static PHP_METHOD(Phalcon_Cli_Router, getParams) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif + RETURN_MEMBER(getThis(), "params"); +} +static PHP_METHOD(Phalcon_Cli_Router, getRouteById) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *id, id_sub, route, _0, *_1, _2, _3$$3, _4$$5; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&id_sub); + ZVAL_UNDEF(&route); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$5); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(id) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &id); -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Button) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Button, phalcon, html_helper_button, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_button_method_entry, 0); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&_0, 0, "phalcon/Cli/Router.zep", 209); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) + { + ZEPHIR_INIT_NVAR(&route); + ZVAL_COPY(&route, _1); + ZEPHIR_CALL_METHOD(&_3$$3, &route, "getrouteid", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EQUAL(&_3$$3, id)) { + RETURN_CCTOR(&route); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&route, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4$$5, &route, "getrouteid", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EQUAL(&_4$$5, id)) { + RETURN_CCTOR(&route); + } + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&route); + RETURN_MM_BOOL(0); } -static PHP_METHOD(Phalcon_Html_Helper_Button, __invoke) +static PHP_METHOD(Phalcon_Cli_Router, getRouteByName) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes; - zval *text_param = NULL, *attributes_param = NULL, *raw_param = NULL, _0, _1; - zval text; + zval *name_param = NULL, route, _0, *_1, _2, _3$$3, _4$$5; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&text); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&route); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &text_param, &attributes_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); } - if (!raw_param) { - raw = 0; + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - raw = zephir_get_boolval(raw_param); + ZEPHIR_INIT_VAR(&name); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "button"); - if (raw) { - ZVAL_BOOL(&_1, 1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&_0, 0, "phalcon/Cli/Router.zep", 225); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) + { + ZEPHIR_INIT_NVAR(&route); + ZVAL_COPY(&route, _1); + ZEPHIR_CALL_METHOD(&_3$$3, &route, "getname", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EQUAL(&_3$$3, &name)) { + RETURN_CCTOR(&route); + } + } ZEND_HASH_FOREACH_END(); } else { - ZVAL_BOOL(&_1, 0); + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&route, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4$$5, &route, "getname", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EQUAL(&_4$$5, &name)) { + RETURN_CCTOR(&route); + } + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); + } } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &_0, &text, &attributes, &_1); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_NVAR(&route); + RETURN_MM_BOOL(0); } +static PHP_METHOD(Phalcon_Cli_Router, getRoutes) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif - - + RETURN_MEMBER(getThis(), "routes"); +} +static PHP_METHOD(Phalcon_Cli_Router, getTaskName) +{ + zval *this_ptr = getThis(); -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Close) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Close, phalcon, html_helper_close, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_close_method_entry, 0); - return SUCCESS; + RETURN_MEMBER(getThis(), "task"); } -static PHP_METHOD(Phalcon_Html_Helper_Close, __invoke) +static PHP_METHOD(Phalcon_Cli_Router, handle) { + zval _34$$55; + zend_string *_8$$12, *_21$$32; + zend_ulong _7$$12, _20$$32; + zval _4$$9, _10$$15, _12$$18, _14$$21, _16$$24, _17$$29, _23$$35, _25$$38, _27$$41, _29$$44; + zend_bool _0$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_37 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *tag_param = NULL, *raw_param = NULL, _0; - zval tag; + zval *arguments = NULL, arguments_sub, __$true, __$false, __$null, moduleName, taskName, actionName, params, route, parts, pattern, routeFound, matches, paths, beforeMatch, converters, converter, part, position, matchPosition, strParams, _1$$3, *_2$$3, _3$$3, *_5$$12, _6$$12, _9$$15, _11$$18, _13$$21, _15$$24, *_18$$32, _19$$32, _22$$35, _24$$38, _26$$41, _28$$44, _30$$46, _31$$46, _32$$46, _33$$46, _35$$55, _36$$56, _38$$58; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&arguments_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&moduleName); + ZVAL_UNDEF(&taskName); + ZVAL_UNDEF(&actionName); + ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&route); + ZVAL_UNDEF(&parts); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&routeFound); + ZVAL_UNDEF(&matches); + ZVAL_UNDEF(&paths); + ZVAL_UNDEF(&beforeMatch); + ZVAL_UNDEF(&converters); + ZVAL_UNDEF(&converter); + ZVAL_UNDEF(&part); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&matchPosition); + ZVAL_UNDEF(&strParams); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_6$$12); + ZVAL_UNDEF(&_9$$15); + ZVAL_UNDEF(&_11$$18); + ZVAL_UNDEF(&_13$$21); + ZVAL_UNDEF(&_15$$24); + ZVAL_UNDEF(&_19$$32); + ZVAL_UNDEF(&_22$$35); + ZVAL_UNDEF(&_24$$38); + ZVAL_UNDEF(&_26$$41); + ZVAL_UNDEF(&_28$$44); + ZVAL_UNDEF(&_30$$46); + ZVAL_UNDEF(&_31$$46); + ZVAL_UNDEF(&_32$$46); + ZVAL_UNDEF(&_33$$46); + ZVAL_UNDEF(&_35$$55); + ZVAL_UNDEF(&_36$$56); + ZVAL_UNDEF(&_38$$58); + ZVAL_UNDEF(&_4$$9); + ZVAL_UNDEF(&_10$$15); + ZVAL_UNDEF(&_12$$18); + ZVAL_UNDEF(&_14$$21); + ZVAL_UNDEF(&_16$$24); + ZVAL_UNDEF(&_17$$29); + ZVAL_UNDEF(&_23$$35); + ZVAL_UNDEF(&_25$$38); + ZVAL_UNDEF(&_27$$41); + ZVAL_UNDEF(&_29$$44); + ZVAL_UNDEF(&_34$$55); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(tag) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) + Z_PARAM_ZVAL_OR_NULL(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &tag_param, &raw_param); - zephir_get_strval(&tag, tag_param); - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); + zephir_fetch_params(1, 0, 1, &arguments); + if (!arguments) { + arguments = &arguments_sub; + arguments = &__$null; } - if (raw) { - ZVAL_BOOL(&_0, 1); + ZEPHIR_INIT_VAR(&routeFound); + ZVAL_BOOL(&routeFound, 0); + ZEPHIR_INIT_VAR(&parts); + array_init(&parts); + ZEPHIR_INIT_VAR(¶ms); + array_init(¶ms); + ZEPHIR_INIT_VAR(&matches); + ZVAL_NULL(&matches); + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); } else { - ZVAL_BOOL(&_0, 0); + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "close", NULL, 0, &tag, &_0); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &__$null); + if (Z_TYPE_P(arguments) != IS_ARRAY) { + _0$$3 = Z_TYPE_P(arguments) != IS_STRING; + if (_0$$3) { + _0$$3 = Z_TYPE_P(arguments) != IS_NULL; + } + if (UNEXPECTED(_0$$3)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_router_exception_ce, "Arguments must be an array or string", "phalcon/Cli/Router.zep", 264); + return; + } + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&_1$$3, 0, "phalcon/Cli/Router.zep", 370); + if (Z_TYPE_P(&_1$$3) == IS_ARRAY) { + ZEND_HASH_REVERSE_FOREACH_VAL(Z_ARRVAL_P(&_1$$3), _2$$3) + { + ZEPHIR_INIT_NVAR(&route); + ZVAL_COPY(&route, _2$$3); + ZEPHIR_CALL_METHOD(&pattern, &route, "getcompiledpattern", NULL, 0); + zephir_check_call_status(); + if (zephir_memnstr_str(&pattern, SL("^"), "phalcon/Cli/Router.zep", 273)) { + ZEPHIR_INIT_NVAR(&routeFound); + zephir_preg_match(&routeFound, &pattern, arguments, &matches, 0, 0 , 0 ); + } else { + ZEPHIR_INIT_NVAR(&routeFound); + ZVAL_BOOL(&routeFound, ZEPHIR_IS_EQUAL(&pattern, arguments)); + } + if (zephir_is_true(&routeFound)) { + ZEPHIR_CALL_METHOD(&beforeMatch, &route, "getbeforematch", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&beforeMatch) != IS_NULL) { + if (UNEXPECTED(!(zephir_is_callable(&beforeMatch)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_router_exception_ce, "Before-Match callback is not callable in matched route", "phalcon/Cli/Router.zep", 292); + return; + } + ZEPHIR_INIT_NVAR(&_4$$9); + zephir_create_array(&_4$$9, 3, 0); + zephir_array_fast_append(&_4$$9, arguments); + zephir_array_fast_append(&_4$$9, &route); + zephir_array_fast_append(&_4$$9, this_ptr); + ZEPHIR_INIT_NVAR(&routeFound); + ZEPHIR_CALL_USER_FUNC_ARRAY(&routeFound, &beforeMatch, &_4$$9); + 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, 0, "phalcon/Cli/Router.zep", 357); + if (Z_TYPE_P(&paths) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&paths), _7$$12, _8$$12, _5$$12) + { + ZEPHIR_INIT_NVAR(&part); + if (_8$$12 != NULL) { + ZVAL_STR_COPY(&part, _8$$12); + } else { + ZVAL_LONG(&part, _7$$12); + } + ZEPHIR_INIT_NVAR(&position); + ZVAL_COPY(&position, _5$$12); + ZEPHIR_OBS_NVAR(&matchPosition); + if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_9$$15); + ZEPHIR_INIT_NVAR(&_10$$15); + zephir_create_array(&_10$$15, 1, 0); + zephir_array_fast_append(&_10$$15, &matchPosition); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_9$$15, &converter, &_10$$15); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_9$$15, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&parts, &part, &matchPosition, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_11$$18); + ZEPHIR_INIT_NVAR(&_12$$18); + zephir_create_array(&_12$$18, 1, 0); + zephir_array_fast_append(&_12$$18, &position); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_11$$18, &converter, &_12$$18); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_11$$18, PH_COPY | PH_SEPARATE); + } + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &paths, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_6$$12, &paths, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_6$$12)) { + break; + } + ZEPHIR_CALL_METHOD(&part, &paths, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&position, &paths, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&matchPosition); + if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_13$$21); + ZEPHIR_INIT_NVAR(&_14$$21); + zephir_create_array(&_14$$21, 1, 0); + zephir_array_fast_append(&_14$$21, &matchPosition); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_13$$21, &converter, &_14$$21); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_13$$21, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&parts, &part, &matchPosition, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_15$$24); + ZEPHIR_INIT_NVAR(&_16$$24); + zephir_create_array(&_16$$24, 1, 0); + zephir_array_fast_append(&_16$$24, &position); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_15$$24, &converter, &_16$$24); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_15$$24, PH_COPY | PH_SEPARATE); + } + } + ZEPHIR_CALL_METHOD(NULL, &paths, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&position); + ZEPHIR_INIT_NVAR(&part); + zephir_update_property_zval(this_ptr, ZEND_STRL("matches"), &matches); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &route); + break; + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3$$3, &_1$$3, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&route, &_1$$3, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&pattern, &route, "getcompiledpattern", NULL, 0); + zephir_check_call_status(); + if (zephir_memnstr_str(&pattern, SL("^"), "phalcon/Cli/Router.zep", 273)) { + ZEPHIR_INIT_NVAR(&routeFound); + zephir_preg_match(&routeFound, &pattern, arguments, &matches, 0, 0 , 0 ); + } else { + ZEPHIR_INIT_NVAR(&routeFound); + ZVAL_BOOL(&routeFound, ZEPHIR_IS_EQUAL(&pattern, arguments)); + } + if (zephir_is_true(&routeFound)) { + ZEPHIR_CALL_METHOD(&beforeMatch, &route, "getbeforematch", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&beforeMatch) != IS_NULL) { + if (UNEXPECTED(!(zephir_is_callable(&beforeMatch)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_router_exception_ce, "Before-Match callback is not callable in matched route", "phalcon/Cli/Router.zep", 292); + return; + } + ZEPHIR_INIT_NVAR(&_17$$29); + zephir_create_array(&_17$$29, 3, 0); + zephir_array_fast_append(&_17$$29, arguments); + zephir_array_fast_append(&_17$$29, &route); + zephir_array_fast_append(&_17$$29, this_ptr); + ZEPHIR_INIT_NVAR(&routeFound); + ZEPHIR_CALL_USER_FUNC_ARRAY(&routeFound, &beforeMatch, &_17$$29); + 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, 0, "phalcon/Cli/Router.zep", 357); + if (Z_TYPE_P(&paths) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&paths), _20$$32, _21$$32, _18$$32) + { + ZEPHIR_INIT_NVAR(&part); + if (_21$$32 != NULL) { + ZVAL_STR_COPY(&part, _21$$32); + } else { + ZVAL_LONG(&part, _20$$32); + } + ZEPHIR_INIT_NVAR(&position); + ZVAL_COPY(&position, _18$$32); + ZEPHIR_OBS_NVAR(&matchPosition); + if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_22$$35); + ZEPHIR_INIT_NVAR(&_23$$35); + zephir_create_array(&_23$$35, 1, 0); + zephir_array_fast_append(&_23$$35, &matchPosition); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_22$$35, &converter, &_23$$35); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_22$$35, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&parts, &part, &matchPosition, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_24$$38); + ZEPHIR_INIT_NVAR(&_25$$38); + zephir_create_array(&_25$$38, 1, 0); + zephir_array_fast_append(&_25$$38, &position); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_24$$38, &converter, &_25$$38); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_24$$38, PH_COPY | PH_SEPARATE); + } + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &paths, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_19$$32, &paths, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_19$$32)) { + break; + } + ZEPHIR_CALL_METHOD(&part, &paths, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&position, &paths, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&matchPosition); + if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_26$$41); + ZEPHIR_INIT_NVAR(&_27$$41); + zephir_create_array(&_27$$41, 1, 0); + zephir_array_fast_append(&_27$$41, &matchPosition); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_26$$41, &converter, &_27$$41); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_26$$41, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&parts, &part, &matchPosition, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_OBS_NVAR(&converter); + if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { + ZEPHIR_INIT_NVAR(&_28$$44); + ZEPHIR_INIT_NVAR(&_29$$44); + zephir_create_array(&_29$$44, 1, 0); + zephir_array_fast_append(&_29$$44, &position); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_28$$44, &converter, &_29$$44); + zephir_check_call_status(); + zephir_array_update_zval(&parts, &part, &_28$$44, PH_COPY | PH_SEPARATE); + } + } + ZEPHIR_CALL_METHOD(NULL, &paths, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&position); + ZEPHIR_INIT_NVAR(&part); + zephir_update_property_zval(this_ptr, ZEND_STRL("matches"), &matches); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &route); + break; + } + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&route); + if (zephir_is_true(&routeFound)) { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); + } + } else { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); + } + zephir_read_property(&_30$$46, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC | PH_READONLY); + zephir_update_property_zval(this_ptr, ZEND_STRL("module"), &_30$$46); + zephir_read_property(&_31$$46, this_ptr, ZEND_STRL("defaultTask"), PH_NOISY_CC | PH_READONLY); + zephir_update_property_zval(this_ptr, ZEND_STRL("task"), &_31$$46); + zephir_read_property(&_32$$46, this_ptr, ZEND_STRL("defaultAction"), PH_NOISY_CC | PH_READONLY); + zephir_update_property_zval(this_ptr, ZEND_STRL("action"), &_32$$46); + zephir_read_property(&_33$$46, this_ptr, ZEND_STRL("defaultParams"), PH_NOISY_CC | PH_READONLY); + zephir_update_property_zval(this_ptr, ZEND_STRL("params"), &_33$$46); + RETURN_THIS(); + } + } else { + ZEPHIR_CPY_WRT(&parts, arguments); + } + ZEPHIR_INIT_VAR(&moduleName); + ZVAL_NULL(&moduleName); + ZEPHIR_INIT_VAR(&taskName); + ZVAL_NULL(&taskName); + ZEPHIR_INIT_VAR(&actionName); + ZVAL_NULL(&actionName); + ZEPHIR_OBS_NVAR(&moduleName); + if (zephir_array_isset_string_fetch(&moduleName, &parts, SL("module"), 0)) { + zephir_array_unset_string(&parts, SL("module"), PH_SEPARATE); + } else { + ZEPHIR_OBS_NVAR(&moduleName); + zephir_read_property(&moduleName, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC); + } + ZEPHIR_OBS_NVAR(&taskName); + if (zephir_array_isset_string_fetch(&taskName, &parts, SL("task"), 0)) { + zephir_array_unset_string(&parts, SL("task"), PH_SEPARATE); + } else { + ZEPHIR_OBS_NVAR(&taskName); + zephir_read_property(&taskName, this_ptr, ZEND_STRL("defaultTask"), PH_NOISY_CC); + } + ZEPHIR_OBS_NVAR(&actionName); + if (zephir_array_isset_string_fetch(&actionName, &parts, SL("action"), 0)) { + zephir_array_unset_string(&parts, SL("action"), PH_SEPARATE); + } else { + ZEPHIR_OBS_NVAR(&actionName); + zephir_read_property(&actionName, this_ptr, ZEND_STRL("defaultAction"), PH_NOISY_CC); + } + ZEPHIR_OBS_NVAR(¶ms); + if (zephir_array_isset_string_fetch(¶ms, &parts, SL("params"), 0)) { + if (Z_TYPE_P(¶ms) != IS_ARRAY) { + zephir_cast_to_string(&_34$$55, ¶ms); + ZVAL_LONG(&_35$$55, 1); + ZEPHIR_INIT_VAR(&strParams); + zephir_substr(&strParams, &_34$$55, 1 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + if (zephir_is_true(&strParams)) { + ZEPHIR_CALL_CE_STATIC(&_36$$56, phalcon_cli_router_route_ce, "getdelimiter", &_37, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(¶ms); + zephir_fast_explode(¶ms, &_36$$56, &strParams, LONG_MAX); + } else { + ZEPHIR_INIT_NVAR(¶ms); + array_init(¶ms); + } + } + zephir_array_unset_string(&parts, SL("params"), PH_SEPARATE); + } + if (zephir_fast_count_int(¶ms)) { + ZEPHIR_INIT_VAR(&_38$$58); + zephir_fast_array_merge(&_38$$58, ¶ms, &parts); + ZEPHIR_CPY_WRT(¶ms, &_38$$58); + } else { + ZEPHIR_CPY_WRT(¶ms, &parts); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("module"), &moduleName); + zephir_update_property_zval(this_ptr, ZEND_STRL("task"), &taskName); + zephir_update_property_zval(this_ptr, ZEND_STRL("action"), &actionName); + zephir_update_property_zval(this_ptr, ZEND_STRL("params"), ¶ms); + ZEPHIR_MM_RESTORE(); } +static PHP_METHOD(Phalcon_Cli_Router, setDefaultAction) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *actionName_param = NULL; + zval actionName; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&actionName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(actionName) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &actionName_param); + zephir_get_strval(&actionName, actionName_param); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultAction"), &actionName); + ZEPHIR_MM_RESTORE(); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Doctype) +static PHP_METHOD(Phalcon_Cli_Router, setDefaultModule) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Html\\Helper, Doctype, phalcon, html_helper_doctype, phalcon_html_helper_doctype_method_entry, 0); - - zend_declare_property_null(phalcon_html_helper_doctype_ce, SL("delimiter"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_html_helper_doctype_ce, SL("flag"), ZEND_ACC_PRIVATE); - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("HTML32"), 1); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("HTML401_STRICT"), 2); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("HTML401_TRANSITIONAL"), 3); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("HTML401_FRAMESET"), 4); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("HTML5"), 5); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML10_STRICT"), 6); - - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML10_TRANSITIONAL"), 7); + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *moduleName_param = NULL; + zval moduleName; + zval *this_ptr = getThis(); - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML10_FRAMESET"), 8); + ZVAL_UNDEF(&moduleName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(moduleName) + ZEND_PARSE_PARAMETERS_END(); +#endif - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML11"), 9); - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML20"), 10); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &moduleName_param); + zephir_get_strval(&moduleName, moduleName_param); - zephir_declare_class_constant_long(phalcon_html_helper_doctype_ce, SL("XHTML5"), 11); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultModule"), &moduleName); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Doctype, __construct) +static PHP_METHOD(Phalcon_Cli_Router, setDefaults) { - zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *defaults_param = NULL, module, task, action, params; + zval defaults; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&defaults); + ZVAL_UNDEF(&module); + ZVAL_UNDEF(&task); + ZVAL_UNDEF(&action); + ZVAL_UNDEF(¶ms); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(defaults) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &defaults_param); + ZEPHIR_OBS_COPY_OR_DUP(&defaults, defaults_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 5); - zephir_update_property_zval(this_ptr, ZEND_STRL("flag"), &_0); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_GET_CONSTANT(&_1, "PHP_EOL"); - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_1); - ZEPHIR_MM_RESTORE(); + + if (zephir_array_isset_string_fetch(&module, &defaults, SL("module"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultModule"), &module); + } + if (zephir_array_isset_string_fetch(&task, &defaults, SL("task"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultTask"), &task); + } + if (zephir_array_isset_string_fetch(&action, &defaults, SL("action"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultAction"), &action); + } + if (zephir_array_isset_string_fetch(¶ms, &defaults, SL("params"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultParams"), ¶ms); + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Doctype, __invoke) +static PHP_METHOD(Phalcon_Cli_Router, setDefaultTask) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval delimiter; - zval *flag_param = NULL, *delimiter_param = NULL, _0; - zend_long flag; + zval *taskName_param = NULL; + zval taskName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&delimiter); + ZVAL_UNDEF(&taskName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(flag) - Z_PARAM_STR(delimiter) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(taskName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &flag_param, &delimiter_param); - if (!flag_param) { - flag = 5; - } else { - flag = zephir_get_intval(flag_param); - } - if (!delimiter_param) { - ZEPHIR_INIT_VAR(&delimiter); - ZVAL_STRING(&delimiter, "\n"); - } else { - zephir_get_strval(&delimiter, delimiter_param); - } + zephir_fetch_params(1, 1, 0, &taskName_param); + zephir_get_strval(&taskName, taskName_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, flag); - zephir_update_property_zval(this_ptr, ZEND_STRL("flag"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &delimiter); - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("defaultTask"), &taskName); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Doctype, __toString) +static PHP_METHOD(Phalcon_Cli_Router, wasMatched) { - zval _0, _18, _1$$3, _2$$4, _3$$4, _4$$5, _5$$5, _6$$6, _7$$6, _8$$7, _9$$7, _10$$8, _11$$8, _12$$9, _13$$9, _14$$10, _15$$10, _16$$11, _17$$11; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_18); + + + RETURN_MEMBER(getThis(), "wasMatched"); +} + +zend_object *zephir_init_properties_Phalcon_Cli_Router(zend_class_entry *class_type) +{ + zval _0, _2, _4, _1$$3, _3$$4, _5$$5; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$5); ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_6$$6); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$9); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_14$$10); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_16$$11); - ZVAL_UNDEF(&_17$$11); - - + - zephir_read_property(&_0, this_ptr, ZEND_STRL("flag"), PH_NOISY_CC | PH_READONLY); - do { - if (ZEPHIR_IS_LONG(&_0, 1)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SV(return_value, "", &_1$$3); - return; - } - if (ZEPHIR_IS_LONG(&_0, 2)) { - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_3$$4, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_3$$4); - return; - } - if (ZEPHIR_IS_LONG(&_0, 3)) { - zephir_read_property(&_4$$5, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_5$$5, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_5$$5); - return; - } - if (ZEPHIR_IS_LONG(&_0, 4)) { - zephir_read_property(&_6$$6, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_7$$6, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_7$$6); - return; - } - if (ZEPHIR_IS_LONG(&_0, 6)) { - zephir_read_property(&_8$$7, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_9$$7, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_9$$7); - return; - } - if (ZEPHIR_IS_LONG(&_0, 7)) { - zephir_read_property(&_10$$8, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_11$$8, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_11$$8); - return; - } - if (ZEPHIR_IS_LONG(&_0, 8)) { - zephir_read_property(&_12$$9, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_13$$9, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_13$$9); - return; + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("routes"), &_1$$3); } - if (ZEPHIR_IS_LONG(&_0, 9)) { - zephir_read_property(&_14$$10, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_15$$10, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_15$$10); - return; + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("params"), &_3$$4); } - if (ZEPHIR_IS_LONG(&_0, 10)) { - zephir_read_property(&_16$$11, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_17$$11, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SVSV(return_value, "", &_17$$11); - return; + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("defaultParams"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("defaultParams"), &_5$$5); } - } while(0); - - zephir_read_property(&_18, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_SV(return_value, "", &_18); - return; + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } } @@ -25653,66 +26107,29 @@ static PHP_METHOD(Phalcon_Html_Helper_Doctype, __toString) -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Element) +ZEPHIR_INIT_CLASS(Phalcon_Cli_RouterInterface) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Element, phalcon, html_helper_element, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_element_method_entry, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Cli, RouterInterface, phalcon, cli_routerinterface, phalcon_cli_routerinterface_method_entry); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Element, __invoke) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes; - zval *tag_param = NULL, *text_param = NULL, *attributes_param = NULL, *raw_param = NULL, _0; - zval tag, text; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&tag); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_STR(tag) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &tag_param, &text_param, &attributes_param, &raw_param); - zephir_get_strval(&tag, tag_param); - zephir_get_strval(&text, text_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - - - if (raw) { - ZVAL_BOOL(&_0, 1); - } else { - ZVAL_BOOL(&_0, 0); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &tag, &text, &attributes, &_0); - zephir_check_call_status(); - RETURN_MM(); -} - +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, add); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getActionName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getMatchedRoute); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getMatches); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getModuleName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getParams); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getRouteById); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getRouteByName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getRoutes); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, getTaskName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, handle); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, setDefaultAction); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, setDefaultModule); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, setDefaults); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, setDefaultTask); +ZEPHIR_DOC_METHOD(Phalcon_Cli_RouterInterface, wasMatched); @@ -25723,121 +26140,60 @@ static PHP_METHOD(Phalcon_Html_Helper_Element, __invoke) -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Form) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Task) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Form, phalcon, html_helper_form, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_form_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli, Task, phalcon, cli_task, phalcon_di_injectable_ce, phalcon_cli_task_method_entry, 0); + zend_declare_property_null(phalcon_cli_task_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_cli_task_ce, 1, phalcon_cli_taskinterface_ce); + zend_class_implements(phalcon_cli_task_ce, 1, phalcon_events_eventsawareinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Form, __invoke) +static PHP_METHOD(Phalcon_Cli_Task, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, overrides, _0, _1; - zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - - ZEPHIR_INIT_VAR(&overrides); - zephir_create_array(&overrides, 2, 0); - add_assoc_stringl_ex(&overrides, SL("method"), SL("post")); - add_assoc_stringl_ex(&overrides, SL("enctype"), SL("multipart/form-data")); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "orderattributes", NULL, 0, &overrides, &attributes); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&overrides, &_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "form"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderelement", NULL, 0, &_1, &overrides); - zephir_check_call_status(); - RETURN_MM(); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("onconstruct")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "onconstruct", NULL, 0); + zephir_check_call_status(); + } + ZEPHIR_MM_RESTORE(); } +static PHP_METHOD(Phalcon_Cli_Task, getEventsManager) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Img) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Img, phalcon, html_helper_img, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_img_method_entry, 0); - - return SUCCESS; + RETURN_MEMBER(getThis(), "eventsManager"); } -static PHP_METHOD(Phalcon_Html_Helper_Img, __invoke) +static PHP_METHOD(Phalcon_Cli_Task, setEventsManager) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *src_param = NULL, *attributes_param = NULL, overrides, _0; - zval src; + zval *eventsManager, eventsManager_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&src); - ZVAL_UNDEF(&overrides); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&eventsManager_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(src) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &src_param, &attributes_param); - zephir_get_strval(&src, src_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } + zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); - ZEPHIR_INIT_VAR(&overrides); - zephir_create_array(&overrides, 1, 0); - zephir_array_update_string(&overrides, SL("src"), &src, PH_COPY | PH_SEPARATE); - zephir_array_unset_string(&attributes, SL("src"), PH_SEPARATE); - ZEPHIR_INIT_VAR(&_0); - zephir_fast_array_merge(&_0, &overrides, &attributes); - ZEPHIR_CPY_WRT(&overrides, &_0); - ZEPHIR_INIT_NVAR(&_0); - ZVAL_STRING(&_0, "img"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "selfclose", NULL, 0, &_0, &overrides); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); } @@ -25850,64 +26206,28 @@ static PHP_METHOD(Phalcon_Html_Helper_Img, __invoke) -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Label) +ZEPHIR_INIT_CLASS(Phalcon_Cli_TaskInterface) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Label, phalcon, html_helper_label, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_label_method_entry, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Cli, TaskInterface, phalcon, cli_taskinterface, NULL); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Label, __invoke) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes; - zval *label_param = NULL, *attributes_param = NULL, *raw_param = NULL, _0, _1; - zval label; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&label); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(label) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &label_param, &attributes_param, &raw_param); - zephir_get_strval(&label, label_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "label"); - if (raw) { - ZVAL_BOOL(&_1, 1); - } else { - ZVAL_BOOL(&_1, 0); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &_0, &label, &attributes, &_1); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Cli_Router_Exception) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli\\Router, Exception, phalcon, cli_router_exception, zend_ce_exception, NULL, 0); + + return SUCCESS; } @@ -25920,1035 +26240,900 @@ static PHP_METHOD(Phalcon_Html_Helper_Label, __invoke) -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Link) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Router_Route) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Link, phalcon, html_helper_link, phalcon_html_helper_style_ce, phalcon_html_helper_link_method_entry, 0); + ZEPHIR_REGISTER_CLASS(Phalcon\\Cli\\Router, Route, phalcon, cli_router_route, phalcon_cli_router_route_method_entry, 0); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("beforeMatch"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("compiledPattern"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("converters"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("delimiter"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_cli_router_route_ce, SL("delimiterPath"), " ", ZEND_ACC_PROTECTED|ZEND_ACC_STATIC); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("description"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("id"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("paths"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_cli_router_route_ce, SL("pattern"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_cli_router_route_ce, SL("uniqueId"), 0, ZEND_ACC_PROTECTED|ZEND_ACC_STATIC); + phalcon_cli_router_route_ce->create_object = zephir_init_properties_Phalcon_Cli_Router_Route; + zephir_declare_class_constant_string(phalcon_cli_router_route_ce, SL("DEFAULT_DELIMITER"), " "); + + zend_class_implements(phalcon_cli_router_route_ce, 1, phalcon_cli_router_routeinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Link, add) +static PHP_METHOD(Phalcon_Cli_Router_Route, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes, _0, _2; - zval *url_param = NULL, *attributes_param = NULL, _1, _3; - zval url; + zval *pattern_param = NULL, *paths = NULL, paths_sub, __$null, routeId, uniqueId, _0, _1; + zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&paths_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&routeId); + ZVAL_UNDEF(&uniqueId); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(url) + Z_PARAM_STR(pattern) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(paths) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + zephir_fetch_params(1, 1, 1, &pattern_param, &paths); + if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { + zephir_get_strval(&pattern, pattern_param); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_INIT_VAR(&pattern); + } + if (!paths) { + paths = &paths_sub; + paths = &__$null; } - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 3, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "renderTag"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 3, 0); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "gettag", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "getattributes", NULL, 0, &url, &attributes); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "/"); - zephir_array_fast_append(&_2, &_1); - zephir_array_fast_append(&_0, &_2); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "indent", NULL, 0); + ZEPHIR_OBS_VAR(&_0); + zephir_read_static_property_ce(&_0, phalcon_cli_router_route_ce, SL("delimiterPath"), PH_NOISY_CC); + zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "reconfigure", NULL, 0, &pattern, paths); zephir_check_call_status(); - zephir_array_fast_append(&_0, &_3); - zephir_update_property_array_append(this_ptr, SL("store"), &_0); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Link, getTag) -{ - zval *this_ptr = getThis(); - - - - RETURN_STRING("link"); + ZEPHIR_OBS_VAR(&_1); + zephir_read_static_property_ce(&_1, phalcon_cli_router_route_ce, SL("uniqueId"), PH_NOISY_CC); + ZEPHIR_CPY_WRT(&uniqueId, &_1); + ZEPHIR_CPY_WRT(&routeId, &uniqueId); + zephir_update_property_zval(this_ptr, ZEND_STRL("id"), &routeId); + ZEPHIR_INIT_ZVAL_NREF(_1); + ZVAL_LONG(&_1, (zephir_get_numberval(&uniqueId) + 1)); + zephir_update_static_property_ce(phalcon_cli_router_route_ce, ZEND_STRL("uniqueId"), &_1); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Link, getAttributes) +static PHP_METHOD(Phalcon_Cli_Router_Route, beforeMatch) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval attributes, required; - zval *url_param = NULL, *attributes_param = NULL; - zval url; + zval *callback, callback_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&required); + ZVAL_UNDEF(&callback_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(url) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(callback) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - zephir_get_arrval(&attributes, attributes_param); - - - ZEPHIR_INIT_VAR(&required); - zephir_create_array(&required, 1, 0); - zephir_array_update_string(&required, SL("href"), &url, PH_COPY | PH_SEPARATE); - zephir_array_unset_string(&attributes, SL("href"), PH_SEPARATE); - zephir_fast_array_merge(return_value, &required, &attributes); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - + zephir_fetch_params_without_memory_grow(1, 0, &callback); -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Meta) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Meta, phalcon, html_helper_meta, phalcon_html_helper_abstractseries_ce, phalcon_html_helper_meta_method_entry, 0); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("beforeMatch"), callback); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, add) +static PHP_METHOD(Phalcon_Cli_Router_Route, compilePattern) { + zend_bool _20; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, _1, _3; - zval attributes, _0, _2; + zval *pattern_param = NULL, idPattern, part, _0$$3, _4$$3, _6$$3, _8$$3, _10$$3, _12$$3, _16$$3, _1$$4, _2$$4, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8, _13$$9, _14$$9, _15$$9, _17$$10, _18$$10, _19$$10; + zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&idPattern); + ZVAL_UNDEF(&part); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_16$$3); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_11$$8); + ZVAL_UNDEF(&_13$$9); + ZVAL_UNDEF(&_14$$9); + ZVAL_UNDEF(&_15$$9); + ZVAL_UNDEF(&_17$$10); + ZVAL_UNDEF(&_18$$10); + ZVAL_UNDEF(&_19$$10); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(pattern) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + zephir_fetch_params(1, 1, 0, &pattern_param); + if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { + zephir_get_strval(&pattern, pattern_param); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_INIT_VAR(&pattern); } - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 3, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "renderTag"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "gettag", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - zephir_array_fast_append(&_2, &attributes); - zephir_array_fast_append(&_0, &_2); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "indent", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_0, &_3); - zephir_update_property_array_append(this_ptr, SL("store"), &_0); - RETURN_THIS(); + if (zephir_memnstr_str(&pattern, SL(":"), "phalcon/Cli/Router/Route.zep", 120)) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&idPattern); + ZEPHIR_CONCAT_VS(&idPattern, &_0$$3, "([a-zA-Z0-9\\_\\-]+)"); + if (zephir_memnstr_str(&pattern, SL(":delimiter"), "phalcon/Cli/Router/Route.zep", 126)) { + ZEPHIR_INIT_VAR(&_1$$4); + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_3$$4); + ZVAL_STRING(&_3$$4, ":delimiter"); + zephir_fast_str_replace(&_1$$4, &_3$$4, &_2$$4, &pattern); + zephir_get_strval(&pattern, &_1$$4); + } + zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&part); + ZEPHIR_CONCAT_VS(&part, &_4$$3, ":module"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 136)) { + ZEPHIR_INIT_VAR(&_5$$5); + zephir_fast_str_replace(&_5$$5, &part, &idPattern, &pattern); + zephir_get_strval(&pattern, &_5$$5); + } + zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&part); + ZEPHIR_CONCAT_VS(&part, &_6$$3, ":task"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 142)) { + ZEPHIR_INIT_VAR(&_7$$6); + zephir_fast_str_replace(&_7$$6, &part, &idPattern, &pattern); + zephir_get_strval(&pattern, &_7$$6); + } + zephir_read_property(&_8$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&part); + ZEPHIR_CONCAT_VS(&part, &_8$$3, ":namespace"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 148)) { + ZEPHIR_INIT_VAR(&_9$$7); + zephir_fast_str_replace(&_9$$7, &part, &idPattern, &pattern); + zephir_get_strval(&pattern, &_9$$7); + } + zephir_read_property(&_10$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&part); + ZEPHIR_CONCAT_VS(&part, &_10$$3, ":action"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 154)) { + ZEPHIR_INIT_VAR(&_11$$8); + zephir_fast_str_replace(&_11$$8, &part, &idPattern, &pattern); + zephir_get_strval(&pattern, &_11$$8); + } + zephir_read_property(&_12$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&part); + ZEPHIR_CONCAT_VS(&part, &_12$$3, ":params"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 160)) { + ZEPHIR_INIT_VAR(&_13$$9); + zephir_read_property(&_14$$9, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_15$$9); + ZEPHIR_CONCAT_SVS(&_15$$9, "(", &_14$$9, ".*)*"); + zephir_fast_str_replace(&_13$$9, &part, &_15$$9, &pattern); + zephir_get_strval(&pattern, &_13$$9); + } + zephir_read_property(&_16$$3, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&part); + ZEPHIR_CONCAT_VS(&part, &_16$$3, ":int"); + if (zephir_memnstr(&pattern, &part, "phalcon/Cli/Router/Route.zep", 170)) { + ZEPHIR_INIT_VAR(&_17$$10); + zephir_read_property(&_18$$10, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_19$$10); + ZEPHIR_CONCAT_VS(&_19$$10, &_18$$10, "([0-9]+)"); + zephir_fast_str_replace(&_17$$10, &part, &_19$$10, &pattern); + zephir_get_strval(&pattern, &_17$$10); + } + } + _20 = zephir_memnstr_str(&pattern, SL("("), "phalcon/Cli/Router/Route.zep", 183); + if (!(_20)) { + _20 = zephir_memnstr_str(&pattern, SL("["), "phalcon/Cli/Router/Route.zep", 183); + } + if (_20) { + ZEPHIR_CONCAT_SVS(return_value, "#^", &pattern, "$#"); + RETURN_MM(); + } + RETURN_CTOR(&pattern); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, addHttp) +static PHP_METHOD(Phalcon_Cli_Router_Route, convert) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *httpEquiv_param = NULL, *content_param = NULL, _0; - zval httpEquiv, content; + zval *name_param = NULL, *converter, converter_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&httpEquiv); - ZVAL_UNDEF(&content); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&converter_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(httpEquiv) - Z_PARAM_STR(content) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(converter) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &httpEquiv_param, &content_param); - zephir_get_strval(&httpEquiv, httpEquiv_param); - zephir_get_strval(&content, content_param); + zephir_fetch_params(1, 2, 0, &name_param, &converter); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "http-equiv"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "addelement", NULL, 329, &_0, &httpEquiv, &content); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array(this_ptr, SL("converters"), &name, converter); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, addName) +static PHP_METHOD(Phalcon_Cli_Router_Route, delimiter) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *content_param = NULL, _0; - zval name, content; + zval *delimiter_param = NULL; + zval delimiter; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&content); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&delimiter); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_STR(content) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(delimiter) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &content_param); - zephir_get_strval(&name, name_param); - zephir_get_strval(&content, content_param); + zephir_fetch_params(1, 0, 1, &delimiter_param); + if (!delimiter_param) { + ZEPHIR_INIT_VAR(&delimiter); + } else { + if (UNEXPECTED(Z_TYPE_P(delimiter_param) != IS_STRING && Z_TYPE_P(delimiter_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'delimiter' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(delimiter_param) == IS_STRING)) { + zephir_get_strval(&delimiter, delimiter_param); + } else { + ZEPHIR_INIT_VAR(&delimiter); + } + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "name"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "addelement", NULL, 329, &_0, &name, &content); - zephir_check_call_status(); - RETURN_THIS(); + zephir_update_static_property_ce(phalcon_cli_router_route_ce, ZEND_STRL("delimiterPath"), &delimiter); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, addProperty) +static PHP_METHOD(Phalcon_Cli_Router_Route, extractNamedParams) { + long _0, _5$$10, _26$$18; + zend_long cursor = 0, cursorVar = 0, marker = 0, bracketCount, parenthesesCount, foundPattern, intermediate, numberMatches; + zend_bool notValid = 0, _6$$11, _7$$11, _8$$11, _9$$11, _10$$11, _11$$11, _12$$11, _13$$11, _14$$11, _15$$11, _16$$11, _17$$11, _25$$17; + zval matches; + char ch = 0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *content_param = NULL, _0; - zval name, content; + zval *pattern_param = NULL, tmp, _1$$10, _2$$10, _3$$10, _18$$15, _19$$15, _20$$15, _22$$15, _23$$15, _28$$27, _29$$27; + zval pattern, route, item, variable, regexp, _4$$10, _21$$15, _24$$15, _27$$25, _30$$28; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&content); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&route); + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&variable); + ZVAL_UNDEF(®exp); + ZVAL_UNDEF(&_4$$10); + ZVAL_UNDEF(&_21$$15); + ZVAL_UNDEF(&_24$$15); + ZVAL_UNDEF(&_27$$25); + ZVAL_UNDEF(&_30$$28); + ZVAL_UNDEF(&tmp); + ZVAL_UNDEF(&_1$$10); + ZVAL_UNDEF(&_2$$10); + ZVAL_UNDEF(&_3$$10); + ZVAL_UNDEF(&_18$$15); + ZVAL_UNDEF(&_19$$15); + ZVAL_UNDEF(&_20$$15); + ZVAL_UNDEF(&_22$$15); + ZVAL_UNDEF(&_23$$15); + ZVAL_UNDEF(&_28$$27); + ZVAL_UNDEF(&_29$$27); + ZVAL_UNDEF(&matches); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_STR(content) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(pattern) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &content_param); - zephir_get_strval(&name, name_param); - zephir_get_strval(&content, content_param); + zephir_fetch_params(1, 1, 0, &pattern_param); + if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { + zephir_get_strval(&pattern, pattern_param); + } else { + ZEPHIR_INIT_VAR(&pattern); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "property"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "addelement", NULL, 329, &_0, &name, &content); - zephir_check_call_status(); - RETURN_THIS(); + bracketCount = 0; + parenthesesCount = 0; + foundPattern = 0; + intermediate = 0; + numberMatches = 0; + if (zephir_fast_strlen_ev(&pattern) == 0) { + RETURN_MM_BOOL(0); + } + ZEPHIR_INIT_VAR(&matches); + array_init(&matches); + ZEPHIR_INIT_VAR(&route); + for (_0 = 0; _0 < Z_STRLEN_P(&pattern); _0++) { + cursor = _0; + ch = ZEPHIR_STRING_OFFSET(&pattern, _0); + if (parenthesesCount == 0) { + if (ch == '{') { + if (bracketCount == 0) { + marker = (cursor + 1); + intermediate = 0; + notValid = 0; + } + bracketCount++; + } else if (ch == '}') { + bracketCount--; + if (intermediate > 0) { + if (bracketCount == 0) { + numberMatches++; + ZEPHIR_INIT_NVAR(&variable); + ZEPHIR_INIT_NVAR(®exp); + ZVAL_LONG(&_1$$10, marker); + ZVAL_LONG(&_2$$10, (cursor - marker)); + ZEPHIR_INIT_NVAR(&_3$$10); + zephir_substr(&_3$$10, &pattern, zephir_get_intval(&_1$$10), zephir_get_intval(&_2$$10), 0); + zephir_cast_to_string(&_4$$10, &_3$$10); + ZEPHIR_CPY_WRT(&item, &_4$$10); + for (_5$$10 = 0; _5$$10 < Z_STRLEN_P(&item); _5$$10++) { + cursorVar = _5$$10; + ch = ZEPHIR_STRING_OFFSET(&item, _5$$10); + if (ch == '\0') { + break; + } + _6$$11 = cursorVar == 0; + if (_6$$11) { + _7$$11 = ch >= 'a'; + if (_7$$11) { + _7$$11 = ch <= 'z'; + } + _8$$11 = _7$$11; + if (!(_8$$11)) { + _9$$11 = ch >= 'A'; + if (_9$$11) { + _9$$11 = ch <= 'Z'; + } + _8$$11 = _9$$11; + } + _6$$11 = !(_8$$11); + } + if (_6$$11) { + notValid = 1; + break; + } + _10$$11 = ch >= 'a'; + if (_10$$11) { + _10$$11 = ch <= 'z'; + } + _11$$11 = _10$$11; + if (!(_11$$11)) { + _12$$11 = ch >= 'A'; + if (_12$$11) { + _12$$11 = ch <= 'Z'; + } + _11$$11 = _12$$11; + } + _13$$11 = _11$$11; + if (!(_13$$11)) { + _14$$11 = ch >= '0'; + if (_14$$11) { + _14$$11 = ch <= '9'; + } + _13$$11 = _14$$11; + } + _15$$11 = _13$$11; + if (!(_15$$11)) { + _15$$11 = ch == '-'; + } + _16$$11 = _15$$11; + if (!(_16$$11)) { + _16$$11 = ch == '_'; + } + _17$$11 = _16$$11; + if (!(_17$$11)) { + _17$$11 = ch == ':'; + } + if (_17$$11) { + if (ch == ':') { + ZVAL_LONG(&_18$$15, 0); + ZVAL_LONG(&_19$$15, cursorVar); + ZEPHIR_INIT_NVAR(&_20$$15); + zephir_substr(&_20$$15, &item, 0 , zephir_get_intval(&_19$$15), 0); + zephir_cast_to_string(&_21$$15, &_20$$15); + ZEPHIR_CPY_WRT(&variable, &_21$$15); + ZVAL_LONG(&_22$$15, (cursorVar + 1)); + ZEPHIR_INIT_NVAR(&_23$$15); + zephir_substr(&_23$$15, &item, zephir_get_intval(&_22$$15), 0, ZEPHIR_SUBSTR_NO_LENGTH); + zephir_cast_to_string(&_24$$15, &_23$$15); + ZEPHIR_CPY_WRT(®exp, &_24$$15); + break; + } + } else { + notValid = 1; + break; + } + } + if (!(notValid)) { + ZEPHIR_INIT_NVAR(&tmp); + ZVAL_LONG(&tmp, numberMatches); + _25$$17 = zephir_is_true(&variable); + if (_25$$17) { + _25$$17 = zephir_is_true(®exp); + } + if (_25$$17) { + foundPattern = 0; + for (_26$$18 = 0; _26$$18 < Z_STRLEN_P(®exp); _26$$18++) { + ch = ZEPHIR_STRING_OFFSET(®exp, _26$$18); + if (ch == '\0') { + break; + } + if (!(foundPattern)) { + if (ch == '(') { + foundPattern = 1; + } + } else { + if (ch == ')') { + foundPattern = 2; + break; + } + } + } + if (foundPattern != 2) { + ZEPHIR_INIT_NVAR(&_27$$25); + ZEPHIR_CONCAT_SVS(&_27$$25, "(", ®exp, ")"); + zephir_concat_self(&route, &_27$$25); + } else { + zephir_concat_self(&route, ®exp); + } + zephir_array_update_zval(&matches, &variable, &tmp, PH_COPY | PH_SEPARATE); + } else { + zephir_read_property(&_28$$27, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&_29$$27); + ZEPHIR_CONCAT_SVS(&_29$$27, "([^", &_28$$27, "]*)"); + zephir_concat_self(&route, &_29$$27); + zephir_array_update_zval(&matches, &item, &tmp, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_INIT_NVAR(&_30$$28); + ZEPHIR_CONCAT_SVS(&_30$$28, "{", &item, "}"); + zephir_concat_self(&route, &_30$$28); + } + continue; + } + } + } + } + if (bracketCount == 0) { + if (ch == '(') { + parenthesesCount++; + } else if (ch == ')') { + parenthesesCount--; + if (parenthesesCount == 0) { + numberMatches++; + } + } + } + if (bracketCount > 0) { + intermediate++; + } else { + zephir_concat_self_char(&route, ch); + } + } + zephir_create_array(return_value, 2, 0); + zephir_array_fast_append(return_value, &route); + zephir_array_fast_append(return_value, &matches); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, getTag) +static PHP_METHOD(Phalcon_Cli_Router_Route, getBeforeMatch) { zval *this_ptr = getThis(); - RETURN_STRING("meta"); + RETURN_MEMBER(getThis(), "beforeMatch"); } -static PHP_METHOD(Phalcon_Html_Helper_Meta, addElement) +static PHP_METHOD(Phalcon_Cli_Router_Route, getCompiledPattern) { - zval attributes; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *element_param = NULL, *value_param = NULL, *content_param = NULL; - zval element, value, content; zval *this_ptr = getThis(); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&content); - ZVAL_UNDEF(&attributes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(element) - Z_PARAM_STR(value) - Z_PARAM_STR(content) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &element_param, &value_param, &content_param); - zephir_get_strval(&element, element_param); - zephir_get_strval(&value, value_param); - zephir_get_strval(&content, content_param); - ZEPHIR_INIT_VAR(&attributes); - zephir_create_array(&attributes, 2, 0); - zephir_array_update_zval(&attributes, &element, &value, PH_COPY); - zephir_array_update_string(&attributes, SL("content"), &content, PH_COPY | PH_SEPARATE); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &attributes); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "compiledPattern"); } +static PHP_METHOD(Phalcon_Cli_Router_Route, getConverters) +{ + zval *this_ptr = getThis(); + + RETURN_MEMBER(getThis(), "converters"); +} -#ifdef HAVE_CONFIG_H -#endif +static PHP_METHOD(Phalcon_Cli_Router_Route, getDelimiter) +{ + zval _0; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + zephir_read_static_property_ce(&_0, phalcon_cli_router_route_ce, SL("delimiterPath"), PH_NOISY_CC | PH_READONLY); + RETURN_CTORW(&_0); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Ol) +static PHP_METHOD(Phalcon_Cli_Router_Route, getDescription) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Ol, phalcon, html_helper_ol, phalcon_html_helper_abstractlist_ce, phalcon_html_helper_ol_method_entry, 0); + zval *this_ptr = getThis(); - return SUCCESS; + + + RETURN_MEMBER(getThis(), "description"); } -static PHP_METHOD(Phalcon_Html_Helper_Ol, add) +static PHP_METHOD(Phalcon_Cli_Router_Route, getName) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes, _0, _2; - zval *text_param = NULL, *attributes_param = NULL, *raw_param = NULL, _1, _3, _4; - zval text; zval *this_ptr = getThis(); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &text_param, &attributes_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 3, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "renderFullElement"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 4, 0); - ZEPHIR_OBS_VAR(&_3); - zephir_read_property(&_3, this_ptr, ZEND_STRL("elementTag"), PH_NOISY_CC); - zephir_array_fast_append(&_2, &_3); - zephir_array_fast_append(&_2, &text); - zephir_array_fast_append(&_2, &attributes); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_BOOL(&_1, raw); - zephir_array_fast_append(&_2, &_1); - zephir_array_fast_append(&_0, &_2); - ZEPHIR_CALL_METHOD(&_4, this_ptr, "indent", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_0, &_4); - zephir_update_property_array_append(this_ptr, SL("store"), &_0); - RETURN_THIS(); + RETURN_MEMBER(getThis(), "name"); } -static PHP_METHOD(Phalcon_Html_Helper_Ol, getTag) +static PHP_METHOD(Phalcon_Cli_Router_Route, getPaths) { zval *this_ptr = getThis(); - RETURN_STRING("ol"); + RETURN_MEMBER(getThis(), "paths"); } +static PHP_METHOD(Phalcon_Cli_Router_Route, getPattern) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Script) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Script, phalcon, html_helper_script, phalcon_html_helper_abstractseries_ce, phalcon_html_helper_script_method_entry, 0); - - return SUCCESS; + RETURN_MEMBER(getThis(), "pattern"); } -static PHP_METHOD(Phalcon_Html_Helper_Script, add) +static PHP_METHOD(Phalcon_Cli_Router_Route, getReversedPaths) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes, _0, _2; - zval *url_param = NULL, *attributes_param = NULL, _1, _3; - zval url; zval *this_ptr = getThis(); - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&attributes); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(url) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 3, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "renderFullElement"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 3, 0); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "gettag", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, ""); - zephir_array_fast_append(&_2, &_1); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "getattributes", NULL, 0, &url, &attributes); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - zephir_array_fast_append(&_0, &_2); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "indent", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("paths"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_FUNCTION("array_flip", NULL, 96, &_0); zephir_check_call_status(); - zephir_array_fast_append(&_0, &_3); - zephir_update_property_array_append(this_ptr, SL("store"), &_0); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Script, getAttributes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval attributes, required; - zval *url_param = NULL, *attributes_param = NULL; - zval url; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&required); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(url) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - zephir_get_arrval(&attributes, attributes_param); - - - ZEPHIR_INIT_VAR(&required); - zephir_create_array(&required, 2, 0); - zephir_array_update_string(&required, SL("src"), &url, PH_COPY | PH_SEPARATE); - add_assoc_stringl_ex(&required, SL("type"), SL("application/javascript")); - zephir_array_unset_string(&attributes, SL("src"), PH_SEPARATE); - zephir_fast_array_merge(return_value, &required, &attributes); RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_Script, getTag) +static PHP_METHOD(Phalcon_Cli_Router_Route, getRouteId) { zval *this_ptr = getThis(); - RETURN_STRING("script"); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Style) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Style, phalcon, html_helper_style, phalcon_html_helper_abstractseries_ce, phalcon_html_helper_style_method_entry, 0); - - zend_declare_property_bool(phalcon_html_helper_style_ce, SL("isStyle"), 0, ZEND_ACC_PRIVATE); - return SUCCESS; + RETURN_MEMBER(getThis(), "id"); } -static PHP_METHOD(Phalcon_Html_Helper_Style, add) +static PHP_METHOD(Phalcon_Cli_Router_Route, reConfigure) { + zend_bool _1$$10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes, _0, _2; - zval *url_param = NULL, *attributes_param = NULL, _1, _3; - zval url; + zend_long ZEPHIR_LAST_CALL_STATUS, _0$$4; + zval *pattern_param = NULL, *paths = NULL, paths_sub, __$null, moduleName, taskName, actionName, parts, routePaths, realClassName, namespaceName, pcrePattern, compiledPattern, extracted, _2$$9, _3$$18, _4$$18, _5$$21, _6$$21, _7$$21; + zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&pattern); + ZVAL_UNDEF(&paths_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&moduleName); + ZVAL_UNDEF(&taskName); + ZVAL_UNDEF(&actionName); + ZVAL_UNDEF(&parts); + ZVAL_UNDEF(&routePaths); + ZVAL_UNDEF(&realClassName); + ZVAL_UNDEF(&namespaceName); + ZVAL_UNDEF(&pcrePattern); + ZVAL_UNDEF(&compiledPattern); + ZVAL_UNDEF(&extracted); + ZVAL_UNDEF(&_2$$9); + ZVAL_UNDEF(&_3$$18); + ZVAL_UNDEF(&_4$$18); + ZVAL_UNDEF(&_5$$21); + ZVAL_UNDEF(&_6$$21); + ZVAL_UNDEF(&_7$$21); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(url) + Z_PARAM_STR(pattern) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_ZVAL_OR_NULL(paths) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 1, &pattern_param, &paths); + if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); + RETURN_MM_NULL(); } - - - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 3, 0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "renderTag"); - zephir_array_fast_append(&_0, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 3, 0); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "gettag", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "getattributes", NULL, 0, &url, &attributes); - zephir_check_call_status(); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "/"); - zephir_array_fast_append(&_2, &_1); - zephir_array_fast_append(&_0, &_2); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "indent", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_0, &_3); - zephir_update_property_array_append(this_ptr, SL("store"), &_0); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Style, setStyle) -{ - zval *flag_param = NULL, __$true, __$false; - zend_bool flag; - zval *this_ptr = getThis(); - - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(flag) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &flag_param); - flag = zephir_get_boolval(flag_param); - - - if (flag) { - zephir_update_property_zval(this_ptr, ZEND_STRL("isStyle"), &__$true); + if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { + zephir_get_strval(&pattern, pattern_param); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("isStyle"), &__$false); - } - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Style, getAttributes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval attributes, required; - zval *url_param = NULL, *attributes_param = NULL, _0; - zval url; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&url); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&required); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(url) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &url_param, &attributes_param); - zephir_get_strval(&url, url_param); - zephir_get_arrval(&attributes, attributes_param); - - - ZEPHIR_INIT_VAR(&required); - zephir_create_array(&required, 4, 0); - add_assoc_stringl_ex(&required, SL("rel"), SL("stylesheet")); - zephir_array_update_string(&required, SL("href"), &url, PH_COPY | PH_SEPARATE); - add_assoc_stringl_ex(&required, SL("type"), SL("text/css")); - add_assoc_stringl_ex(&required, SL("media"), SL("screen")); - zephir_read_property(&_0, this_ptr, ZEND_STRL("isStyle"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - zephir_array_unset_string(&required, SL("rel"), PH_SEPARATE); + ZEPHIR_INIT_VAR(&pattern); } - zephir_array_unset_string(&attributes, SL("href"), PH_SEPARATE); - zephir_fast_array_merge(return_value, &required, &attributes); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Style, getTag) -{ - zval _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - - - ZEPHIR_MM_GROW(); - - ZEPHIR_INIT_VAR(&_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("isStyle"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_1)) { - ZVAL_STRING(&_0, "style"); + if (!paths) { + paths = &paths_sub; + ZEPHIR_CPY_WRT(paths, &__$null); } else { - ZVAL_STRING(&_0, "link"); + ZEPHIR_SEPARATE_PARAM(paths); } - RETURN_CCTOR(&_0); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Title) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Title, phalcon, html_helper_title, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_title_method_entry, 0); - - zend_declare_property_null(phalcon_html_helper_title_ce, SL("append"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_helper_title_ce, SL("prepend"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_title_ce, SL("title"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_title_ce, SL("separator"), "", ZEND_ACC_PROTECTED); - phalcon_html_helper_title_ce->create_object = zephir_init_properties_Phalcon_Html_Helper_Title; - - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Html_Helper_Title, __invoke) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *indent_param = NULL, *delimiter_param = NULL, _0; - zval indent, delimiter; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&indent); - ZVAL_UNDEF(&delimiter); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_STR(indent) - Z_PARAM_STR_OR_NULL(delimiter) - ZEND_PARSE_PARAMETERS_END(); -#endif + if (Z_TYPE_P(paths) == IS_NULL) { + ZEPHIR_INIT_NVAR(paths); + array_init(paths); + } + if (Z_TYPE_P(paths) == IS_STRING) { + ZEPHIR_INIT_VAR(&moduleName); + ZVAL_NULL(&moduleName); + ZEPHIR_INIT_VAR(&taskName); + ZVAL_NULL(&taskName); + ZEPHIR_INIT_VAR(&actionName); + ZVAL_NULL(&actionName); + ZEPHIR_INIT_VAR(&parts); + zephir_fast_explode_str(&parts, SL("::"), paths, LONG_MAX); + do { + _0$$4 = zephir_fast_count_int(&parts); + if (_0$$4 == 3) { + ZEPHIR_OBS_NVAR(&moduleName); + zephir_array_fetch_long(&moduleName, &parts, 0, PH_NOISY, "phalcon/Cli/Router/Route.zep", 454); + ZEPHIR_OBS_NVAR(&taskName); + zephir_array_fetch_long(&taskName, &parts, 1, PH_NOISY, "phalcon/Cli/Router/Route.zep", 455); + ZEPHIR_OBS_NVAR(&actionName); + zephir_array_fetch_long(&actionName, &parts, 2, PH_NOISY, "phalcon/Cli/Router/Route.zep", 456); + break; + } + if (_0$$4 == 2) { + ZEPHIR_OBS_NVAR(&taskName); + zephir_array_fetch_long(&taskName, &parts, 0, PH_NOISY, "phalcon/Cli/Router/Route.zep", 460); + ZEPHIR_OBS_NVAR(&actionName); + zephir_array_fetch_long(&actionName, &parts, 1, PH_NOISY, "phalcon/Cli/Router/Route.zep", 461); + break; + } + if (_0$$4 == 1) { + ZEPHIR_OBS_NVAR(&taskName); + zephir_array_fetch_long(&taskName, &parts, 0, PH_NOISY, "phalcon/Cli/Router/Route.zep", 465); + break; + } + } while(0); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &indent_param, &delimiter_param); - if (!indent_param) { - ZEPHIR_INIT_VAR(&indent); - ZVAL_STRING(&indent, " "); + ZEPHIR_INIT_VAR(&routePaths); + array_init(&routePaths); + if (Z_TYPE_P(&moduleName) != IS_NULL) { + zephir_array_update_string(&routePaths, SL("module"), &moduleName, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&taskName) != IS_NULL) { + if (zephir_memnstr_str(&taskName, SL("\\"), "phalcon/Cli/Router/Route.zep", 479)) { + ZEPHIR_INIT_VAR(&realClassName); + zephir_get_class_ns(&realClassName, &taskName, 0); + ZEPHIR_INIT_VAR(&namespaceName); + zephir_get_ns_class(&namespaceName, &taskName, 0); + _1$$10 = Z_TYPE_P(&namespaceName) == IS_NULL; + if (!(_1$$10)) { + _1$$10 = Z_TYPE_P(&realClassName) == IS_NULL; + } + if (UNEXPECTED(_1$$10)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_router_exception_ce, "The route contains invalid paths", "phalcon/Cli/Router/Route.zep", 489); + return; + } + if (zephir_is_true(&namespaceName)) { + zephir_array_update_string(&routePaths, SL("namespace"), &namespaceName, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_CPY_WRT(&realClassName, &taskName); + } + ZEPHIR_INIT_VAR(&_2$$9); + zephir_uncamelize(&_2$$9, &realClassName, NULL ); + zephir_array_update_string(&routePaths, SL("task"), &_2$$9, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&actionName) != IS_NULL) { + zephir_array_update_string(&routePaths, SL("action"), &actionName, PH_COPY | PH_SEPARATE); + } } else { - zephir_get_strval(&indent, indent_param); + ZEPHIR_CPY_WRT(&routePaths, paths); } - if (!delimiter_param) { - ZEPHIR_INIT_VAR(&delimiter); - } else { - zephir_get_strval(&delimiter, delimiter_param); + if (UNEXPECTED(Z_TYPE_P(&routePaths) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_cli_router_exception_ce, "The route contains invalid paths", "phalcon/Cli/Router/Route.zep", 513); + return; } - - - ZEPHIR_INIT_VAR(&_0); - if (Z_TYPE_P(&delimiter) == IS_NULL) { - ZEPHIR_INIT_NVAR(&_0); - ZEPHIR_GET_CONSTANT(&_0, "PHP_EOL"); + if (!(zephir_start_with_str(&pattern, SL("#")))) { + if (zephir_memnstr_str(&pattern, SL("{"), "phalcon/Cli/Router/Route.zep", 521)) { + ZEPHIR_CALL_METHOD(&extracted, this_ptr, "extractnamedparams", NULL, 0, &pattern); + zephir_check_call_status(); + ZEPHIR_OBS_VAR(&pcrePattern); + zephir_array_fetch_long(&pcrePattern, &extracted, 0, PH_NOISY, "phalcon/Cli/Router/Route.zep", 526); + ZEPHIR_INIT_VAR(&_3$$18); + zephir_array_fetch_long(&_4$$18, &extracted, 1, PH_NOISY | PH_READONLY, "phalcon/Cli/Router/Route.zep", 527); + zephir_fast_array_merge(&_3$$18, &routePaths, &_4$$18); + ZEPHIR_CPY_WRT(&routePaths, &_3$$18); + } else { + ZEPHIR_CPY_WRT(&pcrePattern, &pattern); + } + ZEPHIR_CALL_METHOD(&compiledPattern, this_ptr, "compilepattern", NULL, 0, &pcrePattern); + zephir_check_call_status(); } else { - ZEPHIR_CPY_WRT(&_0, &delimiter); + if (zephir_memnstr_str(&pattern, SL(":delimiter"), "phalcon/Cli/Router/Route.zep", 538)) { + ZEPHIR_INIT_VAR(&_5$$21); + zephir_read_property(&_6$$21, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_7$$21); + ZVAL_STRING(&_7$$21, ":delimiter"); + zephir_fast_str_replace(&_5$$21, &_7$$21, &_6$$21, &pattern); + zephir_get_strval(&pattern, &_5$$21); + } + ZEPHIR_CPY_WRT(&compiledPattern, &pattern); } - zephir_update_property_zval(this_ptr, ZEND_STRL("delimiter"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("indent"), &indent); - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("pattern"), &pattern); + zephir_update_property_zval(this_ptr, ZEND_STRL("compiledPattern"), &compiledPattern); + zephir_update_property_zval(this_ptr, ZEND_STRL("paths"), &routePaths); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Title, __toString) +static PHP_METHOD(Phalcon_Cli_Router_Route, reset) { - zval _1; - zval items, _0, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&items); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_11); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_1); - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("prepend"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 1, 0); - ZEPHIR_OBS_VAR(&_2); - zephir_read_property(&_2, this_ptr, ZEND_STRL("title"), PH_NOISY_CC); - zephir_array_fast_append(&_1, &_2); - zephir_read_property(&_3, this_ptr, ZEND_STRL("append"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_FUNCTION(&items, "array_merge", NULL, 330, &_0, &_1, &_3); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_4); - array_init(&_4); - zephir_update_property_zval(this_ptr, ZEND_STRL("append"), &_4); - ZEPHIR_INIT_VAR(&_5); - array_init(&_5); - zephir_update_property_zval(this_ptr, ZEND_STRL("prepend"), &_5); - ZEPHIR_INIT_VAR(&_6); - ZEPHIR_INIT_NVAR(&_6); - ZVAL_STRING(&_6, ""); - zephir_update_property_zval(this_ptr, ZEND_STRL("title"), &_6); - zephir_read_property(&_7, this_ptr, ZEND_STRL("indent"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_6); - zephir_read_property(&_9, this_ptr, ZEND_STRL("separator"), PH_NOISY_CC | PH_READONLY); - zephir_fast_join(&_6, &_9, &items); - ZEPHIR_INIT_VAR(&_10); - array_init(&_10); - ZEPHIR_INIT_VAR(&_11); - ZVAL_STRING(&_11, "title"); - ZVAL_BOOL(&_12, 1); - ZEPHIR_CALL_METHOD(&_8, this_ptr, "renderfullelement", NULL, 0, &_11, &_6, &_10, &_12); - zephir_check_call_status(); - zephir_read_property(&_12, this_ptr, ZEND_STRL("delimiter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_VVV(return_value, &_7, &_8, &_12); - RETURN_MM(); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_LONG(&_0, 0); + zephir_update_static_property_ce(phalcon_cli_router_route_ce, ZEND_STRL("uniqueId"), &_0); } -static PHP_METHOD(Phalcon_Html_Helper_Title, append) +static PHP_METHOD(Phalcon_Cli_Router_Route, setDescription) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *text_param = NULL, *raw_param = NULL, _0, _1; - zval text; + zval *description_param = NULL; + zval description; zval *this_ptr = getThis(); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&description); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(description) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &text_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - - - ZEPHIR_INIT_VAR(&_0); - if (raw) { - ZEPHIR_CPY_WRT(&_0, &text); - } else { - zephir_read_property(&_1, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_0, &_1, "html", NULL, 0, &text); - zephir_check_call_status(); + zephir_fetch_params(1, 1, 0, &description_param); + if (UNEXPECTED(Z_TYPE_P(description_param) != IS_STRING && Z_TYPE_P(description_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'description' must be of the type string")); + RETURN_MM_NULL(); } - zephir_get_strval(&text, &_0); - zephir_update_property_array_append(this_ptr, SL("append"), &text); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Title, get) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "title"); -} - -static PHP_METHOD(Phalcon_Html_Helper_Title, set) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *text_param = NULL, *raw_param = NULL, _0, _1; - zval text; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &text_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!raw_param) { - raw = 0; + if (EXPECTED(Z_TYPE_P(description_param) == IS_STRING)) { + zephir_get_strval(&description, description_param); } else { - raw = zephir_get_boolval(raw_param); + ZEPHIR_INIT_VAR(&description); } - ZEPHIR_INIT_VAR(&_0); - if (raw) { - ZEPHIR_CPY_WRT(&_0, &text); - } else { - zephir_read_property(&_1, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_0, &_1, "html", NULL, 0, &text); - zephir_check_call_status(); - } - zephir_get_strval(&text, &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("title"), &text); + zephir_update_property_zval(this_ptr, ZEND_STRL("description"), &description); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Title, setSeparator) +static PHP_METHOD(Phalcon_Cli_Router_Route, setName) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *separator_param = NULL, *raw_param = NULL, _0, _1; - zval separator; + zval *name_param = NULL; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&separator); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&name); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(separator) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &separator_param, &raw_param); - zephir_get_strval(&separator, separator_param); - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - - - ZEPHIR_INIT_VAR(&_0); - if (raw) { - ZEPHIR_CPY_WRT(&_0, &separator); - } else { - zephir_read_property(&_1, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_0, &_1, "html", NULL, 0, &separator); - zephir_check_call_status(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); } - zephir_update_property_zval(this_ptr, ZEND_STRL("separator"), &_0); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Html_Helper_Title, prepend) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *text_param = NULL, *raw_param = NULL, _0, _1; - zval text; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(text) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &text_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!raw_param) { - raw = 0; + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - raw = zephir_get_boolval(raw_param); + ZEPHIR_INIT_VAR(&name); } - ZEPHIR_INIT_VAR(&_0); - if (raw) { - ZEPHIR_CPY_WRT(&_0, &text); - } else { - zephir_read_property(&_1, this_ptr, ZEND_STRL("escaper"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_0, &_1, "html", NULL, 0, &text); - zephir_check_call_status(); - } - zephir_get_strval(&text, &_0); - zephir_update_property_array_append(this_ptr, SL("prepend"), &text); + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); RETURN_THIS(); } -zend_object *zephir_init_properties_Phalcon_Html_Helper_Title(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_Cli_Router_Route(zend_class_entry *class_type) { zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; @@ -26963,17 +27148,17 @@ zend_object *zephir_init_properties_Phalcon_Html_Helper_Title(zend_class_entry * { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("prepend"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("paths"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("prepend"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("paths"), &_1$$3); } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("append"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("converters"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_2) == IS_NULL) { ZEPHIR_INIT_VAR(&_3$$4); array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("append"), &_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("converters"), &_3$$4); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -26990,22 +27175,27 @@ zend_object *zephir_init_properties_Phalcon_Html_Helper_Title(zend_class_entry * -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Ul) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Router_RouteInterface) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper, Ul, phalcon, html_helper_ul, phalcon_html_helper_ol_ce, phalcon_html_helper_ul_method_entry, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Cli\\Router, RouteInterface, phalcon, cli_router_routeinterface, phalcon_cli_router_routeinterface_method_entry); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Ul, getTag) -{ - zval *this_ptr = getThis(); - - - - RETURN_STRING("ul"); -} - +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, compilePattern); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, delimiter); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getCompiledPattern); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getDelimiter); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getDescription); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getPaths); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getPattern); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getReversedPaths); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, getRouteId); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, reConfigure); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, reset); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, setDescription); +ZEPHIR_DOC_METHOD(Phalcon_Cli_Router_RouteInterface, setName); @@ -27016,175 +27206,45 @@ static PHP_METHOD(Phalcon_Html_Helper_Ul, getTag) -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_AbstractInput) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Console_Exception) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, AbstractInput, phalcon, html_helper_input_abstractinput, phalcon_html_helper_abstracthelper_ce, phalcon_html_helper_input_abstractinput_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_string(phalcon_html_helper_input_abstractinput_ce, SL("type"), "text", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_html_helper_input_abstractinput_ce, SL("attributes"), ZEND_ACC_PROTECTED); - phalcon_html_helper_input_abstractinput_ce->create_object = zephir_init_properties_Phalcon_Html_Helper_Input_AbstractInput; + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli\\Console, Exception, phalcon, cli_console_exception, phalcon_application_exception_ce, NULL, 0); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Input_AbstractInput, __invoke) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes, _0; - zval *name_param = NULL, *value_param = NULL, *attributes_param = NULL, _1, _3, _4, _2$$3; - zval name, value; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(name) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(value) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &name_param, &value_param, &attributes_param); - zephir_get_strval(&name, name_param); - if (!value_param) { - ZEPHIR_INIT_VAR(&value); - } else { - zephir_get_strval(&value, value_param); - } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); - } else { - zephir_get_arrval(&attributes, attributes_param); - } - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 2, 0); - ZEPHIR_OBS_VAR(&_1); - zephir_read_property(&_1, this_ptr, ZEND_STRL("type"), PH_NOISY_CC); - zephir_array_update_string(&_0, SL("type"), &_1, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_0, SL("name"), &name, PH_COPY | PH_SEPARATE); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_0); - if (!(zephir_array_isset_string(&attributes, SL("id")))) { - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "id"); - zephir_update_property_array(this_ptr, SL("attributes"), &_2$$3, &name); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", NULL, 0, &value); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - zephir_read_property(&_4, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_3, &_4, &attributes); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_3); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Html_Helper_Input_AbstractInput, __toString) +ZEPHIR_INIT_CLASS(Phalcon_Cli_Dispatcher_Exception) { - zval _0, _1, _2, _3; - zval attributes; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Cli\\Dispatcher, Exception, phalcon, cli_dispatcher_exception, phalcon_dispatcher_exception_ce, NULL, 0); + return SUCCESS; +} - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "input"); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "/"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rendertag", NULL, 0, &_2, &attributes, &_3); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Html_Helper_Input_AbstractInput, setValue) -{ - zend_bool _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *value_param = NULL, _1$$3; - zval value; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(value) - ZEND_PARSE_PARAMETERS_END(); +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &value_param); - if (!value_param) { - ZEPHIR_INIT_VAR(&value); - } else { - zephir_get_strval(&value, value_param); - } - _0 = zephir_is_numeric(&value); - if (!(_0)) { - _0 = !(ZEPHIR_IS_EMPTY(&value)); - } - if (_0) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "value"); - zephir_update_property_array(this_ptr, SL("attributes"), &_1$$3, &value); - } - RETURN_THIS(); -} -zend_object *zephir_init_properties_Phalcon_Html_Helper_Input_AbstractInput(zend_class_entry *class_type) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Exception) { - zval _0, _1$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms, Exception, phalcon, forms_exception, zend_ce_exception, NULL, 0); - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_1$$3); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } + return SUCCESS; } @@ -27197,785 +27257,1506 @@ zend_object *zephir_init_properties_Phalcon_Html_Helper_Input_AbstractInput(zend -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Checkbox) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Form) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Checkbox, phalcon, html_helper_input_checkbox, phalcon_html_helper_input_abstractinput_ce, phalcon_html_helper_input_checkbox_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms, Form, phalcon, forms_form, phalcon_di_injectable_ce, phalcon_forms_form_method_entry, 0); - zend_declare_property_null(phalcon_html_helper_input_checkbox_ce, SL("label"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_input_checkbox_ce, SL("type"), "checkbox", ZEND_ACC_PROTECTED); - phalcon_html_helper_input_checkbox_ce->create_object = zephir_init_properties_Phalcon_Html_Helper_Input_Checkbox; + zend_declare_property_null(phalcon_forms_form_ce, SL("attributes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("data"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("filteredData"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("elements"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("elementsIndexed"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("entity"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("messages"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_forms_form_ce, SL("position"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("options"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("tagFactory"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("validation"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_form_ce, SL("whitelist"), ZEND_ACC_PROTECTED); + phalcon_forms_form_ce->create_object = zephir_init_properties_Phalcon_Forms_Form; + zend_class_implements(phalcon_forms_form_ce, 1, zend_ce_countable); + zend_class_implements(phalcon_forms_form_ce, 1, zend_ce_iterator); + zend_class_implements(phalcon_forms_form_ce, 1, phalcon_html_attributes_attributesinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Html_Helper_Input_Checkbox, __construct) +static PHP_METHOD(Phalcon_Forms_Form, getValidation) { - zval _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *escaper, escaper_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&escaper_sub); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(escaper, phalcon_html_escaper_escaperinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &escaper); + RETURN_MEMBER(getThis(), "validation"); +} +static PHP_METHOD(Phalcon_Forms_Form, getWhitelist) +{ + zval *this_ptr = getThis(); - ZEPHIR_CALL_PARENT(NULL, phalcon_html_helper_input_checkbox_ce, getThis(), "__construct", &_0, 0, escaper); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 3, 0); - add_assoc_stringl_ex(&_1, SL("start"), SL("")); - add_assoc_stringl_ex(&_1, SL("text"), SL("")); - add_assoc_stringl_ex(&_1, SL("end"), SL("")); - zephir_update_property_zval(this_ptr, ZEND_STRL("label"), &_1); - ZEPHIR_MM_RESTORE(); + + + RETURN_MEMBER(getThis(), "whitelist"); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Checkbox, __toString) +static PHP_METHOD(Phalcon_Forms_Form, __construct) { - zval _2; - zval element, label, unchecked, _1, _3, _4, _5; + zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_0 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval userOptions; + zval *entity = NULL, entity_sub, *userOptions_param = NULL, __$null, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&element); - ZVAL_UNDEF(&label); - ZVAL_UNDEF(&unchecked); + ZVAL_UNDEF(&entity_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_2); - - - ZEPHIR_MM_GROW(); - - ZEPHIR_CALL_METHOD(NULL, this_ptr, "processchecked", NULL, 90); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&unchecked, this_ptr, "processunchecked", NULL, 91); - zephir_check_call_status(); - ZEPHIR_CALL_PARENT(&element, phalcon_html_helper_input_checkbox_ce, getThis(), "__tostring", &_0, 0); + ZVAL_UNDEF(&userOptions); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 2) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(entity) + Z_PARAM_ARRAY(userOptions) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 2, &entity, &userOptions_param); + if (!entity) { + entity = &entity_sub; + entity = &__$null; + } + if (!userOptions_param) { + ZEPHIR_INIT_VAR(&userOptions); + array_init(&userOptions); + } else { + zephir_get_arrval(&userOptions, userOptions_param); + } + + + _0 = Z_TYPE_P(entity) != IS_NULL; + if (_0) { + _0 = Z_TYPE_P(entity) != IS_OBJECT; + } + if (UNEXPECTED(_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_forms_exception_ce, "The base entity is not valid", "phalcon/Forms/Form.zep", 98); + return; + } + zephir_update_property_zval(this_ptr, ZEND_STRL("entity"), entity); + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &userOptions); + ZEPHIR_INIT_VAR(&_1); + object_init_ex(&_1, phalcon_html_attributes_ce); + ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 22); zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("label"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&label, &_1); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 3, 0); - add_assoc_stringl_ex(&_2, SL("start"), SL("")); - add_assoc_stringl_ex(&_2, SL("text"), SL("")); - add_assoc_stringl_ex(&_2, SL("end"), SL("")); - zephir_update_property_zval(this_ptr, ZEND_STRL("label"), &_2); - zephir_array_fetch_string(&_3, &label, SL("start"), PH_NOISY | PH_READONLY, "phalcon/Html/Helper/Input/Checkbox.zep", 70); - zephir_array_fetch_string(&_4, &label, SL("text"), PH_NOISY | PH_READONLY, "phalcon/Html/Helper/Input/Checkbox.zep", 72); - zephir_array_fetch_string(&_5, &label, SL("end"), PH_NOISY | PH_READONLY, "phalcon/Html/Helper/Input/Checkbox.zep", 72); - ZEPHIR_CONCAT_VVVVV(return_value, &unchecked, &_3, &element, &_4, &_5); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("initialize")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 0, entity, &userOptions); + zephir_check_call_status(); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Checkbox, label) +static PHP_METHOD(Phalcon_Forms_Form, add) { + zend_string *_9$$5; + zend_ulong _8$$5; + zval elements; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, text, _0, _2, _3, _5, _6; - zval attributes, _1, _4; + zend_bool type, _0, _3; + zval position; + zval *element, element_sub, *position_param = NULL, *type_param = NULL, name, key, value, _1, _4, _2$$3, _5$$5, *_6$$5, _7$$5; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&element_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&elements); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_OBJECT_OF_CLASS(element, phalcon_forms_element_elementinterface_ce) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(attributes) + Z_PARAM_STR_OR_NULL(position) + Z_PARAM_BOOL_OR_NULL(type, is_null_true) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &attributes_param); - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + zephir_fetch_params(1, 1, 2, &element, &position_param, &type_param); + if (!position_param) { + ZEPHIR_INIT_VAR(&position); } else { - zephir_get_arrval(&attributes, attributes_param); + zephir_get_strval(&position, position_param); + } + if (!type_param) { + type = 0; + } else { + type = zephir_get_boolval(type_param); } - ZEPHIR_OBS_VAR(&text); - if (!(zephir_array_isset_string_fetch(&text, &attributes, SL("text"), 0))) { - ZEPHIR_INIT_NVAR(&text); - ZVAL_STRING(&text, ""); - } - zephir_array_unset_string(&attributes, SL("text"), PH_SEPARATE); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 1, 0); - zephir_read_property(&_2, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_VAR(&_3); - zephir_array_fetch_string(&_3, &_2, SL("id"), PH_NOISY, "phalcon/Html/Helper/Input/Checkbox.zep", 95); - zephir_array_update_string(&_1, SL("for"), &_3, PH_COPY | PH_SEPARATE); - zephir_fast_array_merge(&_0, &_1, &attributes); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_INIT_VAR(&_4); - zephir_create_array(&_4, 3, 0); - ZEPHIR_INIT_VAR(&_6); - ZVAL_STRING(&_6, "label"); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "rendertag", NULL, 0, &_6, &attributes); + ZEPHIR_CALL_METHOD(&name, element, "getname", NULL, 0); zephir_check_call_status(); - zephir_array_update_string(&_4, SL("start"), &_5, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_4, SL("text"), &text, PH_COPY | PH_SEPARATE); - add_assoc_stringl_ex(&_4, SL("end"), SL("")); - zephir_update_property_zval(this_ptr, ZEND_STRL("label"), &_4); + ZEPHIR_CALL_METHOD(NULL, element, "setform", NULL, 0, this_ptr); + zephir_check_call_status(); + _0 = (zephir_method_exists_ex(element, ZEND_STRL("settagfactory")) == SUCCESS); + if (_0) { + zephir_read_property(&_1, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); + _0 = Z_TYPE_P(&_1) != IS_NULL; + } + if (_0) { + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, element, "settagfactory", NULL, 0, &_2$$3); + zephir_check_call_status(); + } + _3 = ZEPHIR_IS_NULL(&position); + if (!(_3)) { + zephir_read_property(&_4, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + _3 = ZEPHIR_IS_EMPTY(&_4); + } + if (_3) { + zephir_update_property_array(this_ptr, SL("elements"), &name, element); + } else { + ZEPHIR_INIT_VAR(&elements); + array_init(&elements); + zephir_read_property(&_5$$5, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&_5$$5, 0, "phalcon/Forms/Form.zep", 176); + if (Z_TYPE_P(&_5$$5) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_5$$5), _8$$5, _9$$5, _6$$5) + { + ZEPHIR_INIT_NVAR(&key); + if (_9$$5 != NULL) { + ZVAL_STR_COPY(&key, _9$$5); + } else { + ZVAL_LONG(&key, _8$$5); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _6$$5); + if (ZEPHIR_IS_EQUAL(&key, &position)) { + if (type) { + zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); + } + } else { + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_5$$5, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_7$$5, &_5$$5, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_7$$5)) { + break; + } + ZEPHIR_CALL_METHOD(&key, &_5$$5, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &_5$$5, "current", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EQUAL(&key, &position)) { + if (type) { + zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&elements, &name, element, PH_COPY | PH_SEPARATE); + } + } else { + zephir_array_update_zval(&elements, &key, &value, PH_COPY | PH_SEPARATE); + } + ZEPHIR_CALL_METHOD(NULL, &_5$$5, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + zephir_update_property_zval(this_ptr, ZEND_STRL("elements"), &elements); + } RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Checkbox, processChecked) +static PHP_METHOD(Phalcon_Forms_Form, bind) { - zval attributes; - zval checked, value, _0, _1$$6; + zend_bool _7$$5, _14$$13; + zend_string *_5; + zend_ulong _4; + zval method; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_8 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *data_param = NULL, *entity = NULL, entity_sub, *whitelist_param = NULL, __$null, filter, key, value, element, filters, container, filteredValue, _0, *_2, _3, _1$$4, _6$$5, _9$$9, _10$$9, _11$$11, _12$$11, _13$$13, _15$$17, _16$$17, _17$$19, _18$$19; + zval data, whitelist, assignData, filteredData; zval *this_ptr = getThis(); - ZVAL_UNDEF(&checked); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&whitelist); + ZVAL_UNDEF(&assignData); + ZVAL_UNDEF(&filteredData); + ZVAL_UNDEF(&entity_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&filter); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&value); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&filters); + ZVAL_UNDEF(&container); + ZVAL_UNDEF(&filteredValue); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$6); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_9$$9); + ZVAL_UNDEF(&_10$$9); + ZVAL_UNDEF(&_11$$11); + ZVAL_UNDEF(&_12$$11); + ZVAL_UNDEF(&_13$$13); + ZVAL_UNDEF(&_15$$17); + ZVAL_UNDEF(&_16$$17); + ZVAL_UNDEF(&_17$$19); + ZVAL_UNDEF(&_18$$19); + ZVAL_UNDEF(&method); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(data) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(entity) + Z_PARAM_ARRAY(whitelist) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &data_param, &entity, &whitelist_param); + ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); + if (!entity) { + entity = &entity_sub; + ZEPHIR_CPY_WRT(entity, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(entity); + } + if (!whitelist_param) { + ZEPHIR_INIT_VAR(&whitelist); + array_init(&whitelist); + } else { + zephir_get_arrval(&whitelist, whitelist_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_OBS_VAR(&checked); - if (!(zephir_array_isset_string_fetch(&checked, &attributes, SL("checked"), 0))) { - ZEPHIR_INIT_NVAR(&checked); - ZVAL_STRING(&checked, ""); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&_0))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_forms_exception_ce, "There are no elements in the form", "phalcon/Forms/Form.zep", 195); + return; } - zephir_array_unset_string(&attributes, SL("checked"), PH_SEPARATE); - if (!(ZEPHIR_IS_EMPTY(&checked))) { - ZEPHIR_OBS_VAR(&value); - if (!(zephir_array_isset_string_fetch(&value, &attributes, SL("value"), 0))) { + if (ZEPHIR_IS_EMPTY(&whitelist)) { + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&whitelist, &_1$$4); + } + ZEPHIR_INIT_VAR(&filter); + ZVAL_NULL(&filter); + ZEPHIR_INIT_VAR(&assignData); + array_init(&assignData); + ZEPHIR_INIT_VAR(&filteredData); + array_init(&filteredData); + zephir_is_iterable(&data, 0, "phalcon/Forms/Form.zep", 261); + if (Z_TYPE_P(&data) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _4, _5, _2) + { + ZEPHIR_INIT_NVAR(&key); + if (_5 != NULL) { + ZVAL_STR_COPY(&key, _5); + } else { + ZVAL_LONG(&key, _4); + } ZEPHIR_INIT_NVAR(&value); - ZVAL_STRING(&value, ""); - } - if (ZEPHIR_IS_IDENTICAL(&checked, &value)) { - ZEPHIR_INIT_VAR(&_1$$6); - ZVAL_STRING(&_1$$6, "checked"); - zephir_array_update_string(&attributes, SL("checked"), &_1$$6, PH_COPY | PH_SEPARATE); + ZVAL_COPY(&value, _2); + ZEPHIR_OBS_NVAR(&element); + zephir_read_property(&_6$$5, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&element, &_6$$5, &key, 0))) { + continue; + } + _7$$5 = !(ZEPHIR_IS_EMPTY(&whitelist)); + if (_7$$5) { + _7$$5 = !(zephir_fast_in_array(&key, &whitelist)); + } + if (_7$$5) { + continue; + } + ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&filters)) { + if (Z_TYPE_P(&filter) != IS_OBJECT) { + ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", &_8, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$9); + ZVAL_STRING(&_10$$9, "filter"); + ZEPHIR_CALL_METHOD(&_9$$9, &container, "getshared", NULL, 0, &_10$$9); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&filter, &_9$$9); + } + ZEPHIR_CALL_METHOD(&filteredValue, &filter, "sanitize", NULL, 0, &value, &filters); + zephir_check_call_status(); + } else { + ZEPHIR_CPY_WRT(&filteredValue, &value); + } + zephir_array_update_zval(&assignData, &key, &value, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&filteredData, &key, &filteredValue, PH_COPY | PH_SEPARATE); + if (Z_TYPE_P(entity) != IS_NULL) { + ZEPHIR_INIT_NVAR(&_11$$11); + zephir_camelize(&_11$$11, &key, NULL ); + ZEPHIR_INIT_NVAR(&_12$$11); + ZEPHIR_CONCAT_SV(&_12$$11, "set", &_11$$11); + zephir_get_strval(&method, &_12$$11); + if ((zephir_method_exists(entity, &method) == SUCCESS)) { + ZEPHIR_CALL_METHOD_ZVAL(NULL, entity, &method, NULL, 0, &filteredValue); + zephir_check_call_status(); + continue; + } + zephir_update_property_zval_zval(entity, &key, &filteredValue); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &data, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&element); + zephir_read_property(&_13$$13, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&element, &_13$$13, &key, 0))) { + continue; + } + _14$$13 = !(ZEPHIR_IS_EMPTY(&whitelist)); + if (_14$$13) { + _14$$13 = !(zephir_fast_in_array(&key, &whitelist)); + } + if (_14$$13) { + continue; + } + ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&filters)) { + if (Z_TYPE_P(&filter) != IS_OBJECT) { + ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", &_8, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_16$$17); + ZVAL_STRING(&_16$$17, "filter"); + ZEPHIR_CALL_METHOD(&_15$$17, &container, "getshared", NULL, 0, &_16$$17); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&filter, &_15$$17); + } + ZEPHIR_CALL_METHOD(&filteredValue, &filter, "sanitize", NULL, 0, &value, &filters); + zephir_check_call_status(); + } else { + ZEPHIR_CPY_WRT(&filteredValue, &value); + } + zephir_array_update_zval(&assignData, &key, &value, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&filteredData, &key, &filteredValue, PH_COPY | PH_SEPARATE); + if (Z_TYPE_P(entity) != IS_NULL) { + ZEPHIR_INIT_NVAR(&_17$$19); + zephir_camelize(&_17$$19, &key, NULL ); + ZEPHIR_INIT_NVAR(&_18$$19); + ZEPHIR_CONCAT_SV(&_18$$19, "set", &_17$$19); + zephir_get_strval(&method, &_18$$19); + if ((zephir_method_exists(entity, &method) == SUCCESS)) { + ZEPHIR_CALL_METHOD_ZVAL(NULL, entity, &method, NULL, 0, &filteredValue); + zephir_check_call_status(); + continue; + } + zephir_update_property_zval_zval(entity, &key, &filteredValue); + } + ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); + zephir_check_call_status(); } } - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &assignData); + zephir_update_property_zval(this_ptr, ZEND_STRL("filteredData"), &filteredData); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Checkbox, processUnchecked) +static PHP_METHOD(Phalcon_Forms_Form, clear) { - zval attributes, _1$$4; - zval unchecked, _0, _2$$4, _3$$4, _4$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *fields = NULL, fields_sub, __$null, elements, element, data, field, _0, *_1$$3, _2$$3, _3$$7, *_4$$6, _5$$6; zval *this_ptr = getThis(); - ZVAL_UNDEF(&unchecked); + ZVAL_UNDEF(&fields_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&elements); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&field); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$7); + ZVAL_UNDEF(&_5$$6); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(fields) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_OBS_VAR(&unchecked); - if (!(zephir_array_isset_string_fetch(&unchecked, &attributes, SL("unchecked"), 0))) { - ZEPHIR_INIT_NVAR(&unchecked); - ZVAL_STRING(&unchecked, ""); - } - zephir_array_unset_string(&attributes, SL("unchecked"), PH_SEPARATE); - if (!(ZEPHIR_IS_EMPTY(&unchecked))) { - ZEPHIR_INIT_VAR(&_1$$4); - zephir_create_array(&_1$$4, 2, 0); - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_VAR(&_3$$4); - zephir_array_fetch_string(&_3$$4, &_2$$4, SL("name"), PH_NOISY, "phalcon/Html/Helper/Input/Checkbox.zep", 156); - zephir_array_update_string(&_1$$4, SL("name"), &_3$$4, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_1$$4, SL("value"), &unchecked, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_4$$4); - ZVAL_STRING(&_4$$4, "hidden"); - ZEPHIR_CALL_METHOD(&unchecked, this_ptr, "rendertag", NULL, 0, &_4$$4, &_1$$4); - zephir_check_call_status(); + zephir_fetch_params(1, 0, 1, &fields); + if (!fields) { + fields = &fields_sub; + ZEPHIR_CPY_WRT(fields, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(fields); } - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); - RETURN_CCTOR(&unchecked); -} -zend_object *zephir_init_properties_Phalcon_Html_Helper_Input_Checkbox(zend_class_entry *class_type) -{ - zval _0, _2, _1$$3, _3$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_1$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&data, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&elements, &_0); + if (Z_TYPE_P(fields) == IS_NULL) { + ZEPHIR_INIT_NVAR(&data); + array_init(&data); + zephir_is_iterable(&elements, 0, "phalcon/Forms/Form.zep", 290); + if (Z_TYPE_P(&elements) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&elements), _1$$3) + { + ZEPHIR_INIT_NVAR(&element); + ZVAL_COPY(&element, _1$$3); + ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &elements, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2$$3, &elements, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&element, &elements, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &elements, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("label"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("label"), &_3$$4); + ZEPHIR_INIT_NVAR(&element); + } else { + if (Z_TYPE_P(fields) != IS_ARRAY) { + ZEPHIR_INIT_VAR(&_3$$7); + zephir_create_array(&_3$$7, 1, 0); + zephir_array_fast_append(&_3$$7, fields); + ZEPHIR_CPY_WRT(fields, &_3$$7); } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); + zephir_is_iterable(fields, 0, "phalcon/Forms/Form.zep", 304); + if (Z_TYPE_P(fields) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(fields), _4$$6) + { + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _4$$6); + if (zephir_array_isset(&data, &field)) { + zephir_array_unset(&data, &field, PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&element); + if (zephir_array_isset_fetch(&element, &elements, &field, 0)) { + ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); + zephir_check_call_status(); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, fields, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5$$6, fields, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5$$6)) { + break; + } + ZEPHIR_CALL_METHOD(&field, fields, "current", NULL, 0); + zephir_check_call_status(); + if (zephir_array_isset(&data, &field)) { + zephir_array_unset(&data, &field, PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&element); + if (zephir_array_isset_fetch(&element, &elements, &field, 0)) { + ZEPHIR_CALL_METHOD(NULL, &element, "clear", NULL, 0); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, fields, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&field); } + zephir_update_property_zval(this_ptr, ZEND_STRL("data"), &data); + RETURN_THIS(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Color) +static PHP_METHOD(Phalcon_Forms_Form, count) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Color, phalcon, html_helper_input_color, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_color_ce, SL("type"), "color", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - + zval _0; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Date) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Date, phalcon, html_helper_input_date, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - zend_declare_property_string(phalcon_html_helper_input_date_ce, SL("type"), "date", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + RETURN_LONG(zephir_fast_count_int(&_0)); } +static PHP_METHOD(Phalcon_Forms_Form, current) +{ + zval element, _0, _1; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_DateTime) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, DateTime, phalcon, html_helper_input_datetime, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - zend_declare_property_string(phalcon_html_helper_input_datetime_ce, SL("type"), "datetime", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("position"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&element, &_0, &_1, 1))) { + RETURN_BOOL(0); + } + RETURN_CTORW(&element); } +static PHP_METHOD(Phalcon_Forms_Form, get) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, element, _0, _1$$3; + zval name, _2$$3; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_DateTimeLocal) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, DateTimeLocal, phalcon, html_helper_input_datetimelocal, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_datetimelocal_ce, SL("type"), "datetime-local", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_OBS_VAR(&element); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_forms_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 343); + ZEPHIR_MM_RESTORE(); + return; + } + RETURN_CCTOR(&element); } +static PHP_METHOD(Phalcon_Forms_Form, getAction) +{ + zval _3; + zval _0, _1, _2; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); -#ifdef HAVE_CONFIG_H -#endif - - - + ZEPHIR_MM_GROW(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getattributes", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "action"); + ZEPHIR_CALL_METHOD(&_1, &_0, "get", NULL, 0, &_2); + zephir_check_call_status(); + zephir_cast_to_string(&_3, &_1); + RETURN_CTOR(&_3); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Email) +static PHP_METHOD(Phalcon_Forms_Form, getAttributes) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Email, phalcon, html_helper_input_email, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_email_ce, SL("type"), "email", ZEND_ACC_PROTECTED); - return SUCCESS; -} + zval _0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZEPHIR_MM_GROW(); -#ifdef HAVE_CONFIG_H -#endif + zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(Z_TYPE_P(&_0) == IS_NULL)) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_html_attributes_ce); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 22); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1$$3); + } + RETURN_MM_MEMBER(getThis(), "attributes"); +} +static PHP_METHOD(Phalcon_Forms_Form, getElements) +{ + zval *this_ptr = getThis(); + RETURN_MEMBER(getThis(), "elements"); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_File) +static PHP_METHOD(Phalcon_Forms_Form, getEntity) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, File, phalcon, html_helper_input_file, phalcon_html_helper_input_abstractinput_ce, NULL, 0); + zval *this_ptr = getThis(); - zend_declare_property_string(phalcon_html_helper_input_file_ce, SL("type"), "file", ZEND_ACC_PROTECTED); - return SUCCESS; -} + RETURN_MEMBER(getThis(), "entity"); +} +static PHP_METHOD(Phalcon_Forms_Form, getFilteredValue) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, filteredData, value, _0; + zval name; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&filteredData); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Hidden) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Hidden, phalcon, html_helper_input_hidden, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_hidden_ce, SL("type"), "hidden", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("filteredData"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&filteredData, &_0); + if (Z_TYPE_P(&filteredData) == IS_ARRAY) { + ZEPHIR_OBS_VAR(&value); + if (zephir_array_isset_fetch(&value, &filteredData, &name, 0)) { + RETURN_CCTOR(&value); + } + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getvalue", NULL, 0, &name); + zephir_check_call_status(); + RETURN_MM(); } +static PHP_METHOD(Phalcon_Forms_Form, getLabel) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, element, label, _0, _1$$3; + zval name, _2$$3; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&label); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Image) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Image, phalcon, html_helper_input_image, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_image_ce, SL("type"), "image", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_OBS_VAR(&element); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_forms_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 418); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&label, &element, "getlabel", NULL, 0); + zephir_check_call_status(); + if (!(zephir_is_true(&label))) { + RETURN_CTOR(&name); + } + RETURN_CCTOR(&label); } +static PHP_METHOD(Phalcon_Forms_Form, getMessages) +{ + zend_bool _1; + zval messages, _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&messages); + ZVAL_UNDEF(&_0); -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Input) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Input, phalcon, html_helper_input_input, phalcon_html_helper_input_abstractinput_ce, phalcon_html_helper_input_input_method_entry, 0); + ZEPHIR_MM_GROW(); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&messages, &_0); + _1 = Z_TYPE_P(&messages) == IS_OBJECT; + if (_1) { + _1 = zephir_instance_of_ev(&messages, phalcon_messages_messages_ce); + } + if (!(_1)) { + object_init_ex(return_value, phalcon_messages_messages_ce); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 8); + zephir_check_call_status(); + RETURN_MM(); + } + RETURN_CCTOR(&messages); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Input, setType) +static PHP_METHOD(Phalcon_Forms_Form, getMessagesFor) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *type_param = NULL; - zval type; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0, _1; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&type); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(type) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &type_param); - zephir_get_strval(&type, type_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &type); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &name); + zephir_check_call_status(); + if (!(zephir_is_true(&_0))) { + object_init_ex(return_value, phalcon_messages_messages_ce); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 8); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_CALL_METHOD(&_1, this_ptr, "get", NULL, 0, &name); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_1, "getmessages", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Month) +static PHP_METHOD(Phalcon_Forms_Form, getTagFactory) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Month, phalcon, html_helper_input_month, phalcon_html_helper_input_abstractinput_ce, NULL, 0); + zval *this_ptr = getThis(); - zend_declare_property_string(phalcon_html_helper_input_month_ce, SL("type"), "month", ZEND_ACC_PROTECTED); - return SUCCESS; -} + RETURN_MEMBER(getThis(), "tagFactory"); +} +static PHP_METHOD(Phalcon_Forms_Form, getUserOption) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *option_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, value, _0; + zval option; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(option) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &option_param, &defaultValue); + zephir_get_strval(&option, option_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Numeric) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Numeric, phalcon, html_helper_input_numeric, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_numeric_ce, SL("type"), "number", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&value, &_0, &option, 1))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + RETURN_CTOR(&value); } +static PHP_METHOD(Phalcon_Forms_Form, getUserOptions) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif - - - - + RETURN_MEMBER(getThis(), "options"); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Password) +static PHP_METHOD(Phalcon_Forms_Form, getValue) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Password, phalcon, html_helper_input_password, phalcon_html_helper_input_abstractinput_ce, NULL, 0); + zval forbidden; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, __$true, entity, value, data, internalEntity, element, _0, _3, _4, _1$$4, _2$$4; + zval name, method; + zval *this_ptr = getThis(); - zend_declare_property_string(phalcon_html_helper_input_password_ce, SL("type"), "password", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&method); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&entity); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&internalEntity); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&forbidden); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Radio) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Radio, phalcon, html_helper_input_radio, phalcon_html_helper_input_checkbox_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_radio_ce, SL("type"), "radio", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&entity, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&data, &_0); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("getcustomvalue")) == SUCCESS)) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getcustomvalue", NULL, 0, &name, &entity, &data); + zephir_check_call_status(); + RETURN_MM(); + } + if (Z_TYPE_P(&entity) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_1$$4); + zephir_camelize(&_1$$4, &name, NULL ); + ZEPHIR_INIT_VAR(&_2$$4); + ZEPHIR_CONCAT_SV(&_2$$4, "get", &_1$$4); + zephir_get_strval(&method, &_2$$4); + if ((zephir_method_exists(&entity, &method) == SUCCESS)) { + ZEPHIR_RETURN_CALL_METHOD_ZVAL(&entity, &method, NULL, 0); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_OBS_VAR(&value); + if (zephir_fetch_property_zval(&value, &entity, &name, PH_SILENT_CC)) { + RETURN_CCTOR(&value); + } + } + if (Z_TYPE_P(&data) == IS_ARRAY) { + ZEPHIR_OBS_NVAR(&value); + if (zephir_array_isset_fetch(&value, &data, &name, 0)) { + RETURN_CCTOR(&value); + } + } + ZEPHIR_INIT_VAR(&forbidden); + zephir_create_array(&forbidden, 14, 0); + zephir_array_update_string(&forbidden, SL("attributes"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("validation"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("action"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("useroption"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("useroptions"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("entity"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("elements"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("messages"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("messagesfor"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("label"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("value"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("di"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("tagFactory"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&forbidden, SL("eventsmanager"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_VAR(&internalEntity); + zephir_fast_strtolower(&internalEntity, &name); + if (zephir_array_isset(&forbidden, &internalEntity)) { + RETURN_MM_NULL(); + } + ZEPHIR_INIT_VAR(&_3); + zephir_camelize(&_3, &name, NULL ); + ZEPHIR_INIT_VAR(&_4); + ZEPHIR_CONCAT_SV(&_4, "get", &_3); + zephir_get_strval(&method, &_4); + if ((zephir_method_exists(this_ptr, &method) == SUCCESS)) { + ZEPHIR_RETURN_CALL_METHOD_ZVAL(this_ptr, &method, NULL, 0); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_OBS_VAR(&element); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset_fetch(&element, &_0, &name, 0)) { + ZEPHIR_RETURN_CALL_METHOD(&element, "getdefault", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); + } + RETURN_MM_NULL(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Range) +static PHP_METHOD(Phalcon_Forms_Form, has) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Range, phalcon, html_helper_input_range, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_range_ce, SL("type"), "range", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *name_param = NULL, _0; + zval name; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Search) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Search, phalcon, html_helper_input_search, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_search_ce, SL("type"), "search", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); } +static PHP_METHOD(Phalcon_Forms_Form, hasMessagesFor) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0, _1; + zval name; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Select) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Select, phalcon, html_helper_input_select, phalcon_html_helper_abstractlist_ce, phalcon_html_helper_input_select_method_entry, 0); - - zend_declare_property_string(phalcon_html_helper_input_select_ce, SL("elementTag"), "option", ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_html_helper_input_select_ce, SL("inOptGroup"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_html_helper_input_select_ce, SL("selected"), "", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getmessagesfor", NULL, 0, &name); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, &_0, "count", NULL, 0); + zephir_check_call_status(); + RETURN_MM_BOOL(ZEPHIR_GT_LONG(&_1, 0)); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, add) +static PHP_METHOD(Phalcon_Forms_Form, isValid) { + zend_object_iterator *_18$$20; + zend_bool validationStatus = 0, _3, _7; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_13 = NULL, *_14 = NULL, *_21 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes, _1, _3; - zval *text_param = NULL, *value_param = NULL, *attributes_param = NULL, *raw_param = NULL, _0, _2, _4, _5; - zval text, value; + zval whitelist; + zval *data = NULL, data_sub, *entity = NULL, entity_sub, *whitelist_param = NULL, __$null, messages, element, validators, name, filters, validator, validation, elementMessage, _0, _4, _8, *_9, _10, _17, _1$$4, _2$$5, _5$$6, _6$$7, *_11$$10, _12$$10, *_15$$15, _16$$15, _19$$21, _20$$21; zval *this_ptr = getThis(); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&entity_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&messages); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&validators); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&filters); + ZVAL_UNDEF(&validator); + ZVAL_UNDEF(&validation); + ZVAL_UNDEF(&elementMessage); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_17); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_12$$10); + ZVAL_UNDEF(&_16$$15); + ZVAL_UNDEF(&_19$$21); + ZVAL_UNDEF(&_20$$21); + ZVAL_UNDEF(&whitelist); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_STR(text) + ZEND_PARSE_PARAMETERS_START(0, 3) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(value) - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) + Z_PARAM_ZVAL_OR_NULL(data) + Z_PARAM_ZVAL_OR_NULL(entity) + Z_PARAM_ARRAY(whitelist) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &text_param, &value_param, &attributes_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!value_param) { - ZEPHIR_INIT_VAR(&value); + zephir_fetch_params(1, 0, 3, &data, &entity, &whitelist_param); + if (!data) { + data = &data_sub; + ZEPHIR_CPY_WRT(data, &__$null); } else { - zephir_get_strval(&value, value_param); + ZEPHIR_SEPARATE_PARAM(data); } - if (!attributes_param) { - ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); + if (!entity) { + entity = &entity_sub; + ZEPHIR_CPY_WRT(entity, &__$null); } else { - zephir_get_arrval(&attributes, attributes_param); + ZEPHIR_SEPARATE_PARAM(entity); } - if (!raw_param) { - raw = 0; + if (!whitelist_param) { + ZEPHIR_INIT_VAR(&whitelist); + array_init(&whitelist); } else { - raw = zephir_get_boolval(raw_param); + zephir_get_arrval(&whitelist, whitelist_param); } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "processvalue", NULL, 328, &attributes, &value); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (ZEPHIR_IS_EMPTY(&_0)) { + RETURN_MM_BOOL(1); + } + if (ZEPHIR_IS_EMPTY(&whitelist)) { + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&whitelist, &_1$$4); + } + if (Z_TYPE_P(data) != IS_ARRAY) { + zephir_read_property(&_2$$5, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(data, &_2$$5); + } + _3 = Z_TYPE_P(entity) != IS_OBJECT; + if (_3) { + ZEPHIR_OBS_VAR(&_4); + zephir_read_property(&_4, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC); + _3 = Z_TYPE_P(&_4) == IS_OBJECT; + } + if (_3) { + zephir_read_property(&_5$$6, this_ptr, ZEND_STRL("entity"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(entity, &_5$$6); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "bind", NULL, 0, data, entity, &whitelist); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 3, 0); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "renderFullElement"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_INIT_VAR(&_3); - zephir_create_array(&_3, 4, 0); - ZEPHIR_OBS_VAR(&_4); - zephir_read_property(&_4, this_ptr, ZEND_STRL("elementTag"), PH_NOISY_CC); - zephir_array_fast_append(&_3, &_4); - zephir_array_fast_append(&_3, &text); - zephir_array_fast_append(&_3, &attributes); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_BOOL(&_2, raw); - zephir_array_fast_append(&_3, &_2); - zephir_array_fast_append(&_1, &_3); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "indent", NULL, 0); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("beforevalidation")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(&_6$$7, this_ptr, "beforevalidation", NULL, 0, data, entity); + zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_6$$7)) { + RETURN_MM_BOOL(0); + } + } + validationStatus = 1; + ZEPHIR_CALL_METHOD(&validation, this_ptr, "getvalidation", NULL, 0); zephir_check_call_status(); - zephir_array_fast_append(&_1, &_5); - zephir_update_property_array_append(this_ptr, SL("store"), &_1); - RETURN_THIS(); + _7 = Z_TYPE_P(&validation) != IS_OBJECT; + if (!(_7)) { + _7 = !((zephir_instance_of_ev(&validation, phalcon_filter_validation_validationinterface_ce))); + } + if (_7) { + ZEPHIR_INIT_NVAR(&validation); + object_init_ex(&validation, phalcon_filter_validation_ce); + ZEPHIR_CALL_METHOD(NULL, &validation, "__construct", NULL, 316); + zephir_check_call_status(); + } + zephir_read_property(&_8, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&_8, 0, "phalcon/Forms/Form.zep", 698); + if (Z_TYPE_P(&_8) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_8), _9) + { + ZEPHIR_INIT_NVAR(&element); + ZVAL_COPY(&element, _9); + ZEPHIR_CALL_METHOD(&validators, &element, "getvalidators", NULL, 0); + zephir_check_call_status(); + if (zephir_fast_count_int(&validators) == 0) { + continue; + } + ZEPHIR_CALL_METHOD(&name, &element, "getname", NULL, 0); + zephir_check_call_status(); + zephir_is_iterable(&validators, 0, "phalcon/Forms/Form.zep", 685); + if (Z_TYPE_P(&validators) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _11$$10) + { + ZEPHIR_INIT_NVAR(&validator); + ZVAL_COPY(&validator, _11$$10); + ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 317, &name, &validator); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_12$$10, &validators, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_12$$10)) { + break; + } + ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 317, &name, &validator); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&validator); + ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&filters) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, &validation, "setfilters", &_14, 318, &name, &filters); + zephir_check_call_status(); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_8, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_10, &_8, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_10)) { + break; + } + ZEPHIR_CALL_METHOD(&element, &_8, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&validators, &element, "getvalidators", NULL, 0); + zephir_check_call_status(); + if (zephir_fast_count_int(&validators) == 0) { + continue; + } + ZEPHIR_CALL_METHOD(&name, &element, "getname", NULL, 0); + zephir_check_call_status(); + zephir_is_iterable(&validators, 0, "phalcon/Forms/Form.zep", 685); + if (Z_TYPE_P(&validators) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _15$$15) + { + ZEPHIR_INIT_NVAR(&validator); + ZVAL_COPY(&validator, _15$$15); + ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 317, &name, &validator); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_16$$15, &validators, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_16$$15)) { + break; + } + ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &validation, "add", &_13, 317, &name, &validator); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&validator); + ZEPHIR_CALL_METHOD(&filters, &element, "getfilters", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&filters) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, &validation, "setfilters", &_14, 318, &name, &filters); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, &_8, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&element); + ZEPHIR_CALL_METHOD(&messages, &validation, "validate", NULL, 319, data, entity); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_17, &messages, "count", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_17)) { + _18$$20 = zephir_get_iterator(&messages); + _18$$20->funcs->rewind(_18$$20); + for (;_18$$20->funcs->valid(_18$$20) == SUCCESS && !EG(exception); _18$$20->funcs->move_forward(_18$$20)) { + { + ZEPHIR_ITERATOR_COPY(&elementMessage, _18$$20); + } + ZEPHIR_CALL_METHOD(&_20$$21, &elementMessage, "getfield", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_19$$21, this_ptr, "get", &_21, 0, &_20$$21); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &_19$$21, "appendmessage", NULL, 0, &elementMessage); + zephir_check_call_status(); + } + zend_iterator_dtor(_18$$20); + ZEPHIR_CALL_METHOD(NULL, &messages, "rewind", NULL, 0); + zephir_check_call_status(); + validationStatus = 0; + } + if (!(validationStatus)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), &messages); + } + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("aftervalidation")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "aftervalidation", NULL, 0, &messages); + zephir_check_call_status(); + } + RETURN_MM_BOOL(validationStatus); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, addPlaceholder) +static PHP_METHOD(Phalcon_Forms_Form, key) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "position"); +} + +static PHP_METHOD(Phalcon_Forms_Form, label) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval attributes, _1, _3; - zval *text_param = NULL, *value = NULL, value_sub, *attributes_param = NULL, *raw_param = NULL, __$null, _2, _4, _5; - zval text, _0$$3; + zval attributes; + zval *name_param = NULL, *attributes_param = NULL, element, _0, _1$$3; + zval name, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&text); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&value_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_STR(text) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(value) - Z_PARAM_ARRAY(attributes) - Z_PARAM_BOOL(raw) + Z_PARAM_ARRAY_OR_NULL(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &text_param, &value, &attributes_param, &raw_param); - zephir_get_strval(&text, text_param); - if (!value) { - value = &value_sub; - value = &__$null; + zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); } if (!attributes_param) { ZEPHIR_INIT_VAR(&attributes); - array_init(&attributes); } else { zephir_get_arrval(&attributes, attributes_param); } - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - if (Z_TYPE_P(value) != IS_NULL) { - zephir_cast_to_string(&_0$$3, value); - zephir_array_update_string(&attributes, SL("value"), &_0$$3, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_VAR(&element); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_forms_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 748); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 3, 0); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "renderFullElement"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_INIT_VAR(&_3); - zephir_create_array(&_3, 4, 0); - ZEPHIR_OBS_VAR(&_4); - zephir_read_property(&_4, this_ptr, ZEND_STRL("elementTag"), PH_NOISY_CC); - zephir_array_fast_append(&_3, &_4); - zephir_array_fast_append(&_3, &text); - zephir_array_fast_append(&_3, &attributes); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_BOOL(&_2, raw); - zephir_array_fast_append(&_3, &_2); - zephir_array_fast_append(&_1, &_3); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "indent", NULL, 0); + ZEPHIR_RETURN_CALL_METHOD(&element, "label", NULL, 0, &attributes); zephir_check_call_status(); - zephir_array_fast_append(&_1, &_5); - zephir_update_property_array_append(this_ptr, SL("store"), &_1); - RETURN_THIS(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, optGroup) +static PHP_METHOD(Phalcon_Forms_Form, next) +{ + zval *this_ptr = getThis(); + + + + RETURN_ON_FAILURE(zephir_property_incr(this_ptr, SL("position"))); +} + +static PHP_METHOD(Phalcon_Forms_Form, render) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes, _1$$3, _3$$3, _8$$4; - zval *label_param = NULL, *attributes_param = NULL, __$true, __$false, _0, _11, _2$$3, _4$$3, _5$$3, _6$$4, _7$$4, _9$$4, _10$$4; - zval label; + zval attributes; + zval *name_param = NULL, *attributes_param = NULL, element, _0, _1$$3; + zval name, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&label); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_9$$4); - ZVAL_UNDEF(&_10$$4); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&attributes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(label) Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &label_param, &attributes_param); - if (!label_param) { - ZEPHIR_INIT_VAR(&label); + zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - zephir_get_strval(&label, label_param); + ZEPHIR_INIT_VAR(&name); } if (!attributes_param) { ZEPHIR_INIT_VAR(&attributes); @@ -27985,346 +28766,369 @@ static PHP_METHOD(Phalcon_Html_Helper_Input_Select, optGroup) } - zephir_read_property(&_0, this_ptr, ZEND_STRL("inOptGroup"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_is_true(&_0))) { + ZEPHIR_OBS_VAR(&element); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&element, &_0, &name, 0)))) { ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 3, 0); + object_init_ex(&_1$$3, phalcon_forms_exception_ce); ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "optGroupStart"); - zephir_array_fast_append(&_1$$3, &_2$$3); - ZEPHIR_INIT_VAR(&_3$$3); - zephir_create_array(&_3$$3, 2, 0); - zephir_array_fast_append(&_3$$3, &label); - zephir_array_fast_append(&_3$$3, &attributes); - zephir_array_fast_append(&_1$$3, &_3$$3); - ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "indent", NULL, 0); - zephir_check_call_status(); - zephir_array_fast_append(&_1$$3, &_4$$3); - zephir_update_property_array_append(this_ptr, SL("store"), &_1$$3); - ZEPHIR_INIT_NVAR(&_2$$3); - ZVAL_LONG(&_2$$3, 1); - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("indentLevel"), PH_NOISY_CC); - ZEPHIR_ADD_ASSIGN(&_5$$3, &_2$$3) - zephir_update_property_zval(this_ptr, ZEND_STRL("indentLevel"), &_5$$3); - } else { - ZEPHIR_INIT_VAR(&_7$$4); - ZVAL_LONG(&_7$$4, 1); - zephir_read_property(&_6$$4, this_ptr, ZEND_STRL("indentLevel"), PH_NOISY_CC); - ZEPHIR_SUB_ASSIGN(&_6$$4, &_7$$4) - zephir_update_property_zval(this_ptr, ZEND_STRL("indentLevel"), &_6$$4); - ZEPHIR_INIT_VAR(&_8$$4); - zephir_create_array(&_8$$4, 3, 0); - ZEPHIR_INIT_VAR(&_9$$4); - ZVAL_STRING(&_9$$4, "optGroupEnd"); - zephir_array_fast_append(&_8$$4, &_9$$4); - ZEPHIR_INIT_NVAR(&_9$$4); - array_init(&_9$$4); - zephir_array_fast_append(&_8$$4, &_9$$4); - ZEPHIR_CALL_METHOD(&_10$$4, this_ptr, "indent", NULL, 0); + ZEPHIR_CONCAT_SVS(&_2$$3, "Element with ID=", &name, " is not part of the form"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); zephir_check_call_status(); - zephir_array_fast_append(&_8$$4, &_10$$4); - zephir_update_property_array_append(this_ptr, SL("store"), &_8$$4); - } - ZEPHIR_OBS_VAR(&_11); - zephir_read_property(&_11, this_ptr, ZEND_STRL("inOptGroup"), PH_NOISY_CC); - if (!zephir_is_true(&_11)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("inOptGroup"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("inOptGroup"), &__$false); + zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Form.zep", 772); + ZEPHIR_MM_RESTORE(); + return; } - RETURN_THIS(); + ZEPHIR_RETURN_CALL_METHOD(&element, "render", NULL, 0, &attributes); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, selected) +static PHP_METHOD(Phalcon_Forms_Form, remove) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *selected_param = NULL; - zval selected; + zval *name_param = NULL, __$null, _0, _1$$3; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&selected); + ZVAL_UNDEF(&name); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(selected) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &selected_param); - zephir_get_strval(&selected, selected_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("selected"), &selected); - RETURN_THIS(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset(&_0, &name)) { + zephir_unset_property_array(this_ptr, ZEND_STRL("elements"), &name); + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + zephir_array_unset(&_1$$3, &name, PH_SEPARATE); + RETURN_MM_BOOL(1); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("elementsIndexed"), &__$null); + RETURN_MM_BOOL(0); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, getTag) +static PHP_METHOD(Phalcon_Forms_Form, rewind) { + zval _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); - RETURN_STRING("select"); -} - -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, optGroupEnd) -{ - zval *this_ptr = getThis(); - - + ZEPHIR_MM_GROW(); - RETURN_STRING(""); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_LONG(&_0, 0); + zephir_update_property_zval(this_ptr, ZEND_STRL("position"), &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_FUNCTION(&_1, "array_values", NULL, 14, &_0); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("elementsIndexed"), &_1); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, optGroupStart) +static PHP_METHOD(Phalcon_Forms_Form, setAction) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *label_param = NULL, *attributes_param = NULL, _0; - zval label; + zval *action_param = NULL, _0, _1; + zval action; zval *this_ptr = getThis(); - ZVAL_UNDEF(&label); + ZVAL_UNDEF(&action); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(label) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(action) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &label_param, &attributes_param); - zephir_get_strval(&label, label_param); - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &action_param); + if (UNEXPECTED(Z_TYPE_P(action_param) != IS_STRING && Z_TYPE_P(action_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'action' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(action_param) == IS_STRING)) { + zephir_get_strval(&action, action_param); + } else { + ZEPHIR_INIT_VAR(&action); + } - zephir_array_update_string(&attributes, SL("label"), &label, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "optgroup"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rendertag", NULL, 0, &_0, &attributes); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getattributes", NULL, 0); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "action"); + ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &_1, &action); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Select, processValue) +static PHP_METHOD(Phalcon_Forms_Form, setAttributes) { - zend_bool _0, _2$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attributes_param = NULL, *value = NULL, value_sub, __$null, _1$$3, _3$$3, _4$$4; - zval attributes; + zval *attributes, attributes_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&value_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&attributes_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(attributes) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(value) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(attributes, phalcon_html_attributes_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &attributes_param, &value); - zephir_get_arrval(&attributes, attributes_param); - if (!value) { - value = &value_sub; - value = &__$null; - } + zephir_fetch_params_without_memory_grow(1, 0, &attributes); - _0 = zephir_is_numeric(value); - if (!(_0)) { - _0 = !(ZEPHIR_IS_EMPTY(value)); - } - if (_0) { - zephir_array_update_string(&attributes, SL("value"), value, PH_COPY | PH_SEPARATE); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("selected"), PH_NOISY_CC | PH_READONLY); - _2$$3 = !(ZEPHIR_IS_EMPTY(&_1$$3)); - if (_2$$3) { - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("selected"), PH_NOISY_CC | PH_READONLY); - _2$$3 = ZEPHIR_IS_IDENTICAL(value, &_3$$3); - } - if (_2$$3) { - ZEPHIR_INIT_VAR(&_4$$4); - ZVAL_STRING(&_4$$4, "selected"); - zephir_array_update_string(&attributes, SL("selected"), &_4$$4, PH_COPY | PH_SEPARATE); - } - } - RETURN_CTOR(&attributes); + zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), attributes); + RETURN_THISW(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Submit) +static PHP_METHOD(Phalcon_Forms_Form, setEntity) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Submit, phalcon, html_helper_input_submit, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_submit_ce, SL("type"), "submit", ZEND_ACC_PROTECTED); - return SUCCESS; -} - - - + zval *entity, entity_sub; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&entity_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(entity) + ZEND_PARSE_PARAMETERS_END(); #endif + zephir_fetch_params_without_memory_grow(1, 0, &entity); - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Tel) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Tel, phalcon, html_helper_input_tel, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_tel_ce, SL("type"), "tel", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("entity"), entity); + RETURN_THISW(); } +static PHP_METHOD(Phalcon_Forms_Form, setTagFactory) +{ + zval *tagFactory, tagFactory_sub; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&tagFactory_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(tagFactory, phalcon_html_tagfactory_ce) + ZEND_PARSE_PARAMETERS_END(); #endif + zephir_fetch_params_without_memory_grow(1, 0, &tagFactory); - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Text) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Text, phalcon, html_helper_input_text, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), tagFactory); + RETURN_THISW(); } +static PHP_METHOD(Phalcon_Forms_Form, setValidation) +{ + zval *validation, validation_sub; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&validation_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(validation, phalcon_filter_validation_validationinterface_ce) + ZEND_PARSE_PARAMETERS_END(); #endif + zephir_fetch_params_without_memory_grow(1, 0, &validation); - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Textarea) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Textarea, phalcon, html_helper_input_textarea, phalcon_html_helper_input_abstractinput_ce, phalcon_html_helper_input_textarea_method_entry, 0); - - zend_declare_property_string(phalcon_html_helper_input_textarea_ce, SL("type"), "textarea", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("validation"), validation); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Html_Helper_Input_Textarea, __toString) +static PHP_METHOD(Phalcon_Forms_Form, setWhitelist) { - zval attributes; - zval value, _0, _1, _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *whitelist_param = NULL; + zval whitelist; zval *this_ptr = getThis(); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&whitelist); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(whitelist) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&attributes, &_0); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &_1); - ZEPHIR_OBS_VAR(&value); - if (!(zephir_array_isset_string_fetch(&value, &attributes, SL("value"), 0))) { - ZEPHIR_INIT_NVAR(&value); - ZVAL_STRING(&value, ""); - } - zephir_array_unset_string(&attributes, SL("type"), PH_SEPARATE); - zephir_array_unset_string(&attributes, SL("value"), PH_SEPARATE); - zephir_read_property(&_2, this_ptr, ZEND_STRL("type"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "renderfullelement", NULL, 0, &_2, &value, &attributes); - zephir_check_call_status(); - RETURN_MM(); -} + zephir_fetch_params(1, 1, 0, &whitelist_param); + zephir_get_arrval(&whitelist, whitelist_param); + zephir_update_property_zval(this_ptr, ZEND_STRL("whitelist"), &whitelist); + RETURN_THIS(); +} +static PHP_METHOD(Phalcon_Forms_Form, setUserOption) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *option_param = NULL, *value, value_sub; + zval option; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&value_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(option) + Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &option_param, &value); + zephir_get_strval(&option, option_param); - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Time) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Time, phalcon, html_helper_input_time, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_time_ce, SL("type"), "time", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_update_property_array(this_ptr, SL("options"), &option, value); + RETURN_THIS(); } +static PHP_METHOD(Phalcon_Forms_Form, setUserOptions) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *options_param = NULL; + zval options; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&options); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &options_param); + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); - -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Url) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Url, phalcon, html_helper_input_url, phalcon_html_helper_input_abstractinput_ce, NULL, 0); - - zend_declare_property_string(phalcon_html_helper_input_url_ce, SL("type"), "url", ZEND_ACC_PROTECTED); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); + RETURN_THIS(); } +static PHP_METHOD(Phalcon_Forms_Form, valid) +{ + zval _0, _1; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H -#endif - + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("position"), PH_NOISY_CC | PH_READONLY); + RETURN_BOOL(zephir_array_isset(&_0, &_1)); +} -ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Week) +zend_object *zephir_init_properties_Phalcon_Forms_Form(zend_class_entry *class_type) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Html\\Helper\\Input, Week, phalcon, html_helper_input_week, phalcon_html_helper_input_abstractinput_ce, NULL, 0); + zval _0, _2, _4, _6, _8, _10, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_11$$8); + - zend_declare_property_string(phalcon_html_helper_input_week_ce, SL("type"), "week", ZEND_ACC_PROTECTED); - return SUCCESS; + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("whitelist"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("whitelist"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("elementsIndexed"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("elementsIndexed"), &_5$$5); + } + zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("elements"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_6) == IS_NULL) { + ZEPHIR_INIT_VAR(&_7$$6); + array_init(&_7$$6); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("elements"), &_7$$6); + } + zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("filteredData"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_8) == IS_NULL) { + ZEPHIR_INIT_VAR(&_9$$7); + array_init(&_9$$7); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("filteredData"), &_9$$7); + } + zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_10) == IS_NULL) { + ZEPHIR_INIT_VAR(&_11$$8); + array_init(&_11$$8); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("data"), &_11$$8); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } } @@ -28337,1567 +29141,979 @@ ZEPHIR_INIT_CLASS(Phalcon_Html_Helper_Input_Week) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Manager) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption, Crypt, phalcon, encryption_crypt, phalcon_encryption_crypt_method_entry, 0); - - zend_declare_property_string(phalcon_encryption_crypt_ce, SL("authData"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_crypt_ce, SL("authTag"), "", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_encryption_crypt_ce, SL("authTagLength"), 16, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_crypt_ce, SL("availableCiphers"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_crypt_ce, SL("cipher"), "aes-256-cfb", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_crypt_ce, SL("hashAlgorithm"), "sha256", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_encryption_crypt_ce, SL("ivLength"), 16, ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_crypt_ce, SL("key"), "", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_encryption_crypt_ce, SL("padding"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_crypt_ce, SL("padFactory"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_encryption_crypt_ce, SL("useSigning"), 1, ZEND_ACC_PROTECTED); - phalcon_encryption_crypt_ce->create_object = zephir_init_properties_Phalcon_Encryption_Crypt; - zephir_declare_class_constant_string(phalcon_encryption_crypt_ce, SL("DEFAULT_ALGORITHM"), "sha256"); - - zephir_declare_class_constant_string(phalcon_encryption_crypt_ce, SL("DEFAULT_CIPHER"), "aes-256-cfb"); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_ANSI_X_923"), 1); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_DEFAULT"), 0); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_ISO_10126"), 3); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_ISO_IEC_7816_4"), 4); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_PKCS7"), 2); - - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_SPACE"), 6); + ZEPHIR_REGISTER_CLASS(Phalcon\\Forms, Manager, phalcon, forms_manager, phalcon_forms_manager_method_entry, 0); - zephir_declare_class_constant_long(phalcon_encryption_crypt_ce, SL("PADDING_ZERO"), 5); + zend_declare_property_null(phalcon_forms_manager_ce, SL("forms"), ZEND_ACC_PROTECTED); + phalcon_forms_manager_ce->create_object = zephir_init_properties_Phalcon_Forms_Manager; - zend_class_implements(phalcon_encryption_crypt_ce, 1, phalcon_encryption_crypt_cryptinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Crypt, __construct) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool useSigning; - zval *cipher_param = NULL, *useSigning_param = NULL, *padFactory = NULL, padFactory_sub, __$null, _0, _1, _2, _3; - zval cipher; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&padFactory_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_STR(cipher) - Z_PARAM_BOOL(useSigning) - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(padFactory, phalcon_encryption_crypt_padfactory_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &cipher_param, &useSigning_param, &padFactory); - if (!cipher_param) { - ZEPHIR_INIT_VAR(&cipher); - ZVAL_STRING(&cipher, "aes-256-cfb"); - } else { - zephir_get_strval(&cipher, cipher_param); - } - if (!useSigning_param) { - useSigning = 1; - } else { - useSigning = zephir_get_boolval(useSigning_param); - } - if (!padFactory) { - padFactory = &padFactory_sub; - ZEPHIR_CPY_WRT(padFactory, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(padFactory); - } - - - if (Z_TYPE_P(padFactory) == IS_NULL) { - ZEPHIR_INIT_NVAR(padFactory); - object_init_ex(padFactory, phalcon_encryption_crypt_padfactory_ce); - ZEPHIR_CALL_METHOD(NULL, padFactory, "__construct", NULL, 220); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("padFactory"), padFactory); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_INIT_NVAR(&_0); - ZVAL_STRING(&_0, "sha256"); - zephir_update_property_zval(this_ptr, ZEND_STRL("hashAlgorithm"), &_0); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "initializeavailableciphers", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_2, &_1, "setcipher", NULL, 0, &cipher); - zephir_check_call_status(); - if (useSigning) { - ZVAL_BOOL(&_3, 1); - } else { - ZVAL_BOOL(&_3, 0); - } - ZEPHIR_CALL_METHOD(NULL, &_2, "usesigning", NULL, 0, &_3); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Encryption_Crypt, decrypt) +static PHP_METHOD(Phalcon_Forms_Manager, create) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *key_param = NULL, __$true, __$null, blockSize, cipher, cipherText, decrypted, decryptKey, digest, hashAlgorithm, hashLength, iv, ivLength, mode, padded, _0, _1, _6, _7, _2$$5, _3$$5, _4$$5, _5$$6, _8$$7; - zval input, key; + zval *name_param = NULL, *entity = NULL, entity_sub, __$null, form; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&key); - ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&entity_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&blockSize); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&cipherText); - ZVAL_UNDEF(&decrypted); - ZVAL_UNDEF(&decryptKey); - ZVAL_UNDEF(&digest); - ZVAL_UNDEF(&hashAlgorithm); - ZVAL_UNDEF(&hashLength); - ZVAL_UNDEF(&iv); - ZVAL_UNDEF(&ivLength); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&padded); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&form); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(input) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(key) + Z_PARAM_ZVAL_OR_NULL(entity) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &input_param, &key_param); - zephir_get_strval(&input, input_param); - if (!key_param) { - ZEPHIR_INIT_VAR(&key); - } else { - zephir_get_strval(&key, key_param); + zephir_fetch_params(1, 1, 1, &name_param, &entity); + zephir_get_strval(&name, name_param); + if (!entity) { + entity = &entity_sub; + entity = &__$null; } - ZEPHIR_OBS_VAR(&decryptKey); - zephir_read_property(&decryptKey, this_ptr, ZEND_STRL("key"), PH_NOISY_CC); - if (1 != ZEPHIR_IS_EMPTY(&key)) { - ZEPHIR_CPY_WRT(&decryptKey, &key); - } - if (1 == ZEPHIR_IS_EMPTY(&decryptKey)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Decryption key cannot be empty", "phalcon/Encryption/Crypt.zep", 175); - return; - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cipher, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("ivLength"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&ivLength, &_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "cipher"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "checkcipherhashisavailable", NULL, 0, &cipher, &_1); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&mode, this_ptr, "getmode", NULL, 221); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&blockSize, this_ptr, "getblocksize", NULL, 222, &mode); - zephir_check_call_status(); - ZVAL_LONG(&_0, 0); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "8bit"); - ZEPHIR_CALL_FUNCTION(&iv, "mb_substr", NULL, 223, &input, &_0, &ivLength, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&digest); - ZVAL_STRING(&digest, ""); - ZEPHIR_CALL_METHOD(&hashAlgorithm, this_ptr, "gethashalgorithm", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("useSigning"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - ZEPHIR_INIT_VAR(&_2$$5); - ZVAL_STRING(&_2$$5, ""); - ZEPHIR_CALL_FUNCTION(&_3$$5, "hash", NULL, 68, &hashAlgorithm, &_2$$5, &__$true); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&hashLength); - ZVAL_LONG(&hashLength, zephir_fast_strlen_ev(&_3$$5)); - ZEPHIR_INIT_NVAR(&_2$$5); - ZVAL_STRING(&_2$$5, "8bit"); - ZEPHIR_CALL_FUNCTION(&digest, "mb_substr", NULL, 223, &input, &ivLength, &hashLength, &_2$$5); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_4$$5); - zephir_add_function(&_4$$5, &ivLength, &hashLength); - ZEPHIR_INIT_NVAR(&_2$$5); - ZVAL_STRING(&_2$$5, "8bit"); - ZEPHIR_CALL_FUNCTION(&cipherText, "mb_substr", NULL, 223, &input, &_4$$5, &__$null, &_2$$5); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_VAR(&_5$$6); - ZVAL_STRING(&_5$$6, "8bit"); - ZEPHIR_CALL_FUNCTION(&cipherText, "mb_substr", NULL, 223, &input, &ivLength, &__$null, &_5$$6); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&decrypted, this_ptr, "decryptgcmccmauth", NULL, 0, &mode, &cipherText, &decryptKey, &iv); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&padded, &decrypted); - ZEPHIR_CALL_METHOD(&_6, this_ptr, "decryptgetunpadded", NULL, 0, &mode, &blockSize, &decrypted); + ZEPHIR_INIT_VAR(&form); + object_init_ex(&form, phalcon_forms_form_ce); + ZEPHIR_CALL_METHOD(NULL, &form, "__construct", NULL, 320, entity); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&decrypted, &_6); - zephir_read_property(&_7, this_ptr, ZEND_STRL("useSigning"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_7)) { - ZEPHIR_CALL_FUNCTION(&_8$$7, "hash_hmac", NULL, 224, &hashAlgorithm, &padded, &decryptKey, &__$true); - zephir_check_call_status(); - if (!ZEPHIR_IS_IDENTICAL(&digest, &_8$$7)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_mismatch_ce, "Hash does not match.", "phalcon/Encryption/Crypt.zep", 224); - return; - } - } - RETURN_CCTOR(&decrypted); + zephir_update_property_array(this_ptr, SL("forms"), &name, &form); + RETURN_CCTOR(&form); } -static PHP_METHOD(Phalcon_Encryption_Crypt, decryptBase64) +static PHP_METHOD(Phalcon_Forms_Manager, get) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool safe; - zval *input_param = NULL, *key_param = NULL, *safe_param = NULL, _0$$3, _1$$3, _2$$3, _3$$3, _4$$3, _5; - zval input, key; + zval *name_param = NULL, form, _0, _1$$3; + zval name, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&form); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(input) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(key) - Z_PARAM_BOOL(safe) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &input_param, &key_param, &safe_param); - zephir_get_strval(&input, input_param); - if (!key_param) { - ZEPHIR_INIT_VAR(&key); - } else { - zephir_get_strval(&key, key_param); - } - if (!safe_param) { - safe = 0; - } else { - safe = zephir_get_boolval(safe_param); - } + zephir_fetch_params(1, 1, 0, &name_param); + zephir_get_strval(&name, name_param); - if (safe) { - ZEPHIR_INIT_VAR(&_0$$3); - ZVAL_STRING(&_0$$3, "-_"); + ZEPHIR_OBS_VAR(&form); + zephir_read_property(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&form, &_0, &name, 0)))) { ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "+/"); - ZEPHIR_CALL_FUNCTION(&_2$$3, "strtr", NULL, 5, &input, &_0$$3, &_1$$3); + object_init_ex(&_1$$3, phalcon_forms_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "There is no form with name='", &name, "'"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_0$$3); - ZVAL_STRING(&_0$$3, "==="); - ZVAL_DOUBLE(&_3$$3, zephir_safe_mod_long_long(((zephir_fast_strlen_ev(&input) + 3)), 4)); - ZEPHIR_INIT_NVAR(&_1$$3); - zephir_substr(&_1$$3, &_0$$3, zephir_get_intval(&_3$$3), 0, ZEPHIR_SUBSTR_NO_LENGTH); - ZEPHIR_INIT_VAR(&_4$$3); - ZEPHIR_CONCAT_VV(&_4$$3, &_2$$3, &_1$$3); - zephir_get_strval(&input, &_4$$3); + zephir_throw_exception_debug(&_1$$3, "phalcon/Forms/Manager.zep", 46); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_CALL_FUNCTION(&_5, "base64_decode", NULL, 225, &input); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "decrypt", NULL, 0, &_5, &key); - zephir_check_call_status(); - RETURN_MM(); + RETURN_CCTOR(&form); } -static PHP_METHOD(Phalcon_Encryption_Crypt, encrypt) +static PHP_METHOD(Phalcon_Forms_Manager, has) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *key_param = NULL, __$true, blockSize, cipher, digest, encryptKey, encrypted, iv, ivLength, mode, padded, _0, _1, _2$$6; - zval input, key; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&key); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&blockSize); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&digest); - ZVAL_UNDEF(&encryptKey); - ZVAL_UNDEF(&encrypted); - ZVAL_UNDEF(&iv); - ZVAL_UNDEF(&ivLength); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&padded); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(input) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(key) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &input_param, &key_param); - zephir_get_strval(&input, input_param); - if (!key_param) { - ZEPHIR_INIT_VAR(&key); - } else { - zephir_get_strval(&key, key_param); - } + zephir_fetch_params(1, 1, 0, &name_param); + zephir_get_strval(&name, name_param); - ZEPHIR_OBS_VAR(&encryptKey); - zephir_read_property(&encryptKey, this_ptr, ZEND_STRL("key"), PH_NOISY_CC); - if (1 != ZEPHIR_IS_EMPTY(&key)) { - ZEPHIR_CPY_WRT(&encryptKey, &key); - } - if (1 == ZEPHIR_IS_EMPTY(&encryptKey)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Encryption key cannot be empty", "phalcon/Encryption/Crypt.zep", 282); - return; - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cipher, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("ivLength"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&ivLength, &_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "cipher"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "checkcipherhashisavailable", NULL, 0, &cipher, &_1); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&mode, this_ptr, "getmode", NULL, 221); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&blockSize, this_ptr, "getblocksize", NULL, 222, &mode); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&iv, this_ptr, "phpopensslrandompseudobytes", NULL, 0, &ivLength); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&iv)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Cannot calculate Random Pseudo Bytes", "phalcon/Encryption/Crypt.zep", 295); - return; - } - ZEPHIR_CALL_METHOD(&padded, this_ptr, "encryptgetpadded", NULL, 0, &mode, &input, &blockSize); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&encrypted, this_ptr, "encryptgcmccm", NULL, 0, &mode, &padded, &encryptKey, &iv); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("useSigning"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - ZEPHIR_CALL_METHOD(&_2$$6, this_ptr, "gethashalgorithm", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&digest, "hash_hmac", NULL, 224, &_2$$6, &padded, &encryptKey, &__$true); - zephir_check_call_status(); - ZEPHIR_CONCAT_VVV(return_value, &iv, &digest, &encrypted); - RETURN_MM(); - } - ZEPHIR_CONCAT_VV(return_value, &iv, &encrypted); - RETURN_MM(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); + RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); } -static PHP_METHOD(Phalcon_Encryption_Crypt, encryptBase64) +static PHP_METHOD(Phalcon_Forms_Manager, set) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool safe; - zval *input_param = NULL, *key_param = NULL, *safe_param = NULL, _0$$3, _1$$3, _2$$3, _3$$3, _4$$3, _5; - zval input, key; + zval *name_param = NULL, *form, form_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&form_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(input) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(key) - Z_PARAM_BOOL(safe) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_OBJECT_OF_CLASS(form, phalcon_forms_form_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &input_param, &key_param, &safe_param); - zephir_get_strval(&input, input_param); - if (!key_param) { - ZEPHIR_INIT_VAR(&key); - } else { - zephir_get_strval(&key, key_param); - } - if (!safe_param) { - safe = 0; - } else { - safe = zephir_get_boolval(safe_param); - } + zephir_fetch_params(1, 2, 0, &name_param, &form); + zephir_get_strval(&name, name_param); - if (safe) { - ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "encrypt", NULL, 0, &input, &key); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_1$$3, "base64_encode", NULL, 226, &_0$$3); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "+/"); - ZEPHIR_INIT_VAR(&_3$$3); - ZVAL_STRING(&_3$$3, "-_"); - ZEPHIR_CALL_FUNCTION(&_4$$3, "strtr", NULL, 5, &_1$$3, &_2$$3, &_3$$3); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_2$$3); - ZVAL_STRING(&_2$$3, "="); - zephir_fast_trim(return_value, &_4$$3, &_2$$3, ZEPHIR_TRIM_RIGHT); - RETURN_MM(); - } - ZEPHIR_CALL_METHOD(&_5, this_ptr, "encrypt", NULL, 0, &input, &key); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_FUNCTION("base64_encode", NULL, 226, &_5); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array(this_ptr, SL("forms"), &name, form); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, getAvailableCiphers) +zend_object *zephir_init_properties_Phalcon_Forms_Manager(zend_class_entry *class_type) { - zval *this_ptr = getThis(); - - + zval _0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + - RETURN_MEMBER(getThis(), "availableCiphers"); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("forms"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("forms"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } } -static PHP_METHOD(Phalcon_Encryption_Crypt, getAuthData) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "authData"); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Encryption_Crypt, getAuthTag) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "authTag"); -} -static PHP_METHOD(Phalcon_Encryption_Crypt, getAuthTagLength) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_AbstractElement) { - zval *this_ptr = getThis(); - + ZEPHIR_REGISTER_CLASS(Phalcon\\Forms\\Element, AbstractElement, phalcon, forms_element_abstractelement, phalcon_forms_element_abstractelement_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("attributes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("filters"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("form"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("label"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_forms_element_abstractelement_ce, SL("method"), "inputText", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("messages"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("options"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("tagFactory"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("validators"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_forms_element_abstractelement_ce, SL("value"), ZEND_ACC_PROTECTED); + phalcon_forms_element_abstractelement_ce->create_object = zephir_init_properties_Phalcon_Forms_Element_AbstractElement; - RETURN_MEMBER(getThis(), "authTagLength"); + zend_class_implements(phalcon_forms_element_abstractelement_ce, 1, phalcon_forms_element_elementinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Crypt, getAvailableHashAlgorithms) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, __construct) { - zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval attributes; + zval *name_param = NULL, *attributes_param = NULL, _0, _1; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&attributes); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "hash_hmac_algos"); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "phpfunctionexists", NULL, 0, &_1); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - ZEPHIR_RETURN_CALL_FUNCTION("hash_hmac_algos", NULL, 227); - zephir_check_call_status(); - RETURN_MM(); + zephir_fetch_params(1, 1, 1, &name_param, &attributes_param); + zephir_get_strval(&name, name_param); + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); + } else { + zephir_get_arrval(&attributes, attributes_param); } - ZEPHIR_RETURN_CALL_FUNCTION("hash_algos", NULL, 228); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Crypt, getHashAlgorithm) -{ - zval *this_ptr = getThis(); - - RETURN_MEMBER(getThis(), "hashAlgorithm"); + ZEPHIR_INIT_VAR(&_0); + zephir_fast_trim(&_0, &name, NULL , ZEPHIR_TRIM_BOTH); + zephir_get_strval(&name, &_0); + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&name))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Form element name is required", "phalcon/Forms/Element/AbstractElement.zep", 97); + return; + } + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); + ZEPHIR_INIT_VAR(&_1); + object_init_ex(&_1, phalcon_messages_messages_ce); + ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 8); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), &_1); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, getCipher) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, __toString) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "cipher"); -} - -static PHP_METHOD(Phalcon_Encryption_Crypt, getKey) -{ - zval *this_ptr = getThis(); - - + ZEPHIR_MM_GROW(); - RETURN_MEMBER(getThis(), "key"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "render", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, isValidDecryptLength) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addFilter) { + zval _1$$5, _2$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, length, _0, _1; - zval input; + zval *filter_param = NULL, filters, _0; + zval filter; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&length); + ZVAL_UNDEF(&filter); + ZVAL_UNDEF(&filters); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&_2$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + Z_PARAM_STR(filter) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 1, 0, &filter_param); + zephir_get_strval(&filter, filter_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&length, this_ptr, "phpopensslcipherivlength", NULL, 0, &_0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&length)) { - RETURN_MM_BOOL(0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("filters"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&filters, &_0); + if (Z_TYPE_P(&filters) == IS_ARRAY) { + zephir_update_property_array_append(this_ptr, SL("filters"), &filter); + } else { + if (Z_TYPE_P(&filters) == IS_STRING) { + ZEPHIR_INIT_VAR(&_1$$5); + zephir_create_array(&_1$$5, 2, 0); + zephir_array_fast_append(&_1$$5, &filters); + zephir_array_fast_append(&_1$$5, &filter); + zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), &_1$$5); + } else { + ZEPHIR_INIT_VAR(&_2$$6); + zephir_create_array(&_2$$6, 1, 0); + zephir_array_fast_append(&_2$$6, &filter); + zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), &_2$$6); + } } - ZEPHIR_CALL_FUNCTION(&_1, "mb_strlen", NULL, 229, &input); - zephir_check_call_status(); - RETURN_MM_BOOL(ZEPHIR_LE(&length, &_1)); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setAuthData) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addValidator) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *data_param = NULL; - zval data; + zval *validator, validator_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&validator_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(data) + Z_PARAM_OBJECT_OF_CLASS(validator, phalcon_filter_validation_validatorinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &data_param); - zephir_get_strval(&data, data_param); + zephir_fetch_params_without_memory_grow(1, 0, &validator); - zephir_update_property_zval(this_ptr, ZEND_STRL("authData"), &data); - RETURN_THIS(); + zephir_update_property_array_append(this_ptr, SL("validators"), validator); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setAuthTag) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, addValidators) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *tag_param = NULL; - zval tag; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool merge; + zval *validators_param = NULL, *merge_param = NULL, validator, *_1, _2, _0$$3; + zval validators; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tag); + ZVAL_UNDEF(&validators); + ZVAL_UNDEF(&validator); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_0$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(tag) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ARRAY(validators) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(merge) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &tag_param); - zephir_get_strval(&tag, tag_param); + zephir_fetch_params(1, 1, 1, &validators_param, &merge_param); + ZEPHIR_OBS_COPY_OR_DUP(&validators, validators_param); + if (!merge_param) { + merge = 1; + } else { + merge = zephir_get_boolval(merge_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("authTag"), &tag); + if (UNEXPECTED(!merge)) { + ZEPHIR_INIT_VAR(&_0$$3); + array_init(&_0$$3); + zephir_update_property_zval(this_ptr, ZEND_STRL("validators"), &_0$$3); + } + zephir_is_iterable(&validators, 0, "phalcon/Forms/Element/AbstractElement.zep", 163); + if (Z_TYPE_P(&validators) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&validators), _1) + { + ZEPHIR_INIT_NVAR(&validator); + ZVAL_COPY(&validator, _1); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addvalidator", &_3, 0, &validator); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &validators, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, &validators, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&validator, &validators, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addvalidator", &_3, 0, &validator); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &validators, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&validator); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setAuthTagLength) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, appendMessage) { - zval *length_param = NULL, _0; - zend_long length; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *message, message_sub, _0; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message_sub); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(length) + Z_PARAM_OBJECT_OF_CLASS(message, phalcon_messages_messageinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &length_param); - length = zephir_get_intval(length_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &message); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, length); - zephir_update_property_zval(this_ptr, ZEND_STRL("authTagLength"), &_0); - RETURN_THISW(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_0, "appendmessage", NULL, 0, message); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setCipher) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, clear) { + zval form, _0, name; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *cipher_param = NULL, _0, _1; - zval cipher; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cipher); + ZVAL_UNDEF(&form); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(cipher) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&name); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cipher_param); - zephir_get_strval(&cipher, cipher_param); - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "cipher"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "checkcipherhashisavailable", NULL, 0, &cipher, &_0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getivlength", NULL, 230, &cipher); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("ivLength"), &_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("cipher"), &cipher); + zephir_read_property(&_0, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&form, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&name, &_0); + if (Z_TYPE_P(&form) == IS_OBJECT) { + ZEPHIR_CALL_METHOD(NULL, &form, "clear", NULL, 0, &name); + zephir_check_call_status(); + } RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setKey) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getAttribute) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *key_param = NULL; - zval key; + zval *attribute_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, attributes, value, _0; + zval attribute; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); + ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(attribute) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - zephir_get_strval(&key, key_param); + zephir_fetch_params(1, 1, 1, &attribute_param, &defaultValue); + zephir_get_strval(&attribute, attribute_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; + } - zephir_update_property_zval(this_ptr, ZEND_STRL("key"), &key); - RETURN_THIS(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&attributes, &_0); + if (!(zephir_array_isset_fetch(&value, &attributes, &attribute, 1))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + RETURN_CTOR(&value); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setHashAlgorithm) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getAttributes) { + zval attributes, _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *hashAlgorithm_param = NULL, _0; - zval hashAlgorithm; zval *this_ptr = getThis(); - ZVAL_UNDEF(&hashAlgorithm); + ZVAL_UNDEF(&attributes); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(hashAlgorithm) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &hashAlgorithm_param); - zephir_get_strval(&hashAlgorithm, hashAlgorithm_param); + zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&attributes, &_0); + RETURN_CCTOR(&attributes); +} - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hash"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "checkcipherhashisavailable", NULL, 0, &hashAlgorithm, &_0); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("hashAlgorithm"), &hashAlgorithm); - RETURN_THIS(); +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getDefault) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "value"); } -static PHP_METHOD(Phalcon_Encryption_Crypt, setPadding) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getFilters) { - zval *scheme_param = NULL, _0; - zend_long scheme; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(scheme) - ZEND_PARSE_PARAMETERS_END(); -#endif - zephir_fetch_params_without_memory_grow(1, 0, &scheme_param); - scheme = zephir_get_intval(scheme_param); + RETURN_MEMBER(getThis(), "filters"); +} +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getForm) +{ + zval *this_ptr = getThis(); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, scheme); - zephir_update_property_zval(this_ptr, ZEND_STRL("padding"), &_0); - RETURN_THISW(); + + + RETURN_MEMBER(getThis(), "form"); } -static PHP_METHOD(Phalcon_Encryption_Crypt, useSigning) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getLabel) { - zval *useSigning_param = NULL, __$true, __$false; - zend_bool useSigning; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(useSigning) - ZEND_PARSE_PARAMETERS_END(); -#endif - zephir_fetch_params_without_memory_grow(1, 0, &useSigning_param); - useSigning = zephir_get_boolval(useSigning_param); + RETURN_MEMBER(getThis(), "label"); +} + +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getMessages) +{ + zval *this_ptr = getThis(); - if (useSigning) { - zephir_update_property_zval(this_ptr, ZEND_STRL("useSigning"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("useSigning"), &__$false); - } - RETURN_THISW(); + + RETURN_MEMBER(getThis(), "messages"); } -static PHP_METHOD(Phalcon_Encryption_Crypt, checkCipherHashIsAvailable) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getName) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *cipher_param = NULL, *type_param = NULL, available, lower, method, _0, _1$$5, _2$$5, _3$$5; - zval cipher, type; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&available); - ZVAL_UNDEF(&lower); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$5); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$5); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(cipher) - Z_PARAM_STR(type) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &cipher_param, &type_param); - zephir_get_strval(&cipher, cipher_param); - zephir_get_strval(&type, type_param); + RETURN_MEMBER(getThis(), "name"); +} +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getTagFactory) +{ + zval *this_ptr = getThis(); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hash"); - ZEPHIR_INIT_VAR(&method); - if (ZEPHIR_IS_IDENTICAL(&_0, &cipher)) { - ZVAL_STRING(&method, "getAvailableHashAlgorithms"); - } else { - ZVAL_STRING(&method, "getAvailableCiphers"); - } - ZEPHIR_CALL_METHOD_ZVAL(&available, this_ptr, &method, NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&lower, "mb_strtolower", NULL, 10, &cipher); - zephir_check_call_status(); - if (1 != zephir_array_isset(&available, &lower)) { - ZEPHIR_INIT_VAR(&_1$$5); - object_init_ex(&_1$$5, phalcon_encryption_crypt_exception_exception_ce); - ZEPHIR_INIT_VAR(&_2$$5); - ZVAL_STRING(&_2$$5, "The %s algorithm '%s' is not supported on this system."); - ZEPHIR_CALL_FUNCTION(&_3$$5, "sprintf", NULL, 112, &_2$$5, &type, &cipher); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_1$$5, "__construct", NULL, 29, &_3$$5); - zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$5, "phalcon/Encryption/Crypt.zep", 608); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_MM_RESTORE(); + + + RETURN_MEMBER(getThis(), "tagFactory"); } -static PHP_METHOD(Phalcon_Encryption_Crypt, cryptPadText) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getUserOption) { - zend_bool _4$$3; - zval _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, paddingType, ZEPHIR_LAST_CALL_STATUS, paddingSize = 0; - zval *input_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, padding, service, _0, _2, _9, _10, _3$$3, _5$$3, _6$$3, _7$$3, _8$$3; - zval input, mode; + zval *option_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, value, _0; + zval option; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&padding); - ZVAL_UNDEF(&service); + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_8$$3); - ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_STR(input) - Z_PARAM_STR(mode) - Z_PARAM_LONG(blockSize) - Z_PARAM_LONG(paddingType) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(option) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &input_param, &mode_param, &blockSize_param, &paddingType_param); - zephir_get_strval(&input, input_param); - zephir_get_strval(&mode, mode_param); - blockSize = zephir_get_intval(blockSize_param); - paddingType = zephir_get_intval(paddingType_param); - - - ZEPHIR_INIT_VAR(&padding); - ZVAL_STRING(&padding, ""); - paddingSize = 0; - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 2, 0); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "cbc"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_STRING(&_2, "ecb"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkismode", NULL, 231, &_1, &mode); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - ZEPHIR_CALL_FUNCTION(&_3$$3, "mb_strlen", NULL, 229, &input); - zephir_check_call_status(); - paddingSize = (blockSize - zephir_safe_mod_zval_long(&_3$$3, blockSize)); - _4$$3 = paddingSize >= 256; - if (!(_4$$3)) { - _4$$3 = paddingSize < 0; - } - if (_4$$3) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Padding size cannot be less than 0 or greater than 256", "phalcon/Encryption/Crypt.zep", 641); - return; - } - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("padFactory"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_6$$3, paddingType); - ZEPHIR_CALL_METHOD(&service, &_5$$3, "padnumbertoservice", NULL, 0, &_6$$3); - zephir_check_call_status(); - zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("padFactory"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_7$$3, &_6$$3, "newinstance", NULL, 0, &service); - zephir_check_call_status(); - ZVAL_LONG(&_8$$3, paddingSize); - ZEPHIR_CALL_METHOD(&padding, &_7$$3, "pad", NULL, 0, &_8$$3); - zephir_check_call_status(); + zephir_fetch_params(1, 1, 1, &option_param, &defaultValue); + zephir_get_strval(&option, option_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; } - if (0 == paddingSize) { - RETURN_CTOR(&input); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&value, &_0, &option, 1))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); } - ZVAL_LONG(&_9, 0); - ZVAL_LONG(&_10, paddingSize); - ZEPHIR_INIT_NVAR(&_2); - zephir_substr(&_2, &padding, 0 , zephir_get_intval(&_10), 0); - ZEPHIR_CONCAT_VV(return_value, &input, &_2); - RETURN_MM(); + RETURN_CTOR(&value); } -static PHP_METHOD(Phalcon_Encryption_Crypt, cryptUnpadText) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getUserOptions) { - zval _3; - zend_bool _0, _1; + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "options"); +} + +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getValidators) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "validators"); +} + +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getValue) +{ + zval name, _0, form, value, _1$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, paddingType, ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, length, paddingSize, service, _2, _4, _5$$3, _6$$3, _7$$3, _8$$3, _9$$6, _10$$6; - zval input, mode; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&paddingSize); - ZVAL_UNDEF(&service); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_8$$3); - ZVAL_UNDEF(&_9$$6); - ZVAL_UNDEF(&_10$$6); - ZVAL_UNDEF(&_3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_STR(input) - Z_PARAM_STR(mode) - Z_PARAM_LONG(blockSize) - Z_PARAM_LONG(paddingType) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&form); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1$$4); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &input_param, &mode_param, &blockSize_param, &paddingType_param); - zephir_get_strval(&input, input_param); - zephir_get_strval(&mode, mode_param); - blockSize = zephir_get_intval(blockSize_param); - paddingType = zephir_get_intval(paddingType_param); - - ZEPHIR_INIT_VAR(&length); - ZVAL_LONG(&length, zephir_fast_strlen_ev(&input)); - ZEPHIR_INIT_VAR(&paddingSize); - ZVAL_LONG(&paddingSize, 0); - _0 = ZEPHIR_GT_LONG(&length, 0); - if (_0) { - _0 = (zephir_safe_mod_zval_long(&length, blockSize) == 0); - } - _1 = _0; - if (_1) { - ZEPHIR_INIT_VAR(&_3); - zephir_create_array(&_3, 2, 0); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "cbc"); - zephir_array_fast_append(&_3, &_4); - ZEPHIR_INIT_NVAR(&_4); - ZVAL_STRING(&_4, "ecb"); - zephir_array_fast_append(&_3, &_4); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "checkismode", NULL, 231, &_3, &mode); - zephir_check_call_status(); - _1 = ZEPHIR_IS_TRUE_IDENTICAL(&_2); - } - if (_1) { - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("padFactory"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_6$$3, paddingType); - ZEPHIR_CALL_METHOD(&service, &_5$$3, "padnumbertoservice", NULL, 0, &_6$$3); - zephir_check_call_status(); - zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("padFactory"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_7$$3, &_6$$3, "newinstance", NULL, 0, &service); - zephir_check_call_status(); - ZVAL_LONG(&_8$$3, blockSize); - ZEPHIR_CALL_METHOD(&paddingSize, &_7$$3, "unpad", NULL, 0, &input, &_8$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&name, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&form, &_0); + ZEPHIR_INIT_VAR(&value); + ZVAL_NULL(&value); + if (Z_TYPE_P(&form) == IS_OBJECT) { + ZEPHIR_RETURN_CALL_METHOD(&form, "getvalue", NULL, 0, &name); zephir_check_call_status(); - if (ZEPHIR_GT_LONG(&paddingSize, 0)) { - if (ZEPHIR_LE_LONG(&paddingSize, blockSize)) { - if (ZEPHIR_LT(&paddingSize, &length)) { - ZEPHIR_INIT_VAR(&_9$$6); - zephir_sub_function(&_9$$6, &length, &paddingSize); - ZVAL_LONG(&_10$$6, 0); - zephir_substr(return_value, &input, 0 , zephir_get_intval(&_9$$6), 0); - RETURN_MM(); - } - RETURN_MM_STRING(""); - } - ZEPHIR_INIT_NVAR(&paddingSize); - ZVAL_LONG(&paddingSize, 0); - } + RETURN_MM(); } - if (ZEPHIR_IS_LONG_IDENTICAL(&paddingSize, 0)) { - RETURN_CTOR(&input); + if (Z_TYPE_P(&value) == IS_NULL) { + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("value"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&value, &_1$$4); } - RETURN_MM_STRING(""); + RETURN_CCTOR(&value); } -static PHP_METHOD(Phalcon_Encryption_Crypt, decryptGetUnpadded) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, hasMessages) { - zval _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS; - zval *mode_param = NULL, *blockSize_param = NULL, decrypted, *decrypted_param = NULL, padding, _0, _2, _3$$3, _4$$3; - zval mode; + zval _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&decrypted); - ZVAL_UNDEF(&padding); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_1); + + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); + RETURN_BOOL(zephir_fast_count_int(&_0) > 0); +} + +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, label) +{ + zend_bool _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *attributes_param = NULL, code, internalAttributes, labelName, name, tagFactory, _0$$3; + zval attributes; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&code); + ZVAL_UNDEF(&internalAttributes); + ZVAL_UNDEF(&labelName); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&tagFactory); + ZVAL_UNDEF(&_0$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(mode) - Z_PARAM_LONG(blockSize) - Z_PARAM_STR(decrypted) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &mode_param, &blockSize_param, &decrypted_param); - zephir_get_strval(&mode, mode_param); - blockSize = zephir_get_intval(blockSize_param); - zephir_get_strval(&decrypted, decrypted_param); + zephir_fetch_params(1, 0, 1, &attributes_param); + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); + } else { + zephir_get_arrval(&attributes, attributes_param); + } - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 2, 0); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "cbc"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_STRING(&_2, "ecb"); - zephir_array_fast_append(&_1, &_2); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkismode", NULL, 231, &_1, &mode); + ZEPHIR_CALL_METHOD(&tagFactory, this_ptr, "getlocaltagfactory", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("padding"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&padding, &_3$$3); - ZVAL_LONG(&_3$$3, blockSize); - ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "cryptunpadtext", NULL, 0, &decrypted, &mode, &_3$$3, &padding); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&decrypted, &_4$$3); + ZEPHIR_OBS_VAR(&internalAttributes); + zephir_read_property(&internalAttributes, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC); + ZEPHIR_OBS_VAR(&name); + if (!(zephir_array_isset_string_fetch(&name, &internalAttributes, SL("id"), 0))) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&name, &_0$$3); } - RETURN_CCTOR(&decrypted); + if (!(zephir_array_isset_string(&attributes, SL("for")))) { + zephir_array_update_string(&attributes, SL("for"), &name, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&labelName); + zephir_read_property(&labelName, this_ptr, ZEND_STRL("label"), PH_NOISY_CC); + _1 = zephir_is_true(&labelName); + if (!(_1)) { + _1 = zephir_is_numeric(&labelName); + } + if (!(_1)) { + ZEPHIR_CPY_WRT(&labelName, &name); + } + ZEPHIR_CALL_METHOD(&code, &tagFactory, "label", NULL, 0, &labelName, &attributes); + zephir_check_call_status(); + RETURN_CCTOR(&code); } -static PHP_METHOD(Phalcon_Encryption_Crypt, decryptGcmCcmAuth) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, render) { - zval _2; + zval _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *mode_param = NULL, *cipherText_param = NULL, *decryptKey_param = NULL, *iv_param = NULL, authData, authTag, authTagLength, cipher, encrypted, decrypted, _0, _1, _3, _4$$3, _5$$3, _6$$4; - zval mode, cipherText, decryptKey, iv; + zval *attributes_param = NULL, helper, merged, method, name, result, tagFactory, value, _0; + zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&cipherText); - ZVAL_UNDEF(&decryptKey); - ZVAL_UNDEF(&iv); - ZVAL_UNDEF(&authData); - ZVAL_UNDEF(&authTag); - ZVAL_UNDEF(&authTagLength); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&encrypted); - ZVAL_UNDEF(&decrypted); + ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&helper); + ZVAL_UNDEF(&merged); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&tagFactory); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_STR(mode) - Z_PARAM_STR(cipherText) - Z_PARAM_STR(decryptKey) - Z_PARAM_STR(iv) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &mode_param, &cipherText_param, &decryptKey_param, &iv_param); - zephir_get_strval(&mode, mode_param); - zephir_get_strval(&cipherText, cipherText_param); - zephir_get_strval(&decryptKey, decryptKey_param); - zephir_get_strval(&iv, iv_param); + zephir_fetch_params(1, 0, 1, &attributes_param); + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); + } else { + zephir_get_arrval(&attributes, attributes_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cipher, &_0); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "ccm"); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "gcm"); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "checkismode", NULL, 231, &_2, &mode); + zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&name, &_0); + ZEPHIR_CALL_METHOD(&value, this_ptr, "getvalue", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_1)) { - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("authData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&authData, &_4$$3); - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("authTagLength"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&authTagLength, &_4$$3); - zephir_negate(&authTagLength); - ZEPHIR_INIT_VAR(&authTag); - zephir_substr(&authTag, &cipherText, zephir_get_intval(&authTagLength), 0, ZEPHIR_SUBSTR_NO_LENGTH); - ZEPHIR_INIT_VAR(&_5$$3); - ZVAL_STRING(&_5$$3, ""); - ZEPHIR_INIT_VAR(&encrypted); - zephir_fast_str_replace(&encrypted, &authTag, &_5$$3, &cipherText); - ZVAL_LONG(&_4$$3, 1); - ZEPHIR_CALL_FUNCTION(&decrypted, "openssl_decrypt", NULL, 232, &encrypted, &cipher, &decryptKey, &_4$$3, &iv, &authTag, &authData); - zephir_check_call_status(); - } else { - ZVAL_LONG(&_6$$4, 1); - ZEPHIR_CALL_FUNCTION(&decrypted, "openssl_decrypt", NULL, 232, &cipherText, &cipher, &decryptKey, &_6$$4, &iv); - zephir_check_call_status(); - } - if (ZEPHIR_IS_FALSE_IDENTICAL(&decrypted)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Could not decrypt data", "phalcon/Encryption/Crypt.zep", 782); - return; + zephir_read_property(&_0, this_ptr, ZEND_STRL("method"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&method, &_0); + ZEPHIR_CALL_METHOD(&tagFactory, this_ptr, "getlocaltagfactory", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&helper, &tagFactory, "newinstance", NULL, 0, &method); + zephir_check_call_status(); + if (zephir_array_isset_string(&attributes, SL("value"))) { + ZEPHIR_OBS_NVAR(&value); + zephir_array_fetch_string(&value, &attributes, SL("value"), PH_NOISY, "phalcon/Forms/Element/AbstractElement.zep", 391); + zephir_array_unset_string(&attributes, SL("value"), PH_SEPARATE); } - RETURN_CCTOR(&decrypted); + zephir_read_property(&_0, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&merged); + zephir_fast_array_merge(&merged, &_0, &attributes); + ZEPHIR_CALL_METHOD(&result, &helper, "__invoke", NULL, 0, &name, &value, &merged); + zephir_check_call_status(); + zephir_cast_to_string(&_1, &result); + RETURN_CTOR(&_1); } -static PHP_METHOD(Phalcon_Encryption_Crypt, encryptGetPadded) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setAttribute) { - zval _3; - zend_bool _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS; - zval *mode_param = NULL, *input_param = NULL, *blockSize_param = NULL, _0, _2, _4, _5$$3, _6$$3; - zval mode, input; + zval *attribute_param = NULL, *value, value_sub; + zval attribute; zval *this_ptr = getThis(); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(mode) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(attribute) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &mode_param, &input_param, &blockSize_param); - zephir_get_strval(&mode, mode_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 2, 0, &attribute_param, &value); + zephir_get_strval(&attribute, attribute_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("padding"), PH_NOISY_CC | PH_READONLY); - _1 = !ZEPHIR_IS_LONG_IDENTICAL(&_0, 0); - if (_1) { - ZEPHIR_INIT_VAR(&_3); - zephir_create_array(&_3, 2, 0); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "cbc"); - zephir_array_fast_append(&_3, &_4); - ZEPHIR_INIT_NVAR(&_4); - ZVAL_STRING(&_4, "ecb"); - zephir_array_fast_append(&_3, &_4); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "checkismode", NULL, 231, &_3, &mode); - zephir_check_call_status(); - _1 = ZEPHIR_IS_TRUE_IDENTICAL(&_2); - } - if (_1) { - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("padding"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_6$$3, blockSize); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "cryptpadtext", NULL, 0, &input, &mode, &_6$$3, &_5$$3); - zephir_check_call_status(); - RETURN_MM(); - } - RETURN_CTOR(&input); + zephir_update_property_array(this_ptr, SL("attributes"), &attribute, value); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, encryptGcmCcm) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setAttributes) { - zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *mode_param = NULL, *padded_param = NULL, *encryptKey_param = NULL, *iv_param = NULL, authData, authTag, authTagLength, cipher, encrypted, _0, _1, _3, _4$$3, _5$$5; - zval mode, padded, encryptKey, iv; + zval *attributes_param = NULL; + zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&padded); - ZVAL_UNDEF(&encryptKey); - ZVAL_UNDEF(&iv); - ZVAL_UNDEF(&authData); - ZVAL_UNDEF(&authTag); - ZVAL_UNDEF(&authTagLength); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&encrypted); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&attributes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_STR(mode) - Z_PARAM_STR(padded) - Z_PARAM_STR(encryptKey) - Z_PARAM_STR(iv) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &mode_param, &padded_param, &encryptKey_param, &iv_param); - zephir_get_strval(&mode, mode_param); - zephir_get_strval(&padded, padded_param); - zephir_get_strval(&encryptKey, encryptKey_param); - zephir_get_strval(&iv, iv_param); + zephir_fetch_params(1, 1, 0, &attributes_param); + ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cipher, &_0); - ZEPHIR_INIT_VAR(&authTag); - ZVAL_STRING(&authTag, ""); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "ccm"); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "gcm"); - zephir_array_fast_append(&_2, &_3); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "checkismode", NULL, 231, &_2, &mode); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_1)) { - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("authData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&authData, &_4$$3); - if (1 == ZEPHIR_IS_EMPTY(&authData)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Auth data must be provided when using AEAD mode", "phalcon/Encryption/Crypt.zep", 841); - return; - } - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("authTag"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&authTag, &_4$$3); - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("authTagLength"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&authTagLength, &_4$$3); - ZVAL_LONG(&_4$$3, 1); - ZEPHIR_MAKE_REF(&authTag); - ZEPHIR_CALL_FUNCTION(&encrypted, "openssl_encrypt", NULL, 233, &padded, &cipher, &encryptKey, &_4$$3, &iv, &authTag, &authData, &authTagLength); - ZEPHIR_UNREF(&authTag); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("authTag"), &authTag); - } else { - ZVAL_LONG(&_5$$5, 1); - ZEPHIR_CALL_FUNCTION(&encrypted, "openssl_encrypt", NULL, 233, &padded, &cipher, &encryptKey, &_5$$5, &iv); - zephir_check_call_status(); - } - if (ZEPHIR_IS_FALSE_IDENTICAL(&encrypted)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Could not encrypt data", "phalcon/Encryption/Crypt.zep", 870); - return; - } - ZEPHIR_CONCAT_VV(return_value, &encrypted, &authTag); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("attributes"), &attributes); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, initializeAvailableCiphers) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setDefault) { - zend_bool _4$$4, _5$$4, _6$$4, _7$$6, _8$$6, _9$$6; - zval allowed; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$true, available, cipher, _0, _1, *_2, _3; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&available); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&allowed); + ZVAL_UNDEF(&value_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_END(); +#endif - ZEPHIR_MM_GROW(); + zephir_fetch_params_without_memory_grow(1, 0, &value); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "openssl_get_cipher_methods"); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "phpfunctionexists", NULL, 0, &_1); - zephir_check_call_status(); - if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "This class requires the openssl extension for PHP", "phalcon/Encryption/Crypt.zep", 892); - return; - } - ZEPHIR_CALL_FUNCTION(&available, "openssl_get_cipher_methods", NULL, 234, &__$true); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&allowed); - array_init(&allowed); - zephir_is_iterable(&available, 0, "phalcon/Encryption/Crypt.zep", 909); - if (Z_TYPE_P(&available) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&available), _2) - { - ZEPHIR_INIT_NVAR(&cipher); - ZVAL_COPY(&cipher, _2); - _4$$4 = 1 != zephir_start_with_str(&cipher, SL("des")); - if (_4$$4) { - _4$$4 = 1 != zephir_start_with_str(&cipher, SL("rc2")); - } - _5$$4 = _4$$4; - if (_5$$4) { - _5$$4 = 1 != zephir_start_with_str(&cipher, SL("rc4")); - } - _6$$4 = _5$$4; - if (_6$$4) { - _6$$4 = 1 != zephir_end_with_str(&cipher, SL("ecb")); - } - if (_6$$4) { - zephir_array_update_zval(&allowed, &cipher, &cipher, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &available, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &available, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&cipher, &available, "current", NULL, 0); - zephir_check_call_status(); - _7$$6 = 1 != zephir_start_with_str(&cipher, SL("des")); - if (_7$$6) { - _7$$6 = 1 != zephir_start_with_str(&cipher, SL("rc2")); - } - _8$$6 = _7$$6; - if (_8$$6) { - _8$$6 = 1 != zephir_start_with_str(&cipher, SL("rc4")); - } - _9$$6 = _8$$6; - if (_9$$6) { - _9$$6 = 1 != zephir_end_with_str(&cipher, SL("ecb")); - } - if (_9$$6) { - zephir_array_update_zval(&allowed, &cipher, &cipher, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &available, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&cipher); - zephir_update_property_zval(this_ptr, ZEND_STRL("availableCiphers"), &allowed); - RETURN_THIS(); + + zephir_update_property_zval(this_ptr, ZEND_STRL("value"), value); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, checkIsMode) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setFilters) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval mode; - zval *modes_param = NULL, *mode_param = NULL; - zval modes; + zend_bool _0; + zval *filters, filters_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modes); - ZVAL_UNDEF(&mode); + ZVAL_UNDEF(&filters_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ARRAY(modes) - Z_PARAM_STR(mode) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(filters) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modes_param, &mode_param); - zephir_get_arrval(&modes, modes_param); - zephir_get_strval(&mode, mode_param); + zephir_fetch_params_without_memory_grow(1, 0, &filters); - RETURN_MM_BOOL(zephir_fast_in_array(&mode, &modes)); + _0 = Z_TYPE_P(filters) != IS_STRING; + if (_0) { + _0 = Z_TYPE_P(filters) != IS_ARRAY; + } + if (UNEXPECTED(_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_forms_exception_ce, "The filter needs to be an array or string", "phalcon/Forms/Element/AbstractElement.zep", 440); + return; + } + zephir_update_property_zval(this_ptr, ZEND_STRL("filters"), filters); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, getBlockSize) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setForm) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *mode_param = NULL, _0, _2, _3, _4; - zval mode, _1; + zval *form, form_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&mode); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&form_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(mode) + Z_PARAM_OBJECT_OF_CLASS(form, phalcon_forms_form_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &mode_param); - zephir_get_strval(&mode, mode_param); + zephir_fetch_params_without_memory_grow(1, 0, &form); - zephir_read_property(&_0, this_ptr, ZEND_STRL("ivLength"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_GT_LONG(&_0, 0)) { - RETURN_MM_MEMBER(getThis(), "ivLength"); - } - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_CONCAT_SV(&_1, "-", &mode); - zephir_read_property(&_2, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, ""); - ZEPHIR_CALL_FUNCTION(&_4, "str_ireplace", NULL, 235, &_1, &_3, &_2); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getivlength", NULL, 230, &_4); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("form"), form); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, getIvLength) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setLabel) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *cipher_param = NULL, length; - zval cipher; + zval *label_param = NULL; + zval label; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cipher); - ZVAL_UNDEF(&length); + ZVAL_UNDEF(&label); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(cipher) + Z_PARAM_STR(label) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cipher_param); - zephir_get_strval(&cipher, cipher_param); + zephir_fetch_params(1, 1, 0, &label_param); + zephir_get_strval(&label, label_param); - ZEPHIR_CALL_FUNCTION(&length, "openssl_cipher_iv_length", NULL, 236, &cipher); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&length)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_crypt_exception_exception_ce, "Cannot calculate the initialization vector (IV) length of the cipher", "phalcon/Encryption/Crypt.zep", 962); - return; - } - RETURN_CCTOR(&length); + zephir_update_property_zval(this_ptr, ZEND_STRL("label"), &label); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, getMode) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setMessages) { - zval position, _0, _1, _2, _3, _4, _5; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *messages, messages_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&messages_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(messages, phalcon_messages_messages_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif - ZEPHIR_MM_GROW(); + zephir_fetch_params_without_memory_grow(1, 0, &messages); - zephir_read_property(&_0, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "-"); - ZEPHIR_CALL_FUNCTION(&_2, "strrpos", NULL, 237, &_0, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&position); - ZVAL_LONG(&position, zephir_get_intval(&_2)); - zephir_read_property(&_3, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_4, this_ptr, ZEND_STRL("cipher"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_5, ((zephir_get_numberval(&position) - zephir_fast_strlen_ev(&_4)) + 1)); - ZEPHIR_INIT_NVAR(&_1); - zephir_substr(&_1, &_3, zephir_get_intval(&_5), 0, ZEPHIR_SUBSTR_NO_LENGTH); - ZEPHIR_RETURN_CALL_FUNCTION("mb_strtolower", NULL, 10, &_1); - zephir_check_call_status(); - RETURN_MM(); + + zephir_update_property_zval(this_ptr, ZEND_STRL("messages"), messages); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, phpFunctionExists) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setName) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *name_param = NULL; @@ -29915,72 +30131,185 @@ static PHP_METHOD(Phalcon_Encryption_Crypt, phpFunctionExists) ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &name_param); - zephir_get_strval(&name, name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - RETURN_MM_BOOL((zephir_function_exists(&name) == SUCCESS)); + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, phpOpensslCipherIvLength) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setTagFactory) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *cipher_param = NULL; - zval cipher; + zval *tagFactory, tagFactory_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cipher); + ZVAL_UNDEF(&tagFactory_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(cipher) + Z_PARAM_OBJECT_OF_CLASS(tagFactory, phalcon_html_tagfactory_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + zephir_fetch_params_without_memory_grow(1, 0, &tagFactory); + + + zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), tagFactory); + RETURN_THISW(); +} + +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setUserOption) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *option_param = NULL, *value, value_sub; + zval option; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&value_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(option) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cipher_param); - zephir_get_strval(&cipher, cipher_param); + zephir_fetch_params(1, 2, 0, &option_param, &value); + zephir_get_strval(&option, option_param); - ZEPHIR_RETURN_CALL_FUNCTION("openssl_cipher_iv_length", NULL, 236, &cipher); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array(this_ptr, SL("options"), &option, value); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Crypt, phpOpensslRandomPseudoBytes) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, setUserOptions) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *length_param = NULL, _0; - zend_long length, ZEPHIR_LAST_CALL_STATUS; + zval *options_param = NULL; + zval options; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(length) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &length_param); - length = zephir_get_intval(length_param); + zephir_fetch_params(1, 1, 0, &options_param); + zephir_get_arrval(&options, options_param); - ZVAL_LONG(&_0, length); - ZEPHIR_RETURN_CALL_FUNCTION("openssl_random_pseudo_bytes", NULL, 238, &_0); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); + RETURN_THIS(); } -zend_object *zephir_init_properties_Phalcon_Encryption_Crypt(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Forms_Element_AbstractElement, getLocalTagFactory) { - zval _0, _1$$3; + zval container, escaper, tagFactory, _0, _1$$3, _2$$4, _4$$5, _5$$5, _6$$6, _7$$7, _8$$7, _9$$8; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&container); + ZVAL_UNDEF(&escaper); + ZVAL_UNDEF(&tagFactory); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_9$$8); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_INIT_VAR(&tagFactory); + ZVAL_NULL(&tagFactory); + zephir_read_property(&_0, this_ptr, ZEND_STRL("tagFactory"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&_0))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_1$$3) != IS_NULL) { + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("form"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&tagFactory, &_2$$4, "gettagfactory", NULL, 0); + zephir_check_call_status(); + } + if (Z_TYPE_P(&tagFactory) == IS_NULL) { + ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_3, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_5$$5); + ZVAL_STRING(&_5$$5, "tag"); + ZEPHIR_CALL_METHOD(&_4$$5, &container, "has", NULL, 0, &_5$$5); + zephir_check_call_status(); + if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&_4$$5))) { + ZEPHIR_INIT_VAR(&_6$$6); + ZVAL_STRING(&_6$$6, "tag"); + ZEPHIR_CALL_METHOD(&tagFactory, &container, "getshared", NULL, 0, &_6$$6); + zephir_check_call_status(); + } + } + if (Z_TYPE_P(&tagFactory) == IS_NULL) { + ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_3, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_8$$7); + ZVAL_STRING(&_8$$7, "escaper"); + ZEPHIR_CALL_METHOD(&_7$$7, &container, "has", NULL, 0, &_8$$7); + zephir_check_call_status(); + if (EXPECTED(ZEPHIR_IS_TRUE_IDENTICAL(&_7$$7))) { + ZEPHIR_INIT_VAR(&_9$$8); + ZVAL_STRING(&_9$$8, "escaper"); + ZEPHIR_CALL_METHOD(&escaper, &container, "getshared", NULL, 0, &_9$$8); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&escaper); + object_init_ex(&escaper, phalcon_html_escaper_ce); + if (zephir_has_constructor(&escaper)) { + ZEPHIR_CALL_METHOD(NULL, &escaper, "__construct", NULL, 0); + zephir_check_call_status(); + } + + } + ZEPHIR_INIT_NVAR(&tagFactory); + object_init_ex(&tagFactory, phalcon_html_tagfactory_ce); + ZEPHIR_CALL_METHOD(NULL, &tagFactory, "__construct", NULL, 9, &escaper); + zephir_check_call_status(); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("tagFactory"), &tagFactory); + } + RETURN_MM_MEMBER(getThis(), "tagFactory"); +} + +zend_object *zephir_init_properties_Phalcon_Forms_Element_AbstractElement(zend_class_entry *class_type) +{ + zval _0, _2, _4, _6, _1$$3, _3$$4, _5$$5, _7$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_6); ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_7$$6); ZEPHIR_MM_GROW(); @@ -29988,11 +30317,29 @@ zend_object *zephir_init_properties_Phalcon_Encryption_Crypt(zend_class_entry *c { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("availableCiphers"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("validators"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("availableCiphers"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("validators"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("filters"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("filters"), &_5$$5); + } + zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_6) == IS_NULL) { + ZEPHIR_INIT_VAR(&_7$$6); + array_init(&_7$$6); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("attributes"), &_7$$6); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -30009,1182 +30356,770 @@ zend_object *zephir_init_properties_Phalcon_Encryption_Crypt(zend_class_entry *c -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Check) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption, Security, phalcon, encryption_security, phalcon_di_abstractinjectionaware_ce, phalcon_encryption_security_method_entry, 0); - - zend_declare_property_long(phalcon_encryption_security_ce, SL("defaultHash"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_encryption_security_ce, SL("numberBytes"), 16, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_security_ce, SL("random"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_security_ce, SL("requestToken"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_security_ce, SL("token"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_security_ce, SL("tokenKey"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_security_ce, SL("tokenKeySessionId"), "$PHALCON/CSRF/KEY$", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_encryption_security_ce, SL("tokenValueSessionId"), "$PHALCON/CSRF$", ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_encryption_security_ce, SL("workFactor"), 10, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_encryption_security_ce, SL("localSession"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_ce, SL("localRequest"), ZEND_ACC_PRIVATE); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_ARGON2I"), 10); - - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_ARGON2ID"), 11); - - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_BCRYPT"), 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Check, phalcon, forms_element_check, phalcon_forms_element_abstractelement_ce, NULL, 0); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_DEFAULT"), 0); + zend_declare_property_string(phalcon_forms_element_check_ce, SL("method"), "inputCheckbox", ZEND_ACC_PROTECTED); + return SUCCESS; +} - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_BLOWFISH"), 4); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_BLOWFISH_A"), 5); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_BLOWFISH_X"), 6); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_BLOWFISH_Y"), 7); +#ifdef HAVE_CONFIG_H +#endif - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_EXT_DES"), 2); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_MD5"), 3); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_SHA256"), 8); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_SHA512"), 9); - zephir_declare_class_constant_long(phalcon_encryption_security_ce, SL("CRYPT_STD_DES"), 1); +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Date) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Date, phalcon, forms_element_date, phalcon_forms_element_abstractelement_ce, NULL, 0); + zend_declare_property_string(phalcon_forms_element_date_ce, SL("method"), "inputDate", ZEND_ACC_PROTECTED); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security, getWorkFactor) -{ - zval *this_ptr = getThis(); - - - RETURN_MEMBER(getThis(), "workFactor"); -} -static PHP_METHOD(Phalcon_Encryption_Security, __construct) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *session = NULL, session_sub, *request = NULL, request_sub, __$null, _0; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&session_sub); - ZVAL_UNDEF(&request_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(session, phalcon_session_managerinterface_ce) - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(request, phalcon_http_requestinterface_ce) - ZEND_PARSE_PARAMETERS_END(); +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &session, &request); - if (!session) { - session = &session_sub; - session = &__$null; - } - if (!request) { - request = &request_sub; - request = &__$null; - } - - ZEPHIR_INIT_VAR(&_0); - object_init_ex(&_0, phalcon_encryption_security_random_ce); - if (zephir_has_constructor(&_0)) { - ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 0); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("random"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("localRequest"), request); - zephir_update_property_zval(this_ptr, ZEND_STRL("localSession"), session); - ZEPHIR_MM_RESTORE(); -} -static PHP_METHOD(Phalcon_Encryption_Security, checkHash) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_ElementInterface) { - zend_bool _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long maxPassLength, ZEPHIR_LAST_CALL_STATUS; - zval *password_param = NULL, *passwordHash_param = NULL, *maxPassLength_param = NULL; - zval password, passwordHash; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Forms\\Element, ElementInterface, phalcon, forms_element_elementinterface, phalcon_forms_element_elementinterface_method_entry); - ZVAL_UNDEF(&password); - ZVAL_UNDEF(&passwordHash); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(password) - Z_PARAM_STR(passwordHash) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(maxPassLength) - ZEND_PARSE_PARAMETERS_END(); -#endif + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addFilter); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addValidator); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, addValidators); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, appendMessage); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, clear); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getAttribute); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getAttributes); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getDefault); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getFilters); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getForm); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getLabel); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getMessages); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getUserOption); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getUserOptions); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getValidators); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, getValue); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, hasMessages); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, label); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, render); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setAttribute); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setAttributes); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setDefault); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setFilters); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setForm); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setLabel); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setMessages); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setName); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setUserOption); +ZEPHIR_DOC_METHOD(Phalcon_Forms_Element_ElementInterface, setUserOptions); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &password_param, &passwordHash_param, &maxPassLength_param); - zephir_get_strval(&password, password_param); - zephir_get_strval(&passwordHash, passwordHash_param); - if (!maxPassLength_param) { - maxPassLength = 0; - } else { - maxPassLength = zephir_get_intval(maxPassLength_param); - } +#ifdef HAVE_CONFIG_H +#endif - _0 = maxPassLength > 0; - if (_0) { - _0 = zephir_fast_strlen_ev(&password) > maxPassLength; - } - if (_0) { - RETURN_MM_BOOL(0); - } - ZEPHIR_RETURN_CALL_FUNCTION("password_verify", NULL, 242, &password, &passwordHash); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security, checkToken) + + + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Email) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool destroyIfValid, _1, _2; - zval *tokenKey_param = NULL, *tokenValue = NULL, tokenValue_sub, *destroyIfValid_param = NULL, __$null, equals, knownToken, userToken, _0; - zval tokenKey; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Email, phalcon, forms_element_email, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&tokenKey); - ZVAL_UNDEF(&tokenValue_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&equals); - ZVAL_UNDEF(&knownToken); - ZVAL_UNDEF(&userToken); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(tokenKey) - Z_PARAM_ZVAL_OR_NULL(tokenValue) - Z_PARAM_BOOL(destroyIfValid) - ZEND_PARSE_PARAMETERS_END(); + zend_declare_property_string(phalcon_forms_element_email_ce, SL("method"), "inputEmail", ZEND_ACC_PROTECTED); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &tokenKey_param, &tokenValue, &destroyIfValid_param); - if (!tokenKey_param) { - ZEPHIR_INIT_VAR(&tokenKey); - } else { - zephir_get_strval(&tokenKey, tokenKey_param); - } - if (!tokenValue) { - tokenValue = &tokenValue_sub; - tokenValue = &__$null; - } - if (!destroyIfValid_param) { - destroyIfValid = 1; - } else { - destroyIfValid = zephir_get_boolval(destroyIfValid_param); - } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "processtokenkey", NULL, 243, &tokenKey); - zephir_check_call_status(); - zephir_get_strval(&tokenKey, &_0); - if (!(!(ZEPHIR_IS_EMPTY(&tokenKey)))) { - RETURN_MM_BOOL(0); - } - ZEPHIR_CALL_METHOD(&userToken, this_ptr, "processusertoken", NULL, 244, &tokenKey, tokenValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&knownToken, this_ptr, "getrequesttoken", NULL, 0); - zephir_check_call_status(); - _1 = Z_TYPE_P(&knownToken) == IS_NULL; - if (!(_1)) { - _1 = Z_TYPE_P(&userToken) == IS_NULL; - } - if (_1) { - RETURN_MM_BOOL(0); - } - ZEPHIR_INIT_VAR(&equals); - ZEPHIR_INIT_NVAR(&equals); - ZVAL_BOOL(&equals, zephir_hash_equals(&knownToken, &userToken)); - _2 = zephir_is_true(&equals); - if (_2) { - _2 = destroyIfValid; - } - if (_2) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "destroytoken", NULL, 0); - zephir_check_call_status(); - } - RETURN_CCTOR(&equals); -} -static PHP_METHOD(Phalcon_Encryption_Security, computeHmac) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_File) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool raw; - zval *data_param = NULL, *key_param = NULL, *algo_param = NULL, *raw_param = NULL, hmac, _0, _1$$3, _2$$3, _3$$3; - zval data, key, algo; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, File, phalcon, forms_element_file, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&algo); - ZVAL_UNDEF(&hmac); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_STR(data) - Z_PARAM_STR(key) - Z_PARAM_STR(algo) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(raw) - ZEND_PARSE_PARAMETERS_END(); + zend_declare_property_string(phalcon_forms_element_file_ce, SL("method"), "inputFile", ZEND_ACC_PROTECTED); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &data_param, &key_param, &algo_param, &raw_param); - zephir_get_strval(&data, data_param); - zephir_get_strval(&key, key_param); - zephir_get_strval(&algo, algo_param); - if (!raw_param) { - raw = 0; - } else { - raw = zephir_get_boolval(raw_param); - } - ZVAL_BOOL(&_0, (raw ? 1 : 0)); - ZEPHIR_CALL_FUNCTION(&hmac, "hash_hmac", NULL, 224, &algo, &data, &key, &_0); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&hmac))) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_encryption_security_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "Unknown hashing algorithm: %s"); - ZEPHIR_CALL_FUNCTION(&_3$$3, "sprintf", NULL, 112, &_2$$3, &algo); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_3$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Encryption/Security.zep", 219); - ZEPHIR_MM_RESTORE(); - return; - } - RETURN_CCTOR(&hmac); -} -static PHP_METHOD(Phalcon_Encryption_Security, destroyToken) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Hidden) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$null, session, _0, _1, _2$$3, _3$$3; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Hidden, phalcon, forms_element_hidden, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&session); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); + zend_declare_property_string(phalcon_forms_element_hidden_ce, SL("method"), "inputHidden", ZEND_ACC_PROTECTED); + return SUCCESS; +} - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "session"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "localSession"); - ZEPHIR_CALL_METHOD(&session, this_ptr, "getlocalservice", NULL, 0, &_0, &_1); - zephir_check_call_status(); - if (UNEXPECTED(zephir_is_true(&session))) { - zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("tokenKeySessionId"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &session, "remove", NULL, 0, &_2$$3); - zephir_check_call_status(); - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("tokenValueSessionId"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &session, "remove", NULL, 0, &_3$$3); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("token"), &__$null); - zephir_update_property_zval(this_ptr, ZEND_STRL("tokenKey"), &__$null); - zephir_update_property_zval(this_ptr, ZEND_STRL("requestToken"), &__$null); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Encryption_Security, getDefaultHash) -{ - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - RETURN_MEMBER(getThis(), "defaultHash"); -} -static PHP_METHOD(Phalcon_Encryption_Security, getHashInformation) + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Numeric) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *hash_param = NULL; - zval hash; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Numeric, phalcon, forms_element_numeric, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&hash); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(hash) - ZEND_PARSE_PARAMETERS_END(); + zend_declare_property_string(phalcon_forms_element_numeric_ce, SL("method"), "inputNumeric", ZEND_ACC_PROTECTED); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &hash_param); - zephir_get_strval(&hash, hash_param); - ZEPHIR_RETURN_CALL_FUNCTION("password_get_info", NULL, 245, &hash); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security, getRandom) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Password) { - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Password, phalcon, forms_element_password, phalcon_forms_element_abstractelement_ce, NULL, 0); + + zend_declare_property_string(phalcon_forms_element_password_ce, SL("method"), "inputPassword", ZEND_ACC_PROTECTED); + return SUCCESS; +} - RETURN_MEMBER(getThis(), "random"); -} -static PHP_METHOD(Phalcon_Encryption_Security, getRandomBytes) -{ - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - RETURN_MEMBER(getThis(), "numberBytes"); -} -static PHP_METHOD(Phalcon_Encryption_Security, getRequestToken) + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Radio) { - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Radio, phalcon, forms_element_radio, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&_0); + zend_declare_property_string(phalcon_forms_element_radio_ce, SL("method"), "inputRadio", ZEND_ACC_PROTECTED); + return SUCCESS; +} - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("requestToken"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_EMPTY(&_0)) { - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsessiontoken", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - RETURN_MM_MEMBER(getThis(), "requestToken"); -} -static PHP_METHOD(Phalcon_Encryption_Security, getSessionToken) -{ - zval session, _0, _1, _2$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - ZVAL_UNDEF(&session); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "session"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "localSession"); - ZEPHIR_CALL_METHOD(&session, this_ptr, "getlocalservice", NULL, 0, &_0, &_1); - zephir_check_call_status(); - if (UNEXPECTED(zephir_is_true(&session))) { - zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("tokenValueSessionId"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&session, "get", NULL, 0, &_2$$3); - zephir_check_call_status(); - RETURN_MM(); - } - RETURN_MM_NULL(); + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Select) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Select, phalcon, forms_element_select, phalcon_forms_element_abstractelement_ce, phalcon_forms_element_select_method_entry, 0); + + zend_declare_property_null(phalcon_forms_element_select_ce, SL("optionsValues"), ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security, getSaltBytes) +static PHP_METHOD(Phalcon_Forms_Element_Select, __construct) { - zend_bool _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *numberBytes_param = NULL, safeBytes, _0$$3, _1$$4, _2$$4; - zend_long numberBytes, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; + zval attributes; + zval *name_param = NULL, *options = NULL, options_sub, *attributes_param = NULL, __$null; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&safeBytes); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&options_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&attributes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_LONG(numberBytes) + Z_PARAM_ZVAL_OR_NULL(options) + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &numberBytes_param); - if (!numberBytes_param) { - numberBytes = 0; + zephir_fetch_params(1, 1, 2, &name_param, &options, &attributes_param); + zephir_get_strval(&name, name_param); + if (!options) { + options = &options_sub; + options = &__$null; + } + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); } else { - numberBytes = zephir_get_intval(numberBytes_param); + zephir_get_arrval(&attributes, attributes_param); } - if (!(numberBytes)) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("numberBytes"), PH_NOISY_CC | PH_READONLY); - numberBytes = zephir_get_numberval(&_0$$3); - } - while (1) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("random"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_2$$4, numberBytes); - ZEPHIR_CALL_METHOD(&safeBytes, &_1$$4, "base64safe", NULL, 0, &_2$$4); - zephir_check_call_status(); - _3$$4 = zephir_is_true(&safeBytes); - if (_3$$4) { - _3$$4 = zephir_fast_strlen_ev(&safeBytes) >= numberBytes; - } - if (_3$$4) { - break; - } - } - RETURN_CCTOR(&safeBytes); + zephir_update_property_zval(this_ptr, ZEND_STRL("optionsValues"), options); + ZEPHIR_CALL_PARENT(NULL, phalcon_forms_element_select_ce, getThis(), "__construct", &_0, 0, &name, &attributes); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security, getToken) +static PHP_METHOD(Phalcon_Forms_Element_Select, addOption) { - zval session, _0, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6$$3, _7$$4, _8$$4; + zend_string *_3$$3; + zend_ulong _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *option, option_sub, key, value, *_0$$3, _1$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&session); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&option_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_8$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(option) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &option); - zephir_read_property(&_0, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "getsessiontoken", NULL, 0); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("requestToken"), &_1$$3); - zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("random"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("numberBytes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_3$$3, &_2$$3, "base64safe", NULL, 0, &_4$$3); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("token"), &_3$$3); - ZEPHIR_INIT_VAR(&_5$$3); - ZVAL_STRING(&_5$$3, "session"); - ZEPHIR_INIT_VAR(&_6$$3); - ZVAL_STRING(&_6$$3, "localSession"); - ZEPHIR_CALL_METHOD(&session, this_ptr, "getlocalservice", NULL, 0, &_5$$3, &_6$$3); - zephir_check_call_status(); - if (Z_TYPE_P(&session) != IS_NULL) { - zephir_read_property(&_7$$4, this_ptr, ZEND_STRL("tokenValueSessionId"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_8$$4, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &session, "set", NULL, 0, &_7$$4, &_8$$4); + + if (Z_TYPE_P(option) == IS_ARRAY) { + zephir_is_iterable(option, 0, "phalcon/Forms/Element/Select.zep", 51); + if (Z_TYPE_P(option) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(option), _2$$3, _3$$3, _0$$3) + { + ZEPHIR_INIT_NVAR(&key); + if (_3$$3 != NULL) { + ZVAL_STR_COPY(&key, _3$$3); + } else { + ZVAL_LONG(&key, _2$$3); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0$$3); + zephir_update_property_array(this_ptr, SL("optionsValues"), &key, &value); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, option, "rewind", NULL, 0); zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1$$3, option, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&key, option, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, option, "current", NULL, 0); + zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("optionsValues"), &key, &value); + ZEPHIR_CALL_METHOD(NULL, option, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + } else { + zephir_update_property_array_append(this_ptr, SL("optionsValues"), option); } - RETURN_MM_MEMBER(getThis(), "token"); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security, getTokenKey) +static PHP_METHOD(Phalcon_Forms_Element_Select, getOptions) { - zval session, _0, _1$$3, _2$$3, _3$$4, _4$$4, _5$$4, _6$$4, _7$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&session); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("tokenKey"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "session"); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "localSession"); - ZEPHIR_CALL_METHOD(&session, this_ptr, "getlocalservice", NULL, 0, &_1$$3, &_2$$3); - zephir_check_call_status(); - if (Z_TYPE_P(&session) != IS_NULL) { - zephir_read_property(&_3$$4, this_ptr, ZEND_STRL("random"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_5$$4, this_ptr, ZEND_STRL("numberBytes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_4$$4, &_3$$4, "base64safe", NULL, 0, &_5$$4); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("tokenKey"), &_4$$4); - zephir_read_property(&_6$$4, this_ptr, ZEND_STRL("tokenKeySessionId"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_7$$4, this_ptr, ZEND_STRL("tokenKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &session, "set", NULL, 0, &_6$$4, &_7$$4); - zephir_check_call_status(); - } - } - RETURN_MM_MEMBER(getThis(), "tokenKey"); + RETURN_MEMBER(getThis(), "optionsValues"); } -static PHP_METHOD(Phalcon_Encryption_Security, hash) +static PHP_METHOD(Phalcon_Forms_Element_Select, render) { - zend_bool legacy = 0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, bytes = 0; - zval options; - zval *password_param = NULL, *options_param = NULL, algorithm, arguments, cost, formatted, prefix, salt, _0, _1, _6, _2$$6, _3$$7, _4$$9, _5$$9; - zval password; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; + zval *attributes_param = NULL, _1, _2; + zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&password); - ZVAL_UNDEF(&algorithm); - ZVAL_UNDEF(&arguments); - ZVAL_UNDEF(&cost); - ZVAL_UNDEF(&formatted); - ZVAL_UNDEF(&prefix); - ZVAL_UNDEF(&salt); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&attributes); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_2$$6); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&_4$$9); - ZVAL_UNDEF(&_5$$9); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(password) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &password_param, &options_param); - zephir_get_strval(&password, password_param); - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 0, 1, &attributes_param); + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); } else { - zephir_get_arrval(&options, options_param); + zephir_get_arrval(&attributes, attributes_param); } - ZEPHIR_CALL_METHOD(&cost, this_ptr, "processcost", NULL, 246, &options); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "%02s"); - ZEPHIR_CALL_FUNCTION(&formatted, "sprintf", NULL, 112, &_0, &cost); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&prefix); - ZVAL_STRING(&prefix, ""); - bytes = 22; - legacy = 1; - ZEPHIR_OBS_VAR(&_1); - zephir_read_property(&_1, this_ptr, ZEND_STRL("defaultHash"), PH_NOISY_CC); - do { - if (ZEPHIR_IS_LONG(&_1, 3)) { - ZEPHIR_INIT_NVAR(&prefix); - ZVAL_STRING(&prefix, "$1$"); - bytes = 12; - break; - } - if (ZEPHIR_IS_LONG(&_1, 8)) { - ZEPHIR_INIT_NVAR(&prefix); - ZVAL_STRING(&prefix, "$5$"); - bytes = 16; - break; - } - if (ZEPHIR_IS_LONG(&_1, 9)) { - ZEPHIR_INIT_NVAR(&prefix); - ZVAL_STRING(&prefix, "$6$"); - bytes = 16; - break; - } - if (ZEPHIR_IS_LONG(&_1, 5)) { - ZEPHIR_INIT_VAR(&_2$$6); - ZVAL_STRING(&_2$$6, "$2a$%s$"); - ZEPHIR_CALL_FUNCTION(&prefix, "sprintf", NULL, 112, &_2$$6, &formatted); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_1, 6)) { - ZEPHIR_INIT_VAR(&_3$$7); - ZVAL_STRING(&_3$$7, "$2x$%s$"); - ZEPHIR_CALL_FUNCTION(&prefix, "sprintf", NULL, 112, &_3$$7, &formatted); - zephir_check_call_status(); - break; - } - legacy = 0; - break; - } while(0); - - if (UNEXPECTED(legacy)) { - ZVAL_LONG(&_5$$9, bytes); - ZEPHIR_CALL_METHOD(&_4$$9, this_ptr, "getsaltbytes", NULL, 0, &_5$$9); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&salt); - ZEPHIR_CONCAT_VVS(&salt, &prefix, &_4$$9, "$"); - ZEPHIR_RETURN_CALL_FUNCTION("crypt", NULL, 247, &password, &salt); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_INIT_VAR(&_6); - zephir_create_array(&_6, 1, 0); - zephir_array_update_string(&_6, SL("cost"), &cost, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&options, &_6); - ZEPHIR_CALL_METHOD(&algorithm, this_ptr, "processalgorithm", NULL, 248); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&arguments, this_ptr, "processargonoptions", NULL, 249, &options); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "prepareattributes", NULL, 0, &attributes); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_FUNCTION("password_hash", NULL, 250, &password, &algorithm, &arguments); + zephir_read_property(&_2, this_ptr, ZEND_STRL("optionsValues"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_CE_STATIC(phalcon_tag_select_ce, "selectfield", &_0, 0, &_1, &_2); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security, isLegacyHash) +static PHP_METHOD(Phalcon_Forms_Element_Select, setOptions) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *passwordHash_param = NULL; - zval passwordHash; + zval *options, options_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&passwordHash); + ZVAL_UNDEF(&options_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(passwordHash) + Z_PARAM_ZVAL(options) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &passwordHash_param); - zephir_get_strval(&passwordHash, passwordHash_param); + zephir_fetch_params_without_memory_grow(1, 0, &options); - RETURN_MM_BOOL(zephir_start_with_str(&passwordHash, SL("$2a$"))); + zephir_update_property_zval(this_ptr, ZEND_STRL("optionsValues"), options); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Security, setDefaultHash) +static PHP_METHOD(Phalcon_Forms_Element_Select, prepareAttributes) { - zval *defaultHash_param = NULL, _0; - zend_long defaultHash; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *attributes_param = NULL, value, name, mergedAttributes, defaultAttributes, _0; + zval attributes; zval *this_ptr = getThis(); + ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&mergedAttributes); + ZVAL_UNDEF(&defaultAttributes); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(defaultHash) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(attributes) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &defaultHash_param); - defaultHash = zephir_get_intval(defaultHash_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &attributes_param); + if (!attributes_param) { + ZEPHIR_INIT_VAR(&attributes); + array_init(&attributes); + } else { + zephir_get_arrval(&attributes, attributes_param); + } - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, defaultHash); - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultHash"), &_0); - RETURN_THISW(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&name, &_0); + zephir_array_update_long(&attributes, 0, &name, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + ZEPHIR_OBS_VAR(&defaultAttributes); + zephir_read_property(&defaultAttributes, this_ptr, ZEND_STRL("attributes"), PH_NOISY_CC); + ZEPHIR_INIT_VAR(&mergedAttributes); + zephir_fast_array_merge(&mergedAttributes, &defaultAttributes, &attributes); + ZEPHIR_CALL_METHOD(&value, this_ptr, "getvalue", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&value) != IS_NULL) { + zephir_array_update_string(&mergedAttributes, SL("value"), &value, PH_COPY | PH_SEPARATE); + } + RETURN_CCTOR(&mergedAttributes); } -static PHP_METHOD(Phalcon_Encryption_Security, setRandomBytes) -{ - zval *randomBytes_param = NULL, _0; - zend_long randomBytes; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(randomBytes) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - zephir_fetch_params_without_memory_grow(1, 0, &randomBytes_param); - if (UNEXPECTED(Z_TYPE_P(randomBytes_param) != IS_LONG)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'randomBytes' must be of the type int")); - RETURN_NULL(); - } - randomBytes = Z_LVAL_P(randomBytes_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, randomBytes); - zephir_update_property_zval(this_ptr, ZEND_STRL("numberBytes"), &_0); - RETURN_THISW(); -} -static PHP_METHOD(Phalcon_Encryption_Security, setWorkFactor) +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Submit) { - zval *workFactor_param = NULL, _0; - zend_long workFactor; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Submit, phalcon, forms_element_submit, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(workFactor) - ZEND_PARSE_PARAMETERS_END(); + zend_declare_property_string(phalcon_forms_element_submit_ce, SL("method"), "inputSubmit", ZEND_ACC_PROTECTED); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - zephir_fetch_params_without_memory_grow(1, 0, &workFactor_param); - workFactor = zephir_get_intval(workFactor_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, workFactor); - zephir_update_property_zval(this_ptr, ZEND_STRL("workFactor"), &_0); - RETURN_THISW(); + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_Text) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, Text, phalcon, forms_element_text, phalcon_forms_element_abstractelement_ce, NULL, 0); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security, getLocalService) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Forms_Element_TextArea) { - zend_bool _1, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *property_param = NULL, _0, _2, _4, _5, _8, _6$$3, _7$$3; - zval name, property; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Forms\\Element, TextArea, phalcon, forms_element_textarea, phalcon_forms_element_abstractelement_ce, NULL, 0); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&property); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_STR(property) - ZEND_PARSE_PARAMETERS_END(); + zend_declare_property_string(phalcon_forms_element_textarea_ce, SL("method"), "inputTextarea", ZEND_ACC_PROTECTED); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &property_param); - zephir_get_strval(&name, name_param); - zephir_get_strval(&property, property_param); - ZEPHIR_OBS_VAR(&_0); - zephir_read_property_zval(&_0, this_ptr, &property, PH_NOISY_CC); - _1 = Z_TYPE_P(&_0) == IS_NULL; - if (_1) { - zephir_read_property(&_2, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - _1 = Z_TYPE_P(&_2) != IS_NULL; - } - _3 = _1; - if (_3) { - zephir_read_property(&_4, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_5, &_4, "has", NULL, 0, &name); - zephir_check_call_status(); - _3 = ZEPHIR_IS_TRUE_IDENTICAL(&_5); - } - if (_3) { - zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_7$$3, &_6$$3, "getshared", NULL, 0, &name); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &property, &_7$$3); - } - ZEPHIR_OBS_VAR(&_8); - zephir_read_property_zval(&_8, this_ptr, &property, PH_NOISY_CC); - RETURN_CCTOR(&_8); + +ZEPHIR_INIT_CLASS(Phalcon_Di_AbstractInjectionAware) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Di, AbstractInjectionAware, phalcon, di_abstractinjectionaware, phalcon_di_abstractinjectionaware_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_di_abstractinjectionaware_ce, SL("container"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_di_abstractinjectionaware_ce, 1, phalcon_di_injectionawareinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security, processAlgorithm) +static PHP_METHOD(Phalcon_Di_AbstractInjectionAware, getDI) { - zval algorithm, _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&algorithm); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&algorithm); - ZVAL_STRING(&algorithm, "2y"); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultHash"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("defaultHash"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_LONG_IDENTICAL(&_0, 10)) { - ZEPHIR_INIT_NVAR(&algorithm); - ZVAL_STRING(&algorithm, "argon2i"); - } else if (ZEPHIR_IS_LONG_IDENTICAL(&_1, 11)) { - ZEPHIR_INIT_NVAR(&algorithm); - ZVAL_STRING(&algorithm, "argon2id"); - } - RETURN_CCTOR(&algorithm); + RETURN_MEMBER(getThis(), "container"); } -static PHP_METHOD(Phalcon_Encryption_Security, processArgonOptions) +static PHP_METHOD(Phalcon_Di_AbstractInjectionAware, setDI) { - zend_bool _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL, value, _0, _2; - zval options; + zval *container, container_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&container_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(options) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &options_param); - zephir_get_arrval(&options, options_param); + zephir_fetch_params_without_memory_grow(1, 0, &container); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultHash"), PH_NOISY_CC | PH_READONLY); - _1 = ZEPHIR_IS_LONG_IDENTICAL(&_0, 10); - if (!(_1)) { - zephir_read_property(&_2, this_ptr, ZEND_STRL("defaultHash"), PH_NOISY_CC | PH_READONLY); - _1 = ZEPHIR_IS_LONG_IDENTICAL(&_2, 11); - } - if (_1) { - ZEPHIR_OBS_VAR(&value); - if (!(zephir_array_isset_string_fetch(&value, &options, SL("memory_cost"), 0))) { - ZEPHIR_INIT_NVAR(&value); - ZVAL_LONG(&value, 65536); - } - zephir_array_update_string(&options, SL("memory_cost"), &value, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&value); - if (!(zephir_array_isset_string_fetch(&value, &options, SL("time_cost"), 0))) { - ZEPHIR_INIT_NVAR(&value); - ZVAL_LONG(&value, 4); - } - zephir_array_update_string(&options, SL("time_cost"), &value, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&value); - if (!(zephir_array_isset_string_fetch(&value, &options, SL("threads"), 0))) { - ZEPHIR_INIT_NVAR(&value); - ZVAL_LONG(&value, 1); - } - zephir_array_update_string(&options, SL("threads"), &value, PH_COPY | PH_SEPARATE); - } - RETURN_CTOR(&options); + zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); } -static PHP_METHOD(Phalcon_Encryption_Security, processCost) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL, cost; - zval options; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); - ZVAL_UNDEF(&cost); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &options_param); - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); - } else { - zephir_get_arrval(&options, options_param); - } - ZEPHIR_OBS_VAR(&cost); - if (!(zephir_array_isset_string_fetch(&cost, &options, SL("cost"), 0))) { - ZEPHIR_INIT_NVAR(&cost); - ZVAL_LONG(&cost, 10); - } - if (ZEPHIR_LT_LONG(&cost, 4)) { - ZEPHIR_INIT_NVAR(&cost); - ZVAL_LONG(&cost, 4); - } - if (ZEPHIR_GT_LONG(&cost, 31)) { - ZEPHIR_INIT_NVAR(&cost); - ZVAL_LONG(&cost, 31); - } - RETURN_CCTOR(&cost); + +ZEPHIR_INIT_CLASS(Phalcon_Di_Di) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Di, Di, phalcon, di_di, phalcon_di_di_method_entry, 0); + + zend_declare_property_null(phalcon_di_di_ce, SL("services"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_di_di_ce, SL("sharedInstances"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_di_di_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_di_di_ce, SL("_default"), ZEND_ACC_PROTECTED|ZEND_ACC_STATIC); + phalcon_di_di_ce->create_object = zephir_init_properties_Phalcon_Di_Di; + + zend_class_implements(phalcon_di_di_ce, 1, phalcon_di_diinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security, processTokenKey) +static PHP_METHOD(Phalcon_Di_Di, __construct) { - zend_bool _2; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *tokenKey_param = NULL, key, session, _0, _1, _3$$3; - zval tokenKey; + zval _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tokenKey); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&session); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(tokenKey) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &tokenKey_param); - if (!tokenKey_param) { - ZEPHIR_INIT_VAR(&tokenKey); - } else { - zephir_get_strval(&tokenKey, tokenKey_param); - } - - ZEPHIR_CPY_WRT(&key, &tokenKey); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "session"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "localSession"); - ZEPHIR_CALL_METHOD(&session, this_ptr, "getlocalservice", NULL, 0, &_0, &_1); - zephir_check_call_status(); - _2 = Z_TYPE_P(&session) != IS_NULL; - if (_2) { - _2 = 1 == ZEPHIR_IS_EMPTY(&key); - } - if (_2) { - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("tokenKeySessionId"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&key, &session, "get", NULL, 0, &_3$$3); - zephir_check_call_status(); + zephir_read_static_property_ce(&_0, phalcon_di_di_ce, SL("_default"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_is_true(&_0))) { + zephir_update_static_property_ce(phalcon_di_di_ce, ZEND_STRL("_default"), this_ptr); } - RETURN_CCTOR(&key); } -static PHP_METHOD(Phalcon_Encryption_Security, processUserToken) +static PHP_METHOD(Phalcon_Di_Di, __call) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *tokenKey_param = NULL, *tokenValue_param = NULL, request, userToken, _0$$3, _1$$3, _2$$4; - zval tokenKey, tokenValue; + zval arguments; + zval *method_param = NULL, *arguments_param = NULL, instance, possibleService, definition, _6, _0$$3, _1$$3, _2$$3, _3$$6, _4$$6, _5$$6; + zval method, _7; zval *this_ptr = getThis(); - ZVAL_UNDEF(&tokenKey); - ZVAL_UNDEF(&tokenValue); - ZVAL_UNDEF(&request); - ZVAL_UNDEF(&userToken); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&instance); + ZVAL_UNDEF(&possibleService); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&_6); ZVAL_UNDEF(&_0$$3); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$6); + ZVAL_UNDEF(&_4$$6); + ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&arguments); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(tokenKey) + Z_PARAM_STR(method) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(tokenValue) + Z_PARAM_ARRAY(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &tokenKey_param, &tokenValue_param); - zephir_get_strval(&tokenKey, tokenKey_param); - if (!tokenValue_param) { - ZEPHIR_INIT_VAR(&tokenValue); - } else { - zephir_get_strval(&tokenValue, tokenValue_param); + zephir_fetch_params(1, 1, 1, &method_param, &arguments_param); + if (UNEXPECTED(Z_TYPE_P(method_param) != IS_STRING && Z_TYPE_P(method_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'method' must be of the type string")); + RETURN_MM_NULL(); } - - - ZEPHIR_CPY_WRT(&userToken, &tokenValue); - if (!(!(ZEPHIR_IS_EMPTY(&tokenValue)))) { - ZEPHIR_INIT_VAR(&_0$$3); - ZVAL_STRING(&_0$$3, "request"); + if (EXPECTED(Z_TYPE_P(method_param) == IS_STRING)) { + zephir_get_strval(&method, method_param); + } else { + ZEPHIR_INIT_VAR(&method); + } + if (!arguments_param) { + ZEPHIR_INIT_VAR(&arguments); + array_init(&arguments); + } else { + zephir_get_arrval(&arguments, arguments_param); + } + + + if (zephir_start_with_str(&method, SL("get"))) { + ZVAL_LONG(&_0$$3, 3); ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "localRequest"); - ZEPHIR_CALL_METHOD(&request, this_ptr, "getlocalservice", NULL, 0, &_0$$3, &_1$$3); + zephir_substr(&_1$$3, &method, 3 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + ZEPHIR_CALL_FUNCTION(&possibleService, "lcfirst", NULL, 73, &_1$$3); zephir_check_call_status(); - if (Z_TYPE_P(&request) != IS_NULL) { - ZEPHIR_INIT_VAR(&_2$$4); - ZVAL_STRING(&_2$$4, "string"); - ZEPHIR_CALL_METHOD(&userToken, &request, "getpost", NULL, 0, &tokenKey, &_2$$4); + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset(&_2$$3, &possibleService)) { + ZEPHIR_CALL_METHOD(&instance, this_ptr, "get", NULL, 0, &possibleService, &arguments); zephir_check_call_status(); + RETURN_CCTOR(&instance); } } - RETURN_CCTOR(&userToken); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_CryptInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Encryption\\Crypt, CryptInterface, phalcon, encryption_crypt_cryptinterface, phalcon_encryption_crypt_cryptinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, decrypt); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, decryptBase64); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, encrypt); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, encryptBase64); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getAvailableCiphers); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getAuthTag); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getAuthData); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getAuthTagLength); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getCipher); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, getKey); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setAuthTag); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setAuthData); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setAuthTagLength); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setCipher); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setKey); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, setPadding); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_CryptInterface, useSigning); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_PadFactory) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Crypt, PadFactory, phalcon, encryption_crypt_padfactory, phalcon_factory_abstractfactory_ce, phalcon_encryption_crypt_padfactory_method_entry, 0); - - zend_declare_property_string(phalcon_encryption_crypt_padfactory_ce, SL("exception"), "Phalcon\\Encryption\\Crypt\\Exception\\Exception", ZEND_ACC_PROTECTED); - return SUCCESS; + if (zephir_start_with_str(&method, SL("set"))) { + ZEPHIR_OBS_VAR(&definition); + if (zephir_array_isset_long_fetch(&definition, &arguments, 0, 0)) { + ZVAL_LONG(&_3$$6, 3); + ZEPHIR_INIT_VAR(&_4$$6); + zephir_substr(&_4$$6, &method, 3 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + ZEPHIR_CALL_FUNCTION(&_5$$6, "lcfirst", NULL, 73, &_4$$6); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "set", NULL, 0, &_5$$6, &definition); + zephir_check_call_status(); + RETURN_MM_NULL(); + } + } + ZEPHIR_INIT_VAR(&_6); + object_init_ex(&_6, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_7); + ZEPHIR_CONCAT_SVS(&_7, "Call to undefined method or service '", &method, "'"); + ZEPHIR_CALL_METHOD(NULL, &_6, "__construct", NULL, 29, &_7); + zephir_check_call_status(); + zephir_throw_exception_debug(&_6, "phalcon/Di/Di.zep", 147); + ZEPHIR_MM_RESTORE(); + return; } -static PHP_METHOD(Phalcon_Encryption_Crypt_PadFactory, __construct) +static PHP_METHOD(Phalcon_Di_Di, attempt) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *services_param = NULL; - zval services; + zend_bool shared; + zval *name_param = NULL, *definition, definition_sub, *shared_param = NULL, _0, _1, _2, _3, _4; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&services); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&definition_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(definition) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(services) + Z_PARAM_BOOL(shared) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &services_param); - if (!services_param) { - ZEPHIR_INIT_VAR(&services); - array_init(&services); + zephir_fetch_params(1, 2, 1, &name_param, &definition, &shared_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); + ZEPHIR_INIT_VAR(&name); + } + if (!shared_param) { + shared = 0; + } else { + shared = zephir_get_boolval(shared_param); } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset(&_0, &name)) { + RETURN_MM_BOOL(0); + } + ZEPHIR_INIT_VAR(&_1); + object_init_ex(&_1, phalcon_di_service_ce); + if (shared) { + ZVAL_BOOL(&_2, 1); + } else { + ZVAL_BOOL(&_2, 0); + } + ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 74, definition, &_2); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + zephir_update_property_array(this_ptr, SL("services"), &name, &_1); + zephir_read_property(&_3, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_4, &_3, &name, PH_NOISY | PH_READONLY, "phalcon/Di/Di.zep", 163); + RETURN_CTOR(&_4); } -static PHP_METHOD(Phalcon_Encryption_Crypt_PadFactory, newInstance) +static PHP_METHOD(Phalcon_Di_Di, get) { + zval _6$$5, _15$$18; + zend_bool _1$$3, _14$$11; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, definition; - zval name; + zval *name_param = NULL, *parameters = NULL, parameters_sub, __$null, service, eventsManager, isShared, instance, _0, _5, _2$$3, _3$$4, _4$$4, _7$$5, _8$$7, _9$$7, _10$$9, _12$$12, _16$$18; + zval name, _11$$9, _13$$12; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&_11$$9); + ZVAL_UNDEF(&_13$$12); + ZVAL_UNDEF(¶meters_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&service); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&isShared); + ZVAL_UNDEF(&instance); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_10$$9); + ZVAL_UNDEF(&_12$$12); + ZVAL_UNDEF(&_16$$18); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_15$$18); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(parameters) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); + zephir_fetch_params(1, 1, 1, &name_param, ¶meters); if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); @@ -31194,781 +31129,908 @@ static PHP_METHOD(Phalcon_Encryption_Crypt_PadFactory, newInstance) } else { ZEPHIR_INIT_VAR(&name); } + if (!parameters) { + parameters = ¶meters_sub; + parameters = &__$null; + } - ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); - zephir_check_call_status(); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(return_value, &definition); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Crypt_PadFactory, padNumberToService) -{ - zval map; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *number_param = NULL, _0, _1, _2; - zend_long number, ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&map); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(number) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZEPHIR_INIT_VAR(&instance); + ZVAL_NULL(&instance); + ZEPHIR_OBS_VAR(&service); + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset_fetch(&service, &_0, &name, 0)) { + ZEPHIR_CALL_METHOD(&isShared, &service, "isshared", NULL, 0); + zephir_check_call_status(); + _1$$3 = zephir_is_true(&isShared); + if (_1$$3) { + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("sharedInstances"), PH_NOISY_CC | PH_READONLY); + _1$$3 = zephir_array_isset(&_2$$3, &name); + } + if (_1$$3) { + zephir_read_property(&_3$$4, this_ptr, ZEND_STRL("sharedInstances"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_4$$4, &_3$$4, &name, PH_NOISY | PH_READONLY, "phalcon/Di/Di.zep", 181); + RETURN_CTOR(&_4$$4); + } + } + zephir_read_property(&_5, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_5); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_6$$5); + zephir_create_array(&_6$$5, 2, 0); + zephir_array_update_string(&_6$$5, SL("name"), &name, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_6$$5, SL("parameters"), parameters, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_VAR(&_7$$5); + ZVAL_STRING(&_7$$5, "di:beforeServiceResolve"); + ZEPHIR_CALL_METHOD(&instance, &eventsManager, "fire", NULL, 0, &_7$$5, this_ptr, &_6$$5); + zephir_check_call_status(); + } + if (Z_TYPE_P(&instance) != IS_OBJECT) { + if (Z_TYPE_P(&service) != IS_NULL) { + /* try_start_1: */ - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &number_param); - number = zephir_get_intval(number_param); + ZEPHIR_CALL_METHOD(&instance, &service, "resolve", NULL, 0, parameters, this_ptr); + zephir_check_call_status_or_jump(try_end_1); + try_end_1: - ZEPHIR_INIT_VAR(&map); - zephir_create_array(&map, 6, 0); - add_index_stringl(&map, 1, SL("ansi")); - add_index_stringl(&map, 3, SL("iso10126")); - add_index_stringl(&map, 4, SL("isoiek")); - add_index_stringl(&map, 2, SL("pjcs7")); - add_index_stringl(&map, 6, SL("space")); - add_index_stringl(&map, 5, SL("zero")); - ZEPHIR_INIT_VAR(&_0); - object_init_ex(&_0, phalcon_support_helper_arr_get_ce); - if (zephir_has_constructor(&_0)) { - ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 0); + if (EG(exception)) { + ZEPHIR_INIT_VAR(&_8$$7); + ZVAL_OBJ(&_8$$7, EG(exception)); + Z_ADDREF_P(&_8$$7); + ZEPHIR_INIT_VAR(&_9$$7); + if (zephir_instance_of_ev(&_8$$7, phalcon_di_exception_serviceresolutionexception_ce)) { + zend_clear_exception(); + ZEPHIR_CPY_WRT(&_9$$7, &_8$$7); + ZEPHIR_INIT_VAR(&_10$$9); + object_init_ex(&_10$$9, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_11$$9); + ZEPHIR_CONCAT_SVS(&_11$$9, "Service '", &name, "' cannot be resolved"); + ZEPHIR_CALL_METHOD(NULL, &_10$$9, "__construct", NULL, 29, &_11$$9); + zephir_check_call_status(); + zephir_throw_exception_debug(&_10$$9, "phalcon/Di/Di.zep", 210); + ZEPHIR_MM_RESTORE(); + return; + } + } + if (zephir_is_true(&isShared)) { + zephir_update_property_array(this_ptr, SL("sharedInstances"), &name, &instance); + } + } else { + if (UNEXPECTED(!(zephir_class_exists(&name, 1)))) { + ZEPHIR_INIT_VAR(&_12$$12); + object_init_ex(&_12$$12, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_13$$12); + ZEPHIR_CONCAT_SVS(&_13$$12, "Service '", &name, "' was not found in the dependency injection container"); + ZEPHIR_CALL_METHOD(NULL, &_12$$12, "__construct", NULL, 29, &_13$$12); + zephir_check_call_status(); + zephir_throw_exception_debug(&_12$$12, "phalcon/Di/Di.zep", 225); + ZEPHIR_MM_RESTORE(); + return; + } + _14$$11 = Z_TYPE_P(parameters) == IS_ARRAY; + if (_14$$11) { + _14$$11 = ((zephir_fast_count_int(parameters)) ? 1 : 0); + } + if (_14$$11) { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&instance, &name, parameters); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&instance, &name); + zephir_check_call_status(); + } + } + } + if (Z_TYPE_P(&instance) == IS_OBJECT) { + if (zephir_instance_of_ev(&instance, phalcon_di_injectionawareinterface_ce)) { + ZEPHIR_CALL_METHOD(NULL, &instance, "setdi", NULL, 0, this_ptr); + zephir_check_call_status(); + } + if (zephir_instance_of_ev(&instance, phalcon_di_initializationawareinterface_ce)) { + ZEPHIR_CALL_METHOD(NULL, &instance, "initialize", NULL, 0); + zephir_check_call_status(); + } + } + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_15$$18); + zephir_create_array(&_15$$18, 3, 0); + zephir_array_update_string(&_15$$18, SL("name"), &name, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_15$$18, SL("parameters"), parameters, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_15$$18, SL("instance"), &instance, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_VAR(&_16$$18); + ZVAL_STRING(&_16$$18, "di:afterServiceResolve"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_16$$18, this_ptr, &_15$$18); zephir_check_call_status(); } - - ZVAL_LONG(&_1, number); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "noop"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "__invoke", NULL, 150, &map, &_1, &_2); - zephir_check_call_status(); - RETURN_MM(); + RETURN_CCTOR(&instance); } -static PHP_METHOD(Phalcon_Encryption_Crypt_PadFactory, getServices) +static PHP_METHOD(Phalcon_Di_Di, getDefault) { + zval _0; zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); - zephir_create_array(return_value, 7, 0); - add_assoc_stringl_ex(return_value, SL("ansi"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Ansi")); - add_assoc_stringl_ex(return_value, SL("iso10126"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Iso10126")); - add_assoc_stringl_ex(return_value, SL("isoiek"), SL("Phalcon\\Encryption\\Crypt\\Padding\\IsoIek")); - add_assoc_stringl_ex(return_value, SL("noop"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Noop")); - add_assoc_stringl_ex(return_value, SL("pjcs7"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Pkcs7")); - add_assoc_stringl_ex(return_value, SL("space"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Space")); - add_assoc_stringl_ex(return_value, SL("zero"), SL("Phalcon\\Encryption\\Crypt\\Padding\\Zero")); - return; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Exception_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Crypt\\Exception, Exception, phalcon, encryption_crypt_exception_exception, zend_ce_exception, NULL, 0); - return SUCCESS; + zephir_read_static_property_ce(&_0, phalcon_di_di_ce, SL("_default"), PH_NOISY_CC | PH_READONLY); + RETURN_CTORW(&_0); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Exception_Mismatch) +static PHP_METHOD(Phalcon_Di_Di, getInternalEventsManager) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Crypt\\Exception, Mismatch, phalcon, encryption_crypt_exception_mismatch, phalcon_encryption_crypt_exception_exception_ce, NULL, 0); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - + zval *this_ptr = getThis(); -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Ansi) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Ansi, phalcon, encryption_crypt_padding_ansi, phalcon_encryption_crypt_padding_ansi_method_entry, 0); - zend_class_implements(phalcon_encryption_crypt_padding_ansi_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + RETURN_MEMBER(getThis(), "eventsManager"); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Ansi, pad) +static PHP_METHOD(Phalcon_Di_Di, getRaw) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *paddingSize_param = NULL, _0, _1, _2, _3; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, service, _0, _1$$3; + zval name, _2$$3; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&service); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZVAL_LONG(&_0, 0); - ZEPHIR_CALL_FUNCTION(&_1, "chr", NULL, 239, &_0); - zephir_check_call_status(); - ZVAL_LONG(&_0, (paddingSize - 1)); - ZEPHIR_CALL_FUNCTION(&_2, "str_repeat", NULL, 1, &_1, &_0); - zephir_check_call_status(); - ZVAL_LONG(&_0, paddingSize); - ZEPHIR_CALL_FUNCTION(&_3, "chr", NULL, 239, &_0); + ZEPHIR_OBS_VAR(&service); + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&service, &_0, &name, 0)))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Service '", &name, "' was not found in the dependency injection container"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/Di/Di.zep", 295); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_RETURN_CALL_METHOD(&service, "getdefinition", NULL, 0); zephir_check_call_status(); - ZEPHIR_CONCAT_VV(return_value, &_2, &_3); RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Ansi, unpad) +static PHP_METHOD(Phalcon_Di_Di, getService) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *blockSize_param = NULL, last, length, ord, padding, paddingSize, repeat, _0, _1, _2$$4, _3$$4, _4$$3, _5$$3; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, service, _0, _1$$3; + zval name, _2$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&last); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&ord); - ZVAL_UNDEF(&padding); - ZVAL_UNDEF(&paddingSize); - ZVAL_UNDEF(&repeat); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&service); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZEPHIR_INIT_VAR(&paddingSize); - ZVAL_LONG(&paddingSize, 0); - ZEPHIR_INIT_VAR(&length); - ZVAL_LONG(&length, zephir_fast_strlen_ev(&input)); - ZVAL_LONG(&_0, (zephir_get_numberval(&length) - 1)); - ZVAL_LONG(&_1, 1); - ZEPHIR_INIT_VAR(&last); - zephir_substr(&last, &input, zephir_get_intval(&_0), 1 , 0); - ZEPHIR_CALL_FUNCTION(&ord, "ord", NULL, 240, &last); - zephir_check_call_status(); - if (ZEPHIR_LE_LONG(&ord, blockSize)) { - ZEPHIR_CPY_WRT(&paddingSize, &ord); - ZEPHIR_INIT_VAR(&repeat); - ZVAL_STRING(&repeat, ""); - if (ZEPHIR_GT_LONG(&paddingSize, 1)) { - ZVAL_LONG(&_2$$4, 0); - ZEPHIR_CALL_FUNCTION(&_3$$4, "chr", NULL, 239, &_2$$4); - zephir_check_call_status(); - ZVAL_LONG(&_2$$4, (zephir_get_numberval(&paddingSize) - 1)); - ZEPHIR_CALL_FUNCTION(&repeat, "str_repeat", NULL, 1, &_3$$4, &_2$$4); - zephir_check_call_status(); - } - ZEPHIR_INIT_VAR(&padding); - ZEPHIR_CONCAT_VV(&padding, &repeat, &last); - ZEPHIR_INIT_VAR(&_4$$3); - zephir_sub_function(&_4$$3, &length, &paddingSize); - ZEPHIR_INIT_VAR(&_5$$3); - zephir_substr(&_5$$3, &input, zephir_get_intval(&_4$$3), 0, ZEPHIR_SUBSTR_NO_LENGTH); - if (!ZEPHIR_IS_IDENTICAL(&_5$$3, &padding)) { - ZEPHIR_INIT_NVAR(&paddingSize); - ZVAL_LONG(&paddingSize, 0); - } + ZEPHIR_OBS_VAR(&service); + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(!(zephir_array_isset_fetch(&service, &_0, &name, 0)))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Service '", &name, "' was not found in the dependency injection container"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/Di/Di.zep", 311); + ZEPHIR_MM_RESTORE(); + return; } - RETURN_CCTOR(&paddingSize); + RETURN_CCTOR(&service); } +static PHP_METHOD(Phalcon_Di_Di, getServices) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif + RETURN_MEMBER(getThis(), "services"); +} +static PHP_METHOD(Phalcon_Di_Di, getShared) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, *parameters = NULL, parameters_sub, __$null, instance, _0; + zval name; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(¶meters_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&instance); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(parameters) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &name_param, ¶meters); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } + if (!parameters) { + parameters = ¶meters_sub; + parameters = &__$null; + } -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Iso10126) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Iso10126, phalcon, encryption_crypt_padding_iso10126, phalcon_encryption_crypt_padding_iso10126_method_entry, 0); - zend_class_implements(phalcon_encryption_crypt_padding_iso10126_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + ZEPHIR_OBS_VAR(&instance); + zephir_read_property(&_0, this_ptr, ZEND_STRL("sharedInstances"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_array_isset_fetch(&instance, &_0, &name, 0))) { + ZEPHIR_CALL_METHOD(&instance, this_ptr, "get", NULL, 0, &name, parameters); + zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("sharedInstances"), &name, &instance); + } + RETURN_CCTOR(&instance); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Iso10126, pad) +static PHP_METHOD(Phalcon_Di_Di, loadFromConfig) { - zend_bool _0; + zend_bool _4$$3, _8$$4; + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL, *_6 = NULL; - zval *paddingSize_param = NULL, counter, padding, _7, _8, _3$$3, _5$$3; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS, _1, _2; + zephir_fcall_cache_entry *_7 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *config, config_sub, services, name, service, *_0, _1, _5$$3, _6$$3, _9$$4, _10$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&counter); - ZVAL_UNDEF(&padding); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&config_sub); + ZVAL_UNDEF(&services); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&service); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + Z_PARAM_OBJECT_OF_CLASS(config, phalcon_config_configinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + zephir_fetch_params(1, 1, 0, &config); - ZEPHIR_INIT_VAR(&padding); - ZVAL_STRING(&padding, ""); - _2 = (paddingSize - 2); - _1 = 0; - _0 = 0; - if (_1 <= _2) { - while (1) { - if (_0) { - _1++; - if (!(_1 <= _2)) { - break; - } + ZEPHIR_CALL_METHOD(&services, config, "toarray", NULL, 0); + zephir_check_call_status(); + zephir_is_iterable(&services, 0, "phalcon/Di/Di.zep", 361); + if (Z_TYPE_P(&services) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&services), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&name); + if (_3 != NULL) { + ZVAL_STR_COPY(&name, _3); } else { - _0 = 1; + ZVAL_LONG(&name, _2); } - ZEPHIR_INIT_NVAR(&counter); - ZVAL_LONG(&counter, _1); - ZEPHIR_CALL_FUNCTION(&_3$$3, "rand", &_4, 241); + ZEPHIR_INIT_NVAR(&service); + ZVAL_COPY(&service, _0); + _4$$3 = zephir_array_isset_string(&service, SL("shared")); + if (_4$$3) { + ZEPHIR_OBS_NVAR(&_5$$3); + zephir_array_fetch_string(&_5$$3, &service, SL("shared"), PH_NOISY, "phalcon/Di/Di.zep", 359); + _4$$3 = zephir_is_true(&_5$$3); + } + ZVAL_BOOL(&_6$$3, _4$$3); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "set", &_7, 0, &name, &service, &_6$$3); zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_5$$3, "chr", &_6, 239, &_3$$3); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &services, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &services, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &services, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&service, &services, "current", NULL, 0); + zephir_check_call_status(); + _8$$4 = zephir_array_isset_string(&service, SL("shared")); + if (_8$$4) { + ZEPHIR_OBS_NVAR(&_9$$4); + zephir_array_fetch_string(&_9$$4, &service, SL("shared"), PH_NOISY, "phalcon/Di/Di.zep", 359); + _8$$4 = zephir_is_true(&_9$$4); + } + ZVAL_BOOL(&_10$$4, _8$$4); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "set", &_7, 0, &name, &service, &_10$$4); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &services, "next", NULL, 0); zephir_check_call_status(); - zephir_concat_self(&padding, &_5$$3); } } - ZVAL_LONG(&_7, paddingSize); - ZEPHIR_CALL_FUNCTION(&_8, "chr", &_6, 239, &_7); - zephir_check_call_status(); - zephir_concat_self(&padding, &_8); - RETURN_CCTOR(&padding); + ZEPHIR_INIT_NVAR(&service); + ZEPHIR_INIT_NVAR(&name); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Iso10126, unpad) +static PHP_METHOD(Phalcon_Di_Di, loadFromPhp) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *blockSize_param = NULL, last, length, _0, _1; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *filePath_param = NULL, services; + zval filePath; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&last); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&filePath); + ZVAL_UNDEF(&services); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(filePath) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 1, 0, &filePath_param); + if (UNEXPECTED(Z_TYPE_P(filePath_param) != IS_STRING && Z_TYPE_P(filePath_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'filePath' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(filePath_param) == IS_STRING)) { + zephir_get_strval(&filePath, filePath_param); + } else { + ZEPHIR_INIT_VAR(&filePath); + } - ZEPHIR_INIT_VAR(&length); - ZVAL_LONG(&length, zephir_fast_strlen_ev(&input)); - ZVAL_LONG(&_0, (zephir_get_numberval(&length) - 1)); - ZVAL_LONG(&_1, 1); - ZEPHIR_INIT_VAR(&last); - zephir_substr(&last, &input, zephir_get_intval(&_0), 1 , 0); - ZEPHIR_RETURN_CALL_FUNCTION("ord", NULL, 240, &last); + ZEPHIR_INIT_VAR(&services); + object_init_ex(&services, phalcon_config_adapter_php_ce); + ZEPHIR_CALL_METHOD(NULL, &services, "__construct", NULL, 75, &filePath); zephir_check_call_status(); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_IsoIek) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, IsoIek, phalcon, encryption_crypt_padding_isoiek, phalcon_encryption_crypt_padding_isoiek_method_entry, 0); - - zend_class_implements(phalcon_encryption_crypt_padding_isoiek_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + ZEPHIR_CALL_METHOD(NULL, this_ptr, "loadfromconfig", NULL, 0, &services); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_IsoIek, pad) +static PHP_METHOD(Phalcon_Di_Di, loadFromYaml) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *paddingSize_param = NULL, _0, _1, _2, _3; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval callbacks; + zval *filePath_param = NULL, *callbacks_param = NULL, services; + zval filePath; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&filePath); + ZVAL_UNDEF(&services); + ZVAL_UNDEF(&callbacks); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(filePath) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY_OR_NULL(callbacks) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + zephir_fetch_params(1, 1, 1, &filePath_param, &callbacks_param); + if (UNEXPECTED(Z_TYPE_P(filePath_param) != IS_STRING && Z_TYPE_P(filePath_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'filePath' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(filePath_param) == IS_STRING)) { + zephir_get_strval(&filePath, filePath_param); + } else { + ZEPHIR_INIT_VAR(&filePath); + } + if (!callbacks_param) { + ZEPHIR_INIT_VAR(&callbacks); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&callbacks, callbacks_param); + } - ZVAL_LONG(&_0, 0x80); - ZEPHIR_CALL_FUNCTION(&_1, "chr", NULL, 239, &_0); - zephir_check_call_status(); - ZVAL_LONG(&_0, 0); - ZEPHIR_CALL_FUNCTION(&_2, "chr", NULL, 239, &_0); + ZEPHIR_INIT_VAR(&services); + object_init_ex(&services, phalcon_config_adapter_yaml_ce); + ZEPHIR_CALL_METHOD(NULL, &services, "__construct", NULL, 76, &filePath, &callbacks); zephir_check_call_status(); - ZVAL_LONG(&_0, (paddingSize - 1)); - ZEPHIR_CALL_FUNCTION(&_3, "str_repeat", NULL, 1, &_2, &_0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "loadfromconfig", NULL, 0, &services); zephir_check_call_status(); - ZEPHIR_CONCAT_VV(return_value, &_1, &_3); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_IsoIek, unpad) +static PHP_METHOD(Phalcon_Di_Di, has) { - zend_bool _0, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS, counter = 0, paddingSize = 0; - zval *input_param = NULL, *blockSize_param = NULL, length, inputArray, _1, _2, _3, _6, _7; - zval input; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&inputArray); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); - - - paddingSize = 0; - ZEPHIR_CALL_FUNCTION(&length, "mb_strlen", NULL, 229, &input); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&inputArray, "str_split", NULL, 84, &input); - zephir_check_call_status(); - counter = (zephir_get_numberval(&length) - 1); - while (1) { - _0 = counter > 0; - if (_0) { - zephir_array_fetch_long(&_1, &inputArray, counter, PH_NOISY | PH_READONLY, "phalcon/Encryption/Crypt/Padding/IsoIek.zep", 48); - ZVAL_LONG(&_2, 0); - ZEPHIR_CALL_FUNCTION(&_3, "chr", &_4, 239, &_2); - zephir_check_call_status(); - _0 = ZEPHIR_IS_IDENTICAL(&_1, &_3); - } - _5 = _0; - if (_5) { - _5 = paddingSize < blockSize; - } - if (!(_5)) { - break; - } - paddingSize++; - counter--; + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); } - zephir_array_fetch_long(&_6, &inputArray, counter, PH_NOISY | PH_READONLY, "phalcon/Encryption/Crypt/Padding/IsoIek.zep", 55); - ZVAL_LONG(&_2, 0x80); - ZEPHIR_CALL_FUNCTION(&_7, "chr", &_4, 239, &_2); - zephir_check_call_status(); - if (ZEPHIR_IS_EQUAL(&_6, &_7)) { - paddingSize++; + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - paddingSize = 0; + ZEPHIR_INIT_VAR(&name); } - RETURN_MM_LONG(paddingSize); -} + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + RETURN_MM_BOOL(zephir_array_isset(&_0, &name)); +} +static PHP_METHOD(Phalcon_Di_Di, offsetGet) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval name_sub; + zval *name; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name); - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Noop) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Noop, phalcon, encryption_crypt_padding_noop, phalcon_encryption_crypt_padding_noop_method_entry, 0); - - zend_class_implements(phalcon_encryption_crypt_padding_noop_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getshared", NULL, 0, name); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Noop, pad) +static PHP_METHOD(Phalcon_Di_Di, offsetExists) { - zval *paddingSize_param = NULL; - zend_long paddingSize; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval name_sub; + zval *name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + Z_PARAM_ZVAL(name) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name); - RETURN_STRING(""); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "has", NULL, 0, name); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Noop, unpad) +static PHP_METHOD(Phalcon_Di_Di, offsetSet) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize; - zval *input_param = NULL, *blockSize_param = NULL; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval name_sub, definition_sub; + zval *name, *definition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); + ZVAL_UNDEF(&name_sub); + ZVAL_UNDEF(&definition_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + Z_PARAM_ZVAL(name) + Z_PARAM_ZVAL(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 2, 0, &name, &definition); - RETURN_MM_LONG(0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setshared", NULL, 0, name, definition); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } +static PHP_METHOD(Phalcon_Di_Di, offsetUnset) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval name_sub; + zval *name; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&name_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(name) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &name); - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_PadInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Encryption\\Crypt\\Padding, PadInterface, phalcon, encryption_crypt_padding_padinterface, phalcon_encryption_crypt_padding_padinterface_method_entry); - - return SUCCESS; + ZEPHIR_CALL_METHOD(NULL, this_ptr, "remove", NULL, 0, name); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_Padding_PadInterface, pad); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Crypt_Padding_PadInterface, unpad); - - +static PHP_METHOD(Phalcon_Di_Di, register) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *provider, provider_sub; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&provider_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(provider, phalcon_di_serviceproviderinterface_ce) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &provider); - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Pkcs7) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Pkcs7, phalcon, encryption_crypt_padding_pkcs7, phalcon_encryption_crypt_padding_pkcs7_method_entry, 0); - - zend_class_implements(phalcon_encryption_crypt_padding_pkcs7_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + ZEPHIR_CALL_METHOD(NULL, provider, "register", NULL, 0, this_ptr); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Pkcs7, pad) +static PHP_METHOD(Phalcon_Di_Di, remove) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *paddingSize_param = NULL, _0, _1; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, services, _0, sharedInstances; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&services); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&sharedInstances); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZVAL_LONG(&_0, paddingSize); - ZEPHIR_CALL_FUNCTION(&_1, "chr", NULL, 239, &_0); - zephir_check_call_status(); - ZVAL_LONG(&_0, paddingSize); - ZEPHIR_RETURN_CALL_FUNCTION("str_repeat", NULL, 1, &_1, &_0); - zephir_check_call_status(); - RETURN_MM(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&services, &_0); + zephir_array_unset(&services, &name, PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("services"), &services); + zephir_read_property(&_0, this_ptr, ZEND_STRL("sharedInstances"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&sharedInstances, &_0); + zephir_array_unset(&sharedInstances, &name, PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("sharedInstances"), &sharedInstances); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Pkcs7, unpad) +static PHP_METHOD(Phalcon_Di_Di, reset) +{ + zval __$null; + zval *this_ptr = getThis(); + + ZVAL_NULL(&__$null); + + + + zephir_update_static_property_ce(phalcon_di_di_ce, ZEND_STRL("_default"), &__$null); +} + +static PHP_METHOD(Phalcon_Di_Di, set) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, *blockSize_param = NULL, last, length, ord, padding, paddingSize, _0, _1, _2$$3, _3$$3, _4$$3; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool shared; + zval *name_param = NULL, *definition, definition_sub, *shared_param = NULL, _0, _1, _2, _3; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&last); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&ord); - ZVAL_UNDEF(&padding); - ZVAL_UNDEF(&paddingSize); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&definition_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(definition) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(shared) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 2, 1, &name_param, &definition, &shared_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } + if (!shared_param) { + shared = 0; + } else { + shared = zephir_get_boolval(shared_param); + } - ZEPHIR_CALL_FUNCTION(&length, "mb_strlen", NULL, 229, &input); - zephir_check_call_status(); - ZVAL_LONG(&_0, (zephir_get_numberval(&length) - 1)); - ZVAL_LONG(&_1, 1); - ZEPHIR_INIT_VAR(&last); - zephir_substr(&last, &input, zephir_get_intval(&_0), 1 , 0); - ZEPHIR_CALL_FUNCTION(&ord, "ord", NULL, 240, &last); - zephir_check_call_status(); - if (ZEPHIR_LE_LONG(&ord, blockSize)) { - ZEPHIR_CPY_WRT(&paddingSize, &ord); - ZEPHIR_CALL_FUNCTION(&_2$$3, "chr", NULL, 239, &paddingSize); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", NULL, 1, &_2$$3, &paddingSize); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3$$3); - zephir_sub_function(&_3$$3, &length, &paddingSize); - ZEPHIR_INIT_VAR(&_4$$3); - zephir_substr(&_4$$3, &input, zephir_get_intval(&_3$$3), 0, ZEPHIR_SUBSTR_NO_LENGTH); - if (!ZEPHIR_IS_IDENTICAL(&_4$$3, &padding)) { - ZEPHIR_INIT_NVAR(&paddingSize); - ZVAL_LONG(&paddingSize, 0); - } + ZEPHIR_INIT_VAR(&_0); + object_init_ex(&_0, phalcon_di_service_ce); + if (shared) { + ZVAL_BOOL(&_1, 1); + } else { + ZVAL_BOOL(&_1, 0); } - RETURN_CCTOR(&paddingSize); + ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 74, definition, &_1); + zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("services"), &name, &_0); + zephir_read_property(&_2, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_3, &_2, &name, PH_NOISY | PH_READONLY, "phalcon/Di/Di.zep", 552); + RETURN_CTOR(&_3); } +static PHP_METHOD(Phalcon_Di_Di, setDefault) +{ + zval *container, container_sub; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&container_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + ZEND_PARSE_PARAMETERS_END(); #endif + zephir_fetch_params_without_memory_grow(1, 0, &container); + zephir_update_static_property_ce(phalcon_di_di_ce, ZEND_STRL("_default"), container); +} -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Space) +static PHP_METHOD(Phalcon_Di_Di, setInternalEventsManager) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Space, phalcon, encryption_crypt_padding_space, phalcon_encryption_crypt_padding_space_method_entry, 0); + zval *eventsManager, eventsManager_sub; + zval *this_ptr = getThis(); - zend_class_implements(phalcon_encryption_crypt_padding_space_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); - return SUCCESS; + ZVAL_UNDEF(&eventsManager_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); + + + zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Space, pad) +static PHP_METHOD(Phalcon_Di_Di, setService) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *paddingSize_param = NULL, _0, _1; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, *rawDefinition, rawDefinition_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&rawDefinition_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_OBJECT_OF_CLASS(rawDefinition, phalcon_di_serviceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); + zephir_fetch_params(1, 2, 0, &name_param, &rawDefinition); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, " "); - ZVAL_LONG(&_1, paddingSize); - ZEPHIR_RETURN_CALL_FUNCTION("str_repeat", NULL, 1, &_0, &_1); - zephir_check_call_status(); + zephir_update_property_array(this_ptr, SL("services"), &name, rawDefinition); + RETVAL_ZVAL(rawDefinition, 1, 0); RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Space, unpad) +static PHP_METHOD(Phalcon_Di_Di, setShared) { - zend_bool _0, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS, counter = 0, paddingSize = 0; - zval *input_param = NULL, *blockSize_param = NULL, length, inputArray, _1, _2, _3; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, *definition, definition_sub, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&inputArray); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&definition_sub); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + zephir_fetch_params(1, 2, 0, &name_param, &definition); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZEPHIR_CALL_FUNCTION(&length, "mb_strlen", NULL, 229, &input); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&inputArray, "str_split", NULL, 84, &input); + ZVAL_BOOL(&_0, 1); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "set", NULL, 0, &name, definition, &_0); zephir_check_call_status(); - counter = (zephir_get_numberval(&length) - 1); - paddingSize = 0; - while (1) { - _0 = counter >= 0; - if (_0) { - zephir_array_fetch_long(&_1, &inputArray, counter, PH_NOISY | PH_READONLY, "phalcon/Encryption/Crypt/Padding/Space.zep", 48); - ZVAL_LONG(&_2, 32); - ZEPHIR_CALL_FUNCTION(&_3, "chr", &_4, 239, &_2); - zephir_check_call_status(); - _0 = ZEPHIR_IS_EQUAL(&_1, &_3); - } - _5 = _0; - if (_5) { - _5 = paddingSize <= blockSize; + RETURN_MM(); +} + +zend_object *zephir_init_properties_Phalcon_Di_Di(zend_class_entry *class_type) +{ + zval _0, _2, _1$$3, _3$$4; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + + + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("sharedInstances"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sharedInstances"), &_1$$3); } - if (!(_5)) { - break; + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("services"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("services"), &_3$$4); } - paddingSize++; - counter--; + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); } - RETURN_MM_LONG(paddingSize); } @@ -31981,102 +32043,276 @@ static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Space, unpad) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Crypt_Padding_Zero) +ZEPHIR_INIT_CLASS(Phalcon_Di_DiInterface) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Crypt\\Padding, Zero, phalcon, encryption_crypt_padding_zero, phalcon_encryption_crypt_padding_zero_method_entry, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Di, DiInterface, phalcon, di_diinterface, phalcon_di_diinterface_method_entry); - zend_class_implements(phalcon_encryption_crypt_padding_zero_ce, 1, phalcon_encryption_crypt_padding_padinterface_ce); + zend_class_implements(phalcon_di_diinterface_ce, 1, zend_ce_arrayaccess); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Zero, pad) +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, attempt); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, get); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, getDefault); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, getRaw); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, getService); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, getServices); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, getShared); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, has); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, remove); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, reset); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, set); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, setDefault); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, setService); +ZEPHIR_DOC_METHOD(Phalcon_Di_DiInterface, setShared); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Di_Exception) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *paddingSize_param = NULL, _0, _1; - zend_long paddingSize, ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Di, Exception, phalcon, di_exception, zend_ce_exception, NULL, 0); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(paddingSize) - ZEND_PARSE_PARAMETERS_END(); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &paddingSize_param); - paddingSize = zephir_get_intval(paddingSize_param); - ZVAL_LONG(&_0, 0); - ZEPHIR_CALL_FUNCTION(&_1, "chr", NULL, 239, &_0); - zephir_check_call_status(); - ZVAL_LONG(&_0, paddingSize); - ZEPHIR_RETURN_CALL_FUNCTION("str_repeat", NULL, 1, &_1, &_0); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Di_FactoryDefault) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Di, FactoryDefault, phalcon, di_factorydefault, phalcon_di_di_ce, phalcon_di_factorydefault_method_entry, 0); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Zero, unpad) +static PHP_METHOD(Phalcon_Di_FactoryDefault, __construct) { - zend_bool _0, _5; + zval _1, _5, _6, _7, _9; + zval filter, _2, _3, _4, _8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL; - zend_long blockSize, ZEPHIR_LAST_CALL_STATUS, counter = 0, paddingSize = 0; - zval *input_param = NULL, *blockSize_param = NULL, length, inputArray, _1, _2, _3; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&length); - ZVAL_UNDEF(&inputArray); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&filter); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(input) - Z_PARAM_LONG(blockSize) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_9); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &input_param, &blockSize_param); - zephir_get_strval(&input, input_param); - blockSize = zephir_get_intval(blockSize_param); + ZEPHIR_CALL_PARENT(NULL, phalcon_di_factorydefault_ce, getThis(), "__construct", &_0, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&filter); + object_init_ex(&filter, phalcon_filter_filterfactory_ce); + if (zephir_has_constructor(&filter)) { + ZEPHIR_CALL_METHOD(NULL, &filter, "__construct", NULL, 0); + zephir_check_call_status(); + } - ZEPHIR_CALL_FUNCTION(&length, "mb_strlen", NULL, 229, &input); + ZEPHIR_INIT_VAR(&_1); + zephir_create_array(&_1, 20, 0); + ZEPHIR_INIT_VAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Annotations\\Adapter\\Memory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&inputArray, "str_split", NULL, 84, &input); + zephir_array_update_string(&_1, SL("annotations"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_VAR(&_5); + zephir_create_array(&_5, 2, 0); + add_assoc_stringl_ex(&_5, SL("className"), SL("Phalcon\\Assets\\Manager")); + ZEPHIR_INIT_VAR(&_6); + zephir_create_array(&_6, 1, 0); + ZEPHIR_INIT_VAR(&_7); + zephir_create_array(&_7, 2, 0); + add_assoc_stringl_ex(&_7, SL("type"), SL("service")); + add_assoc_stringl_ex(&_7, SL("name"), SL("tag")); + zephir_array_fast_append(&_6, &_7); + zephir_array_update_string(&_5, SL("arguments"), &_6, PH_COPY | PH_SEPARATE); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_5, &_4); zephir_check_call_status(); - counter = (zephir_get_numberval(&length) - 1); - paddingSize = 0; - while (1) { - _0 = counter >= 0; - if (_0) { - zephir_array_fetch_long(&_1, &inputArray, counter, PH_NOISY | PH_READONLY, "phalcon/Encryption/Crypt/Padding/Zero.zep", 48); - ZVAL_LONG(&_2, 0); - ZEPHIR_CALL_FUNCTION(&_3, "chr", &_4, 239, &_2); - zephir_check_call_status(); - _0 = ZEPHIR_IS_EQUAL(&_1, &_3); - } - _5 = _0; - if (_5) { - _5 = paddingSize <= blockSize; - } - if (!(_5)) { - break; - } - paddingSize++; - counter--; - } - RETURN_MM_LONG(paddingSize); + zephir_array_update_string(&_1, SL("assets"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Encryption\\Crypt"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("crypt"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Http\\Response\\Cookies"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("cookies"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Dispatcher"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("dispatcher"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Html\\Escaper"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("escaper"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Events\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("eventsManager"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Flash\\Direct"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("flash"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Flash\\Session"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("flashSession"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_CALL_METHOD(&_8, &filter, "newinstance", NULL, 90); + zephir_check_call_status(); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_8, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("filter"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Support\\HelperFactory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("helper"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("modelsManager"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\MetaData\\Memory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("modelsMetadata"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Http\\Request"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("request"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Http\\Response"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("response"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Router"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("router"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Encryption\\Security"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("security"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_6); + zephir_create_array(&_6, 2, 0); + add_assoc_stringl_ex(&_6, SL("className"), SL("Phalcon\\Html\\TagFactory")); + ZEPHIR_INIT_NVAR(&_7); + zephir_create_array(&_7, 1, 0); + ZEPHIR_INIT_VAR(&_9); + zephir_create_array(&_9, 2, 0); + add_assoc_stringl_ex(&_9, SL("type"), SL("service")); + add_assoc_stringl_ex(&_9, SL("name"), SL("escaper")); + zephir_array_fast_append(&_7, &_9); + zephir_array_update_string(&_6, SL("arguments"), &_7, PH_COPY | PH_SEPARATE); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_6, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("tag"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Transaction\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("transactionManager"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Url"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("url"), &_2, PH_COPY | PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("services"), &_1); + ZEPHIR_MM_RESTORE(); } @@ -32089,13 +32325,14 @@ static PHP_METHOD(Phalcon_Encryption_Crypt_Padding_Zero, unpad) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_Exception) +ZEPHIR_INIT_CLASS(Phalcon_Di_InitializationAwareInterface) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security, Exception, phalcon, encryption_security_exception, zend_ce_exception, NULL, 0); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Di, InitializationAwareInterface, phalcon, di_initializationawareinterface, phalcon_di_initializationawareinterface_method_entry); return SUCCESS; } +ZEPHIR_DOC_METHOD(Phalcon_Di_InitializationAwareInterface, initialize); @@ -32106,1882 +32343,1951 @@ ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_Exception) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_Random) +ZEPHIR_INIT_CLASS(Phalcon_Di_Injectable) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security, Random, phalcon, encryption_security_random, phalcon_encryption_security_random_method_entry, 0); + ZEPHIR_REGISTER_CLASS(Phalcon\\Di, Injectable, phalcon, di_injectable, phalcon_di_injectable_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + zend_declare_property_null(phalcon_di_injectable_ce, SL("container"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_di_injectable_ce, 1, phalcon_di_injectionawareinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_Random, base58) +static PHP_METHOD(Phalcon_Di_Injectable, __get) { + zval _2$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0, _1, _2; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *propertyName_param = NULL, container, service, _0, _1$$4, _3$$4, _4$$4; + zval propertyName, _5; zval *this_ptr = getThis(); + ZVAL_UNDEF(&propertyName); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&container); + ZVAL_UNDEF(&service); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_2$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_LONG_OR_NULL(len, is_null_true) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(propertyName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &len_param); - if (!len_param) { - len = 0; + zephir_fetch_params(1, 1, 0, &propertyName_param); + if (UNEXPECTED(Z_TYPE_P(propertyName_param) != IS_STRING && Z_TYPE_P(propertyName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'propertyName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(propertyName_param) == IS_STRING)) { + zephir_get_strval(&propertyName, propertyName_param); } else { - len = zephir_get_intval(len_param); + ZEPHIR_INIT_VAR(&propertyName); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"); - ZVAL_LONG(&_1, 58); - ZVAL_LONG(&_2, len); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "base", NULL, 0, &_0, &_1, &_2); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getdi", NULL, 0); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_CPY_WRT(&container, &_0); + if (ZEPHIR_IS_STRING(&propertyName, "di")) { + zephir_update_property_zval(this_ptr, ZEND_STRL("di"), &container); + RETURN_CCTOR(&container); + } + if (ZEPHIR_IS_STRING(&propertyName, "persistent")) { + ZEPHIR_INIT_VAR(&_2$$4); + zephir_create_array(&_2$$4, 2, 0); + ZEPHIR_INIT_VAR(&_3$$4); + zephir_get_class(&_3$$4, this_ptr, 0); + zephir_array_fast_append(&_2$$4, &_3$$4); + zephir_array_fast_append(&_2$$4, &container); + ZEPHIR_INIT_NVAR(&_3$$4); + ZVAL_STRING(&_3$$4, "sessionBag"); + ZEPHIR_CALL_METHOD(&_1$$4, &container, "get", NULL, 0, &_3$$4, &_2$$4); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("persistent"), &_1$$4); + ZEPHIR_OBS_VAR(&_4$$4); + zephir_read_property(&_4$$4, this_ptr, ZEND_STRL("persistent"), PH_NOISY_CC); + RETURN_CCTOR(&_4$$4); + } + ZEPHIR_CALL_METHOD(&_0, &container, "has", NULL, 0, &propertyName); + zephir_check_call_status(); + if (zephir_is_true(&_0)) { + ZEPHIR_CALL_METHOD(&service, &container, "getshared", NULL, 0, &propertyName); + zephir_check_call_status(); + zephir_update_property_zval_zval(this_ptr, &propertyName, &service); + RETURN_CCTOR(&service); + } + ZEPHIR_INIT_VAR(&_5); + ZEPHIR_CONCAT_SV(&_5, "Access to undefined property ", &propertyName); + ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", NULL, 7, &_5); + zephir_check_call_status(); + RETURN_MM_NULL(); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, base62) +static PHP_METHOD(Phalcon_Di_Injectable, __isset) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0, _1, _2; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_LONG_OR_NULL(len, is_null_true) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &len_param); - if (!len_param) { - len = 0; + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - len = zephir_get_intval(len_param); + ZEPHIR_INIT_VAR(&name); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); - ZVAL_LONG(&_1, 62); - ZVAL_LONG(&_2, len); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "base", NULL, 0, &_0, &_1, &_2); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getdi", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_0, "has", NULL, 0, &name); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, base64) +static PHP_METHOD(Phalcon_Di_Injectable, getDI) { + zval container, _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0, _1; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_1 = NULL; zval *this_ptr = getThis(); + ZVAL_UNDEF(&container); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_LONG_OR_NULL(len, is_null_true) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &len_param); - if (!len_param) { - len = 0; - } else { - len = zephir_get_intval(len_param); - } - - ZVAL_LONG(&_1, len); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "bytes", NULL, 0, &_1); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_FUNCTION("base64_encode", NULL, 226, &_0); - zephir_check_call_status(); - RETURN_MM(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&container, &_0); + if (Z_TYPE_P(&container) != IS_OBJECT) { + ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_1, 0); + zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "A dependency injection container is required to access internal services", "phalcon/Di/Injectable.zep", 125); + return; + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setdi", NULL, 0, &container); + zephir_check_call_status(); + } + RETURN_CCTOR(&container); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, base64Safe) +static PHP_METHOD(Phalcon_Di_Injectable, setDI) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool padding; - zval *len_param = NULL, *padding_param = NULL, s, _0, _1, _2, _3, _4, _5, _6$$3; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zval *container, container_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&s); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&container_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_LONG_OR_NULL(len, is_null_true) - Z_PARAM_BOOL(padding) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &len_param, &padding_param); - if (!len_param) { - len = 0; - } else { - len = zephir_get_intval(len_param); - } - if (!padding_param) { - padding = 0; - } else { - padding = zephir_get_boolval(padding_param); - } + zephir_fetch_params_without_memory_grow(1, 0, &container); - ZVAL_LONG(&_1, len); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "base64", NULL, 0, &_1); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_2, "base64_encode", NULL, 226, &_0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "+/"); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "-_"); - ZEPHIR_CALL_FUNCTION(&s, "strtr", NULL, 5, &_2, &_3, &_4); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "#[^a-z0-9_=-]+#i"); - ZEPHIR_INIT_NVAR(&_4); - ZVAL_STRING(&_4, ""); - ZEPHIR_CALL_FUNCTION(&_5, "preg_replace", NULL, 37, &_3, &_4, &s); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&s, &_5); - if (!(padding)) { - ZEPHIR_INIT_VAR(&_6$$3); - ZVAL_STRING(&_6$$3, "="); - zephir_fast_trim(return_value, &s, &_6$$3, ZEPHIR_TRIM_RIGHT); - RETURN_MM(); - } - RETURN_CCTOR(&s); + zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, bytes) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Di_InjectionAwareInterface) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0; - zend_long len, ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Di, InjectionAwareInterface, phalcon, di_injectionawareinterface, phalcon_di_injectionawareinterface_method_entry); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(len) - ZEND_PARSE_PARAMETERS_END(); + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_Di_InjectionAwareInterface, setDI); +ZEPHIR_DOC_METHOD(Phalcon_Di_InjectionAwareInterface, getDI); + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &len_param); - if (!len_param) { - len = 16; - } else { - len = zephir_get_intval(len_param); - } - if (len <= 0) { - len = 16; - } - ZVAL_LONG(&_0, len); - ZEPHIR_RETURN_CALL_FUNCTION("random_bytes", NULL, 264, &_0); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Di_Service) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Di, Service, phalcon, di_service, phalcon_di_service_method_entry, 0); + + zend_declare_property_null(phalcon_di_service_ce, SL("definition"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_di_service_ce, SL("resolved"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_di_service_ce, SL("shared"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_di_service_ce, SL("sharedInstance"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_di_service_ce, 1, phalcon_di_serviceinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_Random, hex) +static PHP_METHOD(Phalcon_Di_Service, __construct) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0, _1, _2, _3; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zend_bool shared; + zval *definition, definition_sub, *shared_param = NULL, __$true, __$false; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&definition_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(definition) Z_PARAM_OPTIONAL - Z_PARAM_LONG_OR_NULL(len, is_null_true) + Z_PARAM_BOOL(shared) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &len_param); - if (!len_param) { - len = 0; + zephir_fetch_params_without_memory_grow(1, 1, &definition, &shared_param); + if (!shared_param) { + shared = 0; } else { - len = zephir_get_intval(len_param); + shared = zephir_get_boolval(shared_param); } - ZVAL_LONG(&_1, len); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "bytes", NULL, 0, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "H*"); - ZEPHIR_CALL_FUNCTION(&_3, "unpack", NULL, 265, &_2, &_0); - zephir_check_call_status(); - ZEPHIR_MAKE_REF(&_3); - ZEPHIR_RETURN_CALL_FUNCTION("array_shift", NULL, 21, &_3); - ZEPHIR_UNREF(&_3); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("definition"), definition); + if (shared) { + zephir_update_property_zval(this_ptr, ZEND_STRL("shared"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("shared"), &__$false); + } } -static PHP_METHOD(Phalcon_Encryption_Security_Random, number) +static PHP_METHOD(Phalcon_Di_Service, getDefinition) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "definition"); +} + +static PHP_METHOD(Phalcon_Di_Service, getParameter) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *len_param = NULL, _0, _1; - zend_long len, ZEPHIR_LAST_CALL_STATUS; + zval *position_param = NULL, definition, arguments, parameter, _0; + zend_long position; zval *this_ptr = getThis(); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(¶meter); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(len) + Z_PARAM_LONG(position) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &len_param); - len = zephir_get_intval(len_param); + zephir_fetch_params(1, 1, 0, &position_param); + position = zephir_get_intval(position_param); - if (UNEXPECTED(len <= 0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_exception_ce, "Input number must be a positive integer", "phalcon/Encryption/Security/Random.zep", 272); + zephir_read_property(&_0, this_ptr, ZEND_STRL("definition"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&definition, &_0); + if (UNEXPECTED(Z_TYPE_P(&definition) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "Definition must be an array to obtain its parameters", "phalcon/Di/Service.zep", 82); return; } - ZVAL_LONG(&_0, 0); - ZVAL_LONG(&_1, len); - ZEPHIR_RETURN_CALL_FUNCTION("random_int", NULL, 266, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + if (zephir_array_isset_string_fetch(&arguments, &definition, SL("arguments"), 1)) { + if (zephir_array_isset_long_fetch(¶meter, &arguments, position, 1)) { + RETURN_CTOR(¶meter); + } + } + RETURN_MM_NULL(); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, uuid) +static PHP_METHOD(Phalcon_Di_Service, isResolved) { - zval ary, _0, _1, _2, _3, _4, _5, _6, _7; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&ary); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZEPHIR_MM_GROW(); + RETURN_MEMBER(getThis(), "resolved"); +} - ZVAL_LONG(&_1, 16); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "bytes", NULL, 0, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "N1a/n1b/n1c/n1d/n1e/N1f"); - ZEPHIR_CALL_FUNCTION(&_3, "unpack", NULL, 265, &_2, &_0); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&ary, "array_values", NULL, 14, &_3); - zephir_check_call_status(); - zephir_array_fetch_long(&_4, &ary, 2, PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/Random.zep", 311); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_LONG(&_2, ((((int) (zephir_get_numberval(&_4)) & 0x0fff)) | 0x4000)); - zephir_array_update_long(&ary, 2, &_2, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - zephir_array_fetch_long(&_5, &ary, 3, PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/Random.zep", 312); - ZEPHIR_INIT_VAR(&_6); - ZVAL_LONG(&_6, ((((int) (zephir_get_numberval(&_5)) & 0x3fff)) | 0x8000)); - zephir_array_update_long(&ary, 3, &_6, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - ZEPHIR_INIT_VAR(&_7); - ZVAL_STRING(&_7, "%08x-%04x-%04x-%04x-%04x%08x"); - ZEPHIR_MAKE_REF(&ary); - ZEPHIR_CALL_FUNCTION(NULL, "array_unshift", NULL, 267, &ary, &_7); - ZEPHIR_UNREF(&ary); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_7); - ZVAL_STRING(&_7, "sprintf"); - ZEPHIR_CALL_USER_FUNC_ARRAY(return_value, &_7, &ary); - zephir_check_call_status(); - RETURN_MM(); +static PHP_METHOD(Phalcon_Di_Service, isShared) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "shared"); } -static PHP_METHOD(Phalcon_Encryption_Security_Random, base) +static PHP_METHOD(Phalcon_Di_Service, resolve) { - unsigned char _7$$3, _10$$5; - double _4$$3, _8$$5; + zend_class_entry *_4$$14; + zend_bool found = 0, _2$$7; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL; - zend_long base, ZEPHIR_LAST_CALL_STATUS; - zval *alphabet_param = NULL, *base_param = NULL, *n = NULL, n_sub, __$null, bytes, idx, _0, _1, *_2, _3, _5$$4, _9$$6; - zval alphabet, byteString; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *parameters = NULL, parameters_sub, *container = NULL, container_sub, __$true, __$false, __$null, shared, definition, sharedInstance, instance, builder, _0, _1$$3, _3$$14, _5$$21; zval *this_ptr = getThis(); - ZVAL_UNDEF(&alphabet); - ZVAL_UNDEF(&byteString); - ZVAL_UNDEF(&n_sub); + ZVAL_UNDEF(¶meters_sub); + ZVAL_UNDEF(&container_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&bytes); - ZVAL_UNDEF(&idx); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_9$$6); + ZVAL_UNDEF(&shared); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&sharedInstance); + ZVAL_UNDEF(&instance); + ZVAL_UNDEF(&builder); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$14); + ZVAL_UNDEF(&_5$$21); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(alphabet) - Z_PARAM_LONG(base) + ZEND_PARSE_PARAMETERS_START(0, 2) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(n) + Z_PARAM_ZVAL_OR_NULL(parameters) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(container, phalcon_di_diinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &alphabet_param, &base_param, &n); - zephir_get_strval(&alphabet, alphabet_param); - base = zephir_get_intval(base_param); - if (!n) { - n = &n_sub; - n = &__$null; + zephir_fetch_params(1, 0, 2, ¶meters, &container); + if (!parameters) { + parameters = ¶meters_sub; + parameters = &__$null; + } + if (!container) { + container = &container_sub; + container = &__$null; } - ZEPHIR_INIT_VAR(&byteString); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "bytes", NULL, 0, n); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "C*"); - ZEPHIR_CALL_FUNCTION(&bytes, "unpack", NULL, 265, &_1, &_0); - zephir_check_call_status(); - zephir_is_iterable(&bytes, 0, "phalcon/Encryption/Security/Random.zep", 351); - if (Z_TYPE_P(&bytes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&bytes), _2) - { - ZEPHIR_INIT_NVAR(&idx); - ZVAL_COPY(&idx, _2); - _4$$3 = zephir_safe_mod_zval_long(&idx, 64); - ZEPHIR_INIT_NVAR(&idx); - ZVAL_DOUBLE(&idx, _4$$3); - if (ZEPHIR_GE_LONG(&idx, base)) { - ZVAL_LONG(&_5$$4, (base - 1)); - ZEPHIR_CALL_METHOD(&idx, this_ptr, "number", &_6, 0, &_5$$4); + zephir_read_property(&_0, this_ptr, ZEND_STRL("shared"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&shared, &_0); + if (zephir_is_true(&shared)) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("sharedInstance"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&sharedInstance, &_1$$3); + if (Z_TYPE_P(&sharedInstance) != IS_NULL) { + RETURN_CCTOR(&sharedInstance); + } + } + found = 1; + ZEPHIR_INIT_VAR(&instance); + ZVAL_NULL(&instance); + zephir_read_property(&_0, this_ptr, ZEND_STRL("definition"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&definition, &_0); + if (Z_TYPE_P(&definition) == IS_STRING) { + if (Z_TYPE_P(container) != IS_NULL) { + ZEPHIR_CALL_METHOD(&instance, container, "get", NULL, 0, &definition, parameters); + zephir_check_call_status(); + } else if (zephir_class_exists(&definition, 1)) { + _2$$7 = Z_TYPE_P(parameters) == IS_ARRAY; + if (_2$$7) { + _2$$7 = ((zephir_fast_count_int(parameters)) ? 1 : 0); + } + if (_2$$7) { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&instance, &definition, parameters); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&instance, &definition); zephir_check_call_status(); } - _7$$3 = ZEPHIR_STRING_OFFSET(&alphabet, zephir_get_intval(&idx)); - zephir_concat_self_char(&byteString, _7$$3); - } ZEND_HASH_FOREACH_END(); + } else { + found = 0; + } } else { - ZEPHIR_CALL_METHOD(NULL, &bytes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &bytes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; + if (Z_TYPE_P(&definition) == IS_OBJECT) { + if (zephir_is_instance_of(&definition, SL("Closure"))) { + if (Z_TYPE_P(container) == IS_OBJECT) { + _4$$14 = zephir_fetch_class_str_ex(SL("Closure"), ZEND_FETCH_CLASS_AUTO); + ZEPHIR_CALL_CE_STATIC(&_3$$14, _4$$14, "bind", NULL, 0, &definition, container); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&definition, &_3$$14); + } + if (Z_TYPE_P(parameters) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_CALL_USER_FUNC_ARRAY(&instance, &definition, parameters); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_CALL_USER_FUNC(&instance, &definition); + zephir_check_call_status(); + } + } else { + ZEPHIR_CPY_WRT(&instance, &definition); } - ZEPHIR_CALL_METHOD(&idx, &bytes, "current", NULL, 0); - zephir_check_call_status(); - _8$$5 = zephir_safe_mod_zval_long(&idx, 64); - ZEPHIR_INIT_NVAR(&idx); - ZVAL_DOUBLE(&idx, _8$$5); - if (ZEPHIR_GE_LONG(&idx, base)) { - ZVAL_LONG(&_9$$6, (base - 1)); - ZEPHIR_CALL_METHOD(&idx, this_ptr, "number", &_6, 0, &_9$$6); + } else { + if (Z_TYPE_P(&definition) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&builder); + object_init_ex(&builder, phalcon_di_service_builder_ce); + if (zephir_has_constructor(&builder)) { + ZEPHIR_CALL_METHOD(NULL, &builder, "__construct", NULL, 0); zephir_check_call_status(); } - _10$$5 = ZEPHIR_STRING_OFFSET(&alphabet, zephir_get_intval(&idx)); - zephir_concat_self_char(&byteString, _10$$5); - ZEPHIR_CALL_METHOD(NULL, &bytes, "next", NULL, 0); - zephir_check_call_status(); + + ZEPHIR_CALL_METHOD(&instance, &builder, "build", NULL, 218, container, &definition, parameters); + zephir_check_call_status(); + } else { + found = 0; + } } } - ZEPHIR_INIT_NVAR(&idx); - RETURN_CTOR(&byteString); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Builder) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT, Builder, phalcon, encryption_security_jwt_builder, phalcon_encryption_security_jwt_builder_method_entry, 0); - - zend_declare_property_null(phalcon_encryption_security_jwt_builder_ce, SL("claims"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_builder_ce, SL("jose"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_builder_ce, SL("passphrase"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_builder_ce, SL("signer"), ZEND_ACC_PRIVATE); - return SUCCESS; + if (UNEXPECTED(found == 0)) { + ZEPHIR_INIT_VAR(&_5$$21); + object_init_ex(&_5$$21, phalcon_di_exception_serviceresolutionexception_ce); + ZEPHIR_CALL_METHOD(NULL, &_5$$21, "__construct", NULL, 29); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5$$21, "phalcon/Di/Service.zep", 205); + ZEPHIR_MM_RESTORE(); + return; + } + if (zephir_is_true(&shared)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("sharedInstance"), &instance); + } + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("resolved"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("resolved"), &__$false); + } + RETURN_CCTOR(&instance); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, __construct) +static PHP_METHOD(Phalcon_Di_Service, setDefinition) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *signer, signer_sub, _0, _1, _2, _3; + zval *definition, definition_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&signer_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&definition_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(signer, phalcon_encryption_security_jwt_signer_signerinterface_ce) + Z_PARAM_ZVAL(definition) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &signer); - - - ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("signer"), signer); - zephir_read_property(&_0, this_ptr, ZEND_STRL("jose"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_1, this_ptr, ZEND_STRL("signer"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_2, &_1, "getalgheader", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "alg"); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &_3, &_2); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, init) -{ - zval _2; - zval _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - + zephir_fetch_params_without_memory_grow(1, 0, &definition); - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_INIT_NVAR(&_0); - ZVAL_STRING(&_0, ""); - zephir_update_property_zval(this_ptr, ZEND_STRL("passphrase"), &_0); - ZEPHIR_INIT_NVAR(&_0); - object_init_ex(&_0, phalcon_support_collection_ce); - ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 22); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("claims"), &_0); - ZEPHIR_INIT_VAR(&_1); - object_init_ex(&_1, phalcon_support_collection_ce); - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - add_assoc_stringl_ex(&_2, SL("typ"), SL("JWT")); - add_assoc_stringl_ex(&_2, SL("alg"), SL("none")); - ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 22, &_2); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("jose"), &_1); - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("definition"), definition); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, addClaim) +static PHP_METHOD(Phalcon_Di_Service, setParameter) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *value, value_sub, _0; - zval name; + zval parameter; + zval *position_param = NULL, *parameter_param = NULL, definition, arguments, _0, _1$$5; + zend_long position; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&arguments); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(¶meter); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_ZVAL(value) + Z_PARAM_LONG(position) + Z_PARAM_ARRAY(parameter) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &value); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 2, 0, &position_param, ¶meter_param); + position = zephir_get_intval(position_param); + ZEPHIR_OBS_COPY_OR_DUP(¶meter, parameter_param); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("definition"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&definition, &_0); + if (UNEXPECTED(Z_TYPE_P(&definition) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "Definition must be an array to update its parameters", "phalcon/Di/Service.zep", 240); + return; } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); + ZEPHIR_OBS_VAR(&arguments); + if (zephir_array_isset_string_fetch(&arguments, &definition, SL("arguments"), 0)) { + zephir_array_update_long(&arguments, position, ¶meter, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); } else { - ZEPHIR_INIT_VAR(&name); + ZEPHIR_INIT_VAR(&_1$$5); + zephir_create_array(&_1$$5, 1, 0); + zephir_array_update_long(&_1$$5, position, ¶meter, PH_COPY ZEPHIR_DEBUG_PARAMS_DUMMY); + ZEPHIR_CPY_WRT(&arguments, &_1$$5); } - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &name, value); - zephir_check_call_status(); + zephir_array_update_string(&definition, SL("arguments"), &arguments, PH_COPY | PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("definition"), &definition); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getAudience) +static PHP_METHOD(Phalcon_Di_Service, setShared) { - zval _0, _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *shared_param = NULL, __$true, __$false; + zend_bool shared; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_BOOL(shared) + ZEND_PARSE_PARAMETERS_END(); +#endif - ZEPHIR_MM_GROW(); + zephir_fetch_params_without_memory_grow(1, 0, &shared_param); + shared = zephir_get_boolval(shared_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "aud"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1); - zephir_check_call_status(); - RETURN_MM(); + + if (shared) { + zephir_update_property_zval(this_ptr, ZEND_STRL("shared"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("shared"), &__$false); + } } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getClaims) +static PHP_METHOD(Phalcon_Di_Service, setSharedInstance) { - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *sharedInstance, sharedInstance_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sharedInstance_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(sharedInstance) + ZEND_PARSE_PARAMETERS_END(); +#endif - ZEPHIR_MM_GROW(); + zephir_fetch_params_without_memory_grow(1, 0, &sharedInstance); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "toarray", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); + + zephir_update_property_zval(this_ptr, ZEND_STRL("sharedInstance"), sharedInstance); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getContentType) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +#ifdef HAVE_CONFIG_H +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("jose"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "cty"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "string"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getExpirationTime) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +ZEPHIR_INIT_CLASS(Phalcon_Di_ServiceInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Di, ServiceInterface, phalcon, di_serviceinterface, phalcon_di_serviceinterface_method_entry); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "exp"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "int"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getHeaders) -{ - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, getDefinition); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, getParameter); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, isResolved); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, isShared); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, resolve); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, setDefinition); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, setParameter); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceInterface, setShared); - ZVAL_UNDEF(&_0); - ZEPHIR_MM_GROW(); +#ifdef HAVE_CONFIG_H +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("jose"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "toarray", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getId) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +ZEPHIR_INIT_CLASS(Phalcon_Di_ServiceProviderInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Di, ServiceProviderInterface, phalcon, di_serviceproviderinterface, phalcon_di_serviceproviderinterface_method_entry); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "jti"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "string"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getIssuedAt) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); +ZEPHIR_DOC_METHOD(Phalcon_Di_ServiceProviderInterface, register); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +#ifdef HAVE_CONFIG_H +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "iat"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "int"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getIssuer) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +ZEPHIR_INIT_CLASS(Phalcon_Di_Exception_ServiceResolutionException) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Di\\Exception, ServiceResolutionException, phalcon, di_exception_serviceresolutionexception, phalcon_di_exception_ce, NULL, 0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "iss"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "string"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getNotBefore) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +#ifdef HAVE_CONFIG_H +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "nbf"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "int"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getSubject) -{ - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); +ZEPHIR_INIT_CLASS(Phalcon_Di_FactoryDefault_Cli) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Di\\FactoryDefault, Cli, phalcon, di_factorydefault_cli, phalcon_di_factorydefault_ce, phalcon_di_factorydefault_cli_method_entry, 0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "sub"); - ZVAL_NULL(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "string"); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &_1, &_2, &_3); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getToken) +static PHP_METHOD(Phalcon_Di_FactoryDefault_Cli, __construct) { - zval claims, encodedClaims, encodedHeaders, encodedSignature, headers, signature, signatureHash, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9; + zval _1; + zval filter, _2, _3, _4, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&claims); - ZVAL_UNDEF(&encodedClaims); - ZVAL_UNDEF(&encodedHeaders); - ZVAL_UNDEF(&encodedSignature); - ZVAL_UNDEF(&headers); - ZVAL_UNDEF(&signature); - ZVAL_UNDEF(&signatureHash); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&filter); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("passphrase"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_EMPTY(&_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Invalid passphrase (empty)", "phalcon/Encryption/Security/JWT/Builder.zep", 197); - return; - } - ZEPHIR_CALL_METHOD(&_2, this_ptr, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "encode", NULL, 251, &_2); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&encodedClaims, this_ptr, "encodeurl", NULL, 252, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&claims); - object_init_ex(&claims, phalcon_encryption_security_jwt_token_item_ce); - ZEPHIR_CALL_METHOD(&_3, this_ptr, "getclaims", NULL, 0); + ZEPHIR_CALL_PARENT(NULL, phalcon_di_factorydefault_cli_ce, getThis(), "__construct", &_0, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &claims, "__construct", NULL, 253, &_3, &encodedClaims); + ZEPHIR_INIT_VAR(&filter); + object_init_ex(&filter, phalcon_filter_filterfactory_ce); + if (zephir_has_constructor(&filter)) { + ZEPHIR_CALL_METHOD(NULL, &filter, "__construct", NULL, 0); + zephir_check_call_status(); + } + + ZEPHIR_INIT_VAR(&_1); + zephir_create_array(&_1, 11, 0); + ZEPHIR_INIT_VAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Annotations\\Adapter\\Memory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "getheaders", NULL, 0); + zephir_array_update_string(&_1, SL("annotations"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Cli\\Dispatcher"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4, this_ptr, "encode", NULL, 251, &_5); + zephir_array_update_string(&_1, SL("dispatcher"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Html\\Escaper"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&encodedHeaders, this_ptr, "encodeurl", NULL, 252, &_4); + zephir_array_update_string(&_1, SL("escaper"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Events\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&headers); - object_init_ex(&headers, phalcon_encryption_security_jwt_token_item_ce); - ZEPHIR_CALL_METHOD(&_6, this_ptr, "getheaders", NULL, 0); + zephir_array_update_string(&_1, SL("eventsManager"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_CALL_METHOD(&_5, &filter, "newinstance", NULL, 90); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &headers, "__construct", NULL, 253, &_6, &encodedHeaders); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_5, &_4); zephir_check_call_status(); - zephir_read_property(&_7, this_ptr, ZEND_STRL("signer"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_8); - ZEPHIR_CONCAT_VSV(&_8, &encodedHeaders, ".", &encodedClaims); - zephir_read_property(&_9, this_ptr, ZEND_STRL("passphrase"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&signatureHash, &_7, "sign", NULL, 0, &_8, &_9); + zephir_array_update_string(&_1, SL("filter"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Support\\HelperFactory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&encodedSignature, this_ptr, "encodeurl", NULL, 252, &signatureHash); + zephir_array_update_string(&_1, SL("helper"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&signature); - object_init_ex(&signature, phalcon_encryption_security_jwt_token_signature_ce); - ZEPHIR_CALL_METHOD(NULL, &signature, "__construct", NULL, 254, &signatureHash, &encodedSignature); + zephir_array_update_string(&_1, SL("modelsManager"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\MetaData\\Memory"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - object_init_ex(return_value, phalcon_encryption_security_jwt_token_token_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 255, &headers, &claims, &signature); + zephir_array_update_string(&_1, SL("modelsMetadata"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Cli\\Router"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, getPassphrase) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "passphrase"); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setAudience) -{ - zend_bool _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *audience, audience_sub, aud, _1; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&audience_sub); - ZVAL_UNDEF(&aud); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(audience) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &audience); - - - _0 = Z_TYPE_P(audience) != IS_STRING; - if (_0) { - _0 = Z_TYPE_P(audience) != IS_ARRAY; - } - if (_0) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Invalid Audience", "phalcon/Encryption/Security/JWT/Builder.zep", 247); - return; - } - if (Z_TYPE_P(audience) == IS_STRING) { - ZEPHIR_INIT_VAR(&aud); - zephir_create_array(&aud, 1, 0); - zephir_array_fast_append(&aud, audience); - } else { - ZEPHIR_CPY_WRT(&aud, audience); - } - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "aud"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_1, &aud); + zephir_array_update_string(&_1, SL("router"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Encryption\\Security"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setContentType) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *contentType_param = NULL, _0, _1; - zval contentType; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&contentType); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(contentType) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &contentType_param); - zephir_get_strval(&contentType, contentType_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("jose"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "cty"); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &_1, &contentType); + zephir_array_update_string(&_1, SL("security"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_2); + object_init_ex(&_2, phalcon_di_service_ce); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Transaction\\Manager"); + ZVAL_BOOL(&_4, 1); + ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 74, &_3, &_4); zephir_check_call_status(); - RETURN_THIS(); + zephir_array_update_string(&_1, SL("transactionManager"), &_2, PH_COPY | PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("services"), &_1); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setExpirationTime) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1, _2; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) - ZEND_PARSE_PARAMETERS_END(); -#endif - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - timestamp = zephir_get_intval(timestamp_param); - - - ZEPHIR_INIT_VAR(&_0); - zephir_time(&_0); - if (ZEPHIR_GT_LONG(&_0, timestamp)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Invalid Expiration Time", "phalcon/Encryption/Security/JWT/Builder.zep", 292); - return; - } - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "exp"); - ZVAL_LONG(&_2, timestamp); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_1, &_2); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setId) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *id_param = NULL, _0; - zval id; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&id); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(id) - ZEND_PARSE_PARAMETERS_END(); +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &id_param); - if (UNEXPECTED(Z_TYPE_P(id_param) != IS_STRING && Z_TYPE_P(id_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'id' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(id_param) == IS_STRING)) { - zephir_get_strval(&id, id_param); - } else { - ZEPHIR_INIT_VAR(&id); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "jti"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_0, &id); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setIssuedAt) +ZEPHIR_INIT_CLASS(Phalcon_Di_Service_Builder) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - if (UNEXPECTED(Z_TYPE_P(timestamp_param) != IS_LONG)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'timestamp' must be of the type int")); - RETURN_MM_NULL(); - } - timestamp = Z_LVAL_P(timestamp_param); - + ZEPHIR_REGISTER_CLASS(Phalcon\\Di\\Service, Builder, phalcon, di_service_builder, phalcon_di_service_builder_method_entry, 0); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "iat"); - ZVAL_LONG(&_1, timestamp); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setIssuer) +static PHP_METHOD(Phalcon_Di_Service_Builder, build) { + zval _11$$17, _12$$17, _22$$23, _23$$23; + zend_string *_4$$10, *_30$$25; + zend_ulong _3$$10, _29$$25; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_7 = NULL, *_38 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *issuer_param = NULL, _0; - zval issuer; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&issuer); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(issuer) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &issuer_param); - if (UNEXPECTED(Z_TYPE_P(issuer_param) != IS_STRING && Z_TYPE_P(issuer_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'issuer' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(issuer_param) == IS_STRING)) { - zephir_get_strval(&issuer, issuer_param); - } else { - ZEPHIR_INIT_VAR(&issuer); - } - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "iss"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_0, &issuer); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setNotBefore) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1, _2; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *container, container_sub, *definition_param = NULL, *parameters = NULL, parameters_sub, __$null, className, arguments, paramCalls, methodPosition, method, methodName, methodCall, instance, propertyPosition, property, propertyName, propertyValue, _0$$8, *_1$$10, _2$$10, _5$$14, _6$$14, _8$$15, _9$$15, _10$$17, _13$$18, _14$$18, _15$$13, _16$$20, _17$$20, _18$$21, _19$$21, _20$$19, _26$$19, _21$$23, _24$$24, _25$$24, *_27$$25, _28$$25, _31$$29, _32$$29, _33$$30, _34$$30, _35$$31, _36$$31, _37$$28, _39$$33, _40$$33, _41$$34, _42$$34, _43$$35, _44$$35, _45$$32; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(¶meters_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&className); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(¶mCalls); + ZVAL_UNDEF(&methodPosition); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&methodName); + ZVAL_UNDEF(&methodCall); + ZVAL_UNDEF(&instance); + ZVAL_UNDEF(&propertyPosition); + ZVAL_UNDEF(&property); + ZVAL_UNDEF(&propertyName); + ZVAL_UNDEF(&propertyValue); + ZVAL_UNDEF(&_0$$8); + ZVAL_UNDEF(&_2$$10); + ZVAL_UNDEF(&_5$$14); + ZVAL_UNDEF(&_6$$14); + ZVAL_UNDEF(&_8$$15); + ZVAL_UNDEF(&_9$$15); + ZVAL_UNDEF(&_10$$17); + ZVAL_UNDEF(&_13$$18); + ZVAL_UNDEF(&_14$$18); + ZVAL_UNDEF(&_15$$13); + ZVAL_UNDEF(&_16$$20); + ZVAL_UNDEF(&_17$$20); + ZVAL_UNDEF(&_18$$21); + ZVAL_UNDEF(&_19$$21); + ZVAL_UNDEF(&_20$$19); + ZVAL_UNDEF(&_26$$19); + ZVAL_UNDEF(&_21$$23); + ZVAL_UNDEF(&_24$$24); + ZVAL_UNDEF(&_25$$24); + ZVAL_UNDEF(&_28$$25); + ZVAL_UNDEF(&_31$$29); + ZVAL_UNDEF(&_32$$29); + ZVAL_UNDEF(&_33$$30); + ZVAL_UNDEF(&_34$$30); + ZVAL_UNDEF(&_35$$31); + ZVAL_UNDEF(&_36$$31); + ZVAL_UNDEF(&_37$$28); + ZVAL_UNDEF(&_39$$33); + ZVAL_UNDEF(&_40$$33); + ZVAL_UNDEF(&_41$$34); + ZVAL_UNDEF(&_42$$34); + ZVAL_UNDEF(&_43$$35); + ZVAL_UNDEF(&_44$$35); + ZVAL_UNDEF(&_45$$32); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&_11$$17); + ZVAL_UNDEF(&_12$$17); + ZVAL_UNDEF(&_22$$23); + ZVAL_UNDEF(&_23$$23); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_ARRAY(definition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(parameters) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - if (UNEXPECTED(Z_TYPE_P(timestamp_param) != IS_LONG)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'timestamp' must be of the type int")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 2, 1, &container, &definition_param, ¶meters); + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); + if (!parameters) { + parameters = ¶meters_sub; + parameters = &__$null; } - timestamp = Z_LVAL_P(timestamp_param); - ZEPHIR_INIT_VAR(&_0); - zephir_time(&_0); - if (ZEPHIR_LT_LONG(&_0, timestamp)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Invalid Not Before", "phalcon/Encryption/Security/JWT/Builder.zep", 366); + ZEPHIR_OBS_VAR(&className); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&className, &definition, SL("className"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "Invalid service definition. Missing 'className' parameter", "phalcon/Di/Service/Builder.zep", 41); return; } - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "nbf"); - ZVAL_LONG(&_2, timestamp); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_1, &_2); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setSubject) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *subject_param = NULL, _0; - zval subject; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&subject); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(subject) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &subject_param); - if (UNEXPECTED(Z_TYPE_P(subject_param) != IS_STRING && Z_TYPE_P(subject_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'subject' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(subject_param) == IS_STRING)) { - zephir_get_strval(&subject, subject_param); + if (Z_TYPE_P(parameters) == IS_ARRAY) { + if (zephir_fast_count_int(parameters)) { + ZEPHIR_INIT_VAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&instance, &className, parameters); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&instance, &className); + zephir_check_call_status(); + } } else { - ZEPHIR_INIT_VAR(&subject); + ZEPHIR_OBS_VAR(&arguments); + if (zephir_array_isset_string_fetch(&arguments, &definition, SL("arguments"), 0)) { + ZEPHIR_CALL_METHOD(&_0$$8, this_ptr, "buildparameters", NULL, 219, container, &arguments); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&instance, &className, &_0$$8); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&instance); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&instance, &className); + zephir_check_call_status(); + } } - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "sub"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "setclaim", NULL, 0, &_0, &subject); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_OBS_VAR(¶mCalls); + if (zephir_array_isset_string_fetch(¶mCalls, &definition, SL("calls"), 0)) { + if (UNEXPECTED(Z_TYPE_P(&instance) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "The definition has setter injection parameters but the constructor didn't return an instance", "phalcon/Di/Service/Builder.zep", 83); + return; + } + if (UNEXPECTED(Z_TYPE_P(¶mCalls) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "Setter injection parameters must be an array", "phalcon/Di/Service/Builder.zep", 89); + return; + } + zephir_is_iterable(¶mCalls, 0, "phalcon/Di/Service/Builder.zep", 149); + if (Z_TYPE_P(¶mCalls) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(¶mCalls), _3$$10, _4$$10, _1$$10) + { + ZEPHIR_INIT_NVAR(&methodPosition); + if (_4$$10 != NULL) { + ZVAL_STR_COPY(&methodPosition, _4$$10); + } else { + ZVAL_LONG(&methodPosition, _3$$10); + } + ZEPHIR_INIT_NVAR(&method); + ZVAL_COPY(&method, _1$$10); + if (UNEXPECTED(Z_TYPE_P(&method) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_5$$14); + object_init_ex(&_5$$14, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_6$$14); + ZEPHIR_CONCAT_SV(&_6$$14, "Method call must be an array on position ", &methodPosition); + ZEPHIR_CALL_METHOD(NULL, &_5$$14, "__construct", &_7, 29, &_6$$14); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5$$14, "phalcon/Di/Service/Builder.zep", 103); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&methodName); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&methodName, &method, SL("method"), 0)))) { + ZEPHIR_INIT_NVAR(&_8$$15); + object_init_ex(&_8$$15, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_9$$15); + ZEPHIR_CONCAT_SV(&_9$$15, "The method name is required on position ", &methodPosition); + ZEPHIR_CALL_METHOD(NULL, &_8$$15, "__construct", &_7, 29, &_9$$15); + zephir_check_call_status(); + zephir_throw_exception_debug(&_8$$15, "phalcon/Di/Service/Builder.zep", 112); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_INIT_NVAR(&methodCall); + zephir_create_array(&methodCall, 2, 0); + zephir_array_fast_append(&methodCall, &instance); + zephir_array_fast_append(&methodCall, &methodName); + ZEPHIR_OBS_NVAR(&arguments); + if (zephir_array_isset_string_fetch(&arguments, &method, SL("arguments"), 0)) { + if (UNEXPECTED(Z_TYPE_P(&arguments) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_10$$17); + object_init_ex(&_10$$17, phalcon_di_exception_ce); + zephir_cast_to_string(&_11$$17, &methodPosition); + ZEPHIR_INIT_NVAR(&_12$$17); + ZEPHIR_CONCAT_SV(&_12$$17, "Call arguments must be an array on position ", &_11$$17); + ZEPHIR_CALL_METHOD(NULL, &_10$$17, "__construct", &_7, 29, &_12$$17); + zephir_check_call_status(); + zephir_throw_exception_debug(&_10$$17, "phalcon/Di/Service/Builder.zep", 125); + ZEPHIR_MM_RESTORE(); + return; + } + if (zephir_fast_count_int(&arguments)) { + ZEPHIR_INIT_NVAR(&_13$$18); + ZEPHIR_CALL_METHOD(&_14$$18, this_ptr, "buildparameters", NULL, 219, container, &arguments); + zephir_check_call_status(); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_13$$18, &methodCall, &_14$$18); + zephir_check_call_status(); + continue; + } + } + ZEPHIR_INIT_NVAR(&_15$$13); + ZEPHIR_CALL_USER_FUNC(&_15$$13, &methodCall); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, ¶mCalls, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2$$10, ¶mCalls, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2$$10)) { + break; + } + ZEPHIR_CALL_METHOD(&methodPosition, ¶mCalls, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&method, ¶mCalls, "current", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(&method) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_16$$20); + object_init_ex(&_16$$20, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_17$$20); + ZEPHIR_CONCAT_SV(&_17$$20, "Method call must be an array on position ", &methodPosition); + ZEPHIR_CALL_METHOD(NULL, &_16$$20, "__construct", &_7, 29, &_17$$20); + zephir_check_call_status(); + zephir_throw_exception_debug(&_16$$20, "phalcon/Di/Service/Builder.zep", 103); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&methodName); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&methodName, &method, SL("method"), 0)))) { + ZEPHIR_INIT_NVAR(&_18$$21); + object_init_ex(&_18$$21, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_19$$21); + ZEPHIR_CONCAT_SV(&_19$$21, "The method name is required on position ", &methodPosition); + ZEPHIR_CALL_METHOD(NULL, &_18$$21, "__construct", &_7, 29, &_19$$21); + zephir_check_call_status(); + zephir_throw_exception_debug(&_18$$21, "phalcon/Di/Service/Builder.zep", 112); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_INIT_NVAR(&_20$$19); + zephir_create_array(&_20$$19, 2, 0); + zephir_array_fast_append(&_20$$19, &instance); + zephir_array_fast_append(&_20$$19, &methodName); + ZEPHIR_CPY_WRT(&methodCall, &_20$$19); + ZEPHIR_OBS_NVAR(&arguments); + if (zephir_array_isset_string_fetch(&arguments, &method, SL("arguments"), 0)) { + if (UNEXPECTED(Z_TYPE_P(&arguments) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_21$$23); + object_init_ex(&_21$$23, phalcon_di_exception_ce); + zephir_cast_to_string(&_22$$23, &methodPosition); + ZEPHIR_INIT_NVAR(&_23$$23); + ZEPHIR_CONCAT_SV(&_23$$23, "Call arguments must be an array on position ", &_22$$23); + ZEPHIR_CALL_METHOD(NULL, &_21$$23, "__construct", &_7, 29, &_23$$23); + zephir_check_call_status(); + zephir_throw_exception_debug(&_21$$23, "phalcon/Di/Service/Builder.zep", 125); + ZEPHIR_MM_RESTORE(); + return; + } + if (zephir_fast_count_int(&arguments)) { + ZEPHIR_INIT_NVAR(&_24$$24); + ZEPHIR_CALL_METHOD(&_25$$24, this_ptr, "buildparameters", NULL, 219, container, &arguments); + zephir_check_call_status(); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_24$$24, &methodCall, &_25$$24); + zephir_check_call_status(); + continue; + } + } + ZEPHIR_INIT_NVAR(&_26$$19); + ZEPHIR_CALL_USER_FUNC(&_26$$19, &methodCall); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, ¶mCalls, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&method); + ZEPHIR_INIT_NVAR(&methodPosition); + } + ZEPHIR_OBS_NVAR(¶mCalls); + if (zephir_array_isset_string_fetch(¶mCalls, &definition, SL("properties"), 0)) { + if (UNEXPECTED(Z_TYPE_P(&instance) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "The definition has properties injection parameters but the constructor didn't return an instance", "phalcon/Di/Service/Builder.zep", 159); + return; + } + if (UNEXPECTED(Z_TYPE_P(¶mCalls) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "Setter injection parameters must be an array", "phalcon/Di/Service/Builder.zep", 165); + return; + } + zephir_is_iterable(¶mCalls, 0, "phalcon/Di/Service/Builder.zep", 209); + if (Z_TYPE_P(¶mCalls) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(¶mCalls), _29$$25, _30$$25, _27$$25) + { + ZEPHIR_INIT_NVAR(&propertyPosition); + if (_30$$25 != NULL) { + ZVAL_STR_COPY(&propertyPosition, _30$$25); + } else { + ZVAL_LONG(&propertyPosition, _29$$25); + } + ZEPHIR_INIT_NVAR(&property); + ZVAL_COPY(&property, _27$$25); + if (UNEXPECTED(Z_TYPE_P(&property) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_31$$29); + object_init_ex(&_31$$29, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_32$$29); + ZEPHIR_CONCAT_SV(&_32$$29, "Property must be an array on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_31$$29, "__construct", &_7, 29, &_32$$29); + zephir_check_call_status(); + zephir_throw_exception_debug(&_31$$29, "phalcon/Di/Service/Builder.zep", 179); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&propertyName); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&propertyName, &property, SL("name"), 0)))) { + ZEPHIR_INIT_NVAR(&_33$$30); + object_init_ex(&_33$$30, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_34$$30); + ZEPHIR_CONCAT_SV(&_34$$30, "The property name is required on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_33$$30, "__construct", &_7, 29, &_34$$30); + zephir_check_call_status(); + zephir_throw_exception_debug(&_33$$30, "phalcon/Di/Service/Builder.zep", 188); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&propertyValue); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&propertyValue, &property, SL("value"), 0)))) { + ZEPHIR_INIT_NVAR(&_35$$31); + object_init_ex(&_35$$31, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_36$$31); + ZEPHIR_CONCAT_SV(&_36$$31, "The property value is required on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_35$$31, "__construct", &_7, 29, &_36$$31); + zephir_check_call_status(); + zephir_throw_exception_debug(&_35$$31, "phalcon/Di/Service/Builder.zep", 197); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&_37$$28, this_ptr, "buildparameter", &_38, 220, container, &propertyPosition, &propertyValue); + zephir_check_call_status(); + zephir_update_property_zval_zval(&instance, &propertyName, &_37$$28); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, ¶mCalls, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_28$$25, ¶mCalls, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_28$$25)) { + break; + } + ZEPHIR_CALL_METHOD(&propertyPosition, ¶mCalls, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&property, ¶mCalls, "current", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(&property) != IS_ARRAY)) { + ZEPHIR_INIT_NVAR(&_39$$33); + object_init_ex(&_39$$33, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_40$$33); + ZEPHIR_CONCAT_SV(&_40$$33, "Property must be an array on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_39$$33, "__construct", &_7, 29, &_40$$33); + zephir_check_call_status(); + zephir_throw_exception_debug(&_39$$33, "phalcon/Di/Service/Builder.zep", 179); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&propertyName); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&propertyName, &property, SL("name"), 0)))) { + ZEPHIR_INIT_NVAR(&_41$$34); + object_init_ex(&_41$$34, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_42$$34); + ZEPHIR_CONCAT_SV(&_42$$34, "The property name is required on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_41$$34, "__construct", &_7, 29, &_42$$34); + zephir_check_call_status(); + zephir_throw_exception_debug(&_41$$34, "phalcon/Di/Service/Builder.zep", 188); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_OBS_NVAR(&propertyValue); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&propertyValue, &property, SL("value"), 0)))) { + ZEPHIR_INIT_NVAR(&_43$$35); + object_init_ex(&_43$$35, phalcon_di_exception_ce); + ZEPHIR_INIT_NVAR(&_44$$35); + ZEPHIR_CONCAT_SV(&_44$$35, "The property value is required on position ", &propertyPosition); + ZEPHIR_CALL_METHOD(NULL, &_43$$35, "__construct", &_7, 29, &_44$$35); + zephir_check_call_status(); + zephir_throw_exception_debug(&_43$$35, "phalcon/Di/Service/Builder.zep", 197); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&_45$$32, this_ptr, "buildparameter", &_38, 220, container, &propertyPosition, &propertyValue); + zephir_check_call_status(); + zephir_update_property_zval_zval(&instance, &propertyName, &_45$$32); + ZEPHIR_CALL_METHOD(NULL, ¶mCalls, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&property); + ZEPHIR_INIT_NVAR(&propertyPosition); + } + RETURN_CCTOR(&instance); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setPassphrase) +static PHP_METHOD(Phalcon_Di_Service_Builder, buildParameter) { + zval _2$$3, _5$$5, _8$$8, _11$$10, _14$$13; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *passphrase_param = NULL, _0, _1, _2, _3; - zval passphrase; + zval argument; + zend_long position, ZEPHIR_LAST_CALL_STATUS; + zval *container, container_sub, *position_param = NULL, *argument_param = NULL, type, name, value, instanceArguments, _0$$3, _1$$3, _3$$5, _4$$5, _6$$8, _7$$8, _9$$10, _10$$10, _12$$13, _13$$13; zval *this_ptr = getThis(); - ZVAL_UNDEF(&passphrase); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&instanceArguments); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_6$$8); + ZVAL_UNDEF(&_7$$8); + ZVAL_UNDEF(&_9$$10); + ZVAL_UNDEF(&_10$$10); + ZVAL_UNDEF(&_12$$13); + ZVAL_UNDEF(&_13$$13); + ZVAL_UNDEF(&argument); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_8$$8); + ZVAL_UNDEF(&_11$$10); + ZVAL_UNDEF(&_14$$13); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(passphrase) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_LONG(position) + Z_PARAM_ARRAY(argument) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(passphrase_param) != IS_STRING && Z_TYPE_P(passphrase_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'passphrase' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(passphrase_param) == IS_STRING)) { - zephir_get_strval(&passphrase, passphrase_param); - } else { - ZEPHIR_INIT_VAR(&passphrase); - } + zephir_fetch_params(1, 3, 0, &container, &position_param, &argument_param); + position = zephir_get_intval(position_param); + ZEPHIR_OBS_COPY_OR_DUP(&argument, argument_param); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "/(?=^.{16,}$)((?=.*\\d)|(?=.*\\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/"); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "/(?=^.{16,}$)((?=.*\\d)|(?=.*\\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/"); - zephir_preg_match(&_2, &_3, &passphrase, &_0, 0, 0 , 0 ); - if (!(zephir_is_true(&_2))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Invalid passphrase (too weak)", "phalcon/Encryption/Security/JWT/Builder.zep", 404); + ZEPHIR_OBS_VAR(&type); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&type, &argument, SL("type"), 0)))) { + ZEPHIR_INIT_VAR(&_0$$3); + object_init_ex(&_0$$3, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_1$$3); + ZVAL_LONG(&_1$$3, position); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, "Argument at position ", &_1$$3, " must have a type"); + ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 29, &_2$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_0$$3, "phalcon/Di/Service/Builder.zep", 229); + ZEPHIR_MM_RESTORE(); return; } - zephir_update_property_zval(this_ptr, ZEND_STRL("passphrase"), &passphrase); - RETURN_THIS(); + do { + if (ZEPHIR_IS_STRING(&type, "service")) { + ZEPHIR_OBS_VAR(&name); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&name, &argument, SL("name"), 0)))) { + ZEPHIR_INIT_VAR(&_3$$5); + object_init_ex(&_3$$5, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_4$$5); + ZVAL_LONG(&_4$$5, position); + ZEPHIR_INIT_VAR(&_5$$5); + ZEPHIR_CONCAT_SV(&_5$$5, "Service 'name' is required in parameter on position ", &_4$$5); + ZEPHIR_CALL_METHOD(NULL, &_3$$5, "__construct", NULL, 29, &_5$$5); + zephir_check_call_status(); + zephir_throw_exception_debug(&_3$$5, "phalcon/Di/Service/Builder.zep", 242); + ZEPHIR_MM_RESTORE(); + return; + } + if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "The dependency injector container is not valid", "phalcon/Di/Service/Builder.zep", 248); + return; + } + ZEPHIR_RETURN_CALL_METHOD(container, "get", NULL, 0, &name); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "parameter")) { + ZEPHIR_OBS_VAR(&value); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&value, &argument, SL("value"), 0)))) { + ZEPHIR_INIT_VAR(&_6$$8); + object_init_ex(&_6$$8, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_7$$8); + ZVAL_LONG(&_7$$8, position); + ZEPHIR_INIT_VAR(&_8$$8); + ZEPHIR_CONCAT_SV(&_8$$8, "Service 'value' is required in parameter on position ", &_7$$8); + ZEPHIR_CALL_METHOD(NULL, &_6$$8, "__construct", NULL, 29, &_8$$8); + zephir_check_call_status(); + zephir_throw_exception_debug(&_6$$8, "phalcon/Di/Service/Builder.zep", 260); + ZEPHIR_MM_RESTORE(); + return; + } + RETURN_CCTOR(&value); + } + if (ZEPHIR_IS_STRING(&type, "instance")) { + ZEPHIR_OBS_NVAR(&name); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&name, &argument, SL("className"), 0)))) { + ZEPHIR_INIT_VAR(&_9$$10); + object_init_ex(&_9$$10, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_10$$10); + ZVAL_LONG(&_10$$10, position); + ZEPHIR_INIT_VAR(&_11$$10); + ZEPHIR_CONCAT_SV(&_11$$10, "Service 'className' is required in parameter on position ", &_10$$10); + ZEPHIR_CALL_METHOD(NULL, &_9$$10, "__construct", NULL, 29, &_11$$10); + zephir_check_call_status(); + zephir_throw_exception_debug(&_9$$10, "phalcon/Di/Service/Builder.zep", 273); + ZEPHIR_MM_RESTORE(); + return; + } + if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_di_exception_ce, "The dependency injector container is not valid", "phalcon/Di/Service/Builder.zep", 279); + return; + } + ZEPHIR_OBS_VAR(&instanceArguments); + if (zephir_array_isset_string_fetch(&instanceArguments, &argument, SL("arguments"), 0)) { + ZEPHIR_RETURN_CALL_METHOD(container, "get", NULL, 0, &name, &instanceArguments); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_RETURN_CALL_METHOD(container, "get", NULL, 0, &name); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&_12$$13); + object_init_ex(&_12$$13, phalcon_di_exception_ce); + ZEPHIR_INIT_VAR(&_13$$13); + ZVAL_LONG(&_13$$13, position); + ZEPHIR_INIT_VAR(&_14$$13); + ZEPHIR_CONCAT_SV(&_14$$13, "Unknown service type in parameter on position ", &_13$$13); + ZEPHIR_CALL_METHOD(NULL, &_12$$13, "__construct", NULL, 29, &_14$$13); + zephir_check_call_status(); + zephir_throw_exception_debug(&_12$$13, "phalcon/Di/Service/Builder.zep", 301); + ZEPHIR_MM_RESTORE(); + return; + } while(0); + + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, setClaim) +static PHP_METHOD(Phalcon_Di_Service_Builder, buildParameters) { + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_5 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *value, value_sub, _0; - zval name; + zval arguments, buildArguments; + zval *container, container_sub, *arguments_param = NULL, position, argument, *_0, _1, _4$$3, _6$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&value_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&argument); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(&buildArguments); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(name) - Z_PARAM_ZVAL(value) + Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_ARRAY(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &name_param, &value); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); - } else { - ZEPHIR_INIT_VAR(&name); - } - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "set", NULL, 0, &name, value); - zephir_check_call_status(); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, encodeUrl) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *input_param = NULL, _0, _1, _2, _3, _4; - zval input; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) - ZEND_PARSE_PARAMETERS_END(); -#endif + zephir_fetch_params(1, 2, 0, &container, &arguments_param); + ZEPHIR_OBS_COPY_OR_DUP(&arguments, arguments_param); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - if (UNEXPECTED(Z_TYPE_P(input_param) != IS_STRING && Z_TYPE_P(input_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'input' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(input_param) == IS_STRING)) { - zephir_get_strval(&input, input_param); + ZEPHIR_INIT_VAR(&buildArguments); + array_init(&buildArguments); + zephir_is_iterable(&arguments, 0, "phalcon/Di/Service/Builder.zep", 323); + if (Z_TYPE_P(&arguments) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&arguments), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&position); + if (_3 != NULL) { + ZVAL_STR_COPY(&position, _3); + } else { + ZVAL_LONG(&position, _2); + } + ZEPHIR_INIT_NVAR(&argument); + ZVAL_COPY(&argument, _0); + ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "buildparameter", &_5, 220, container, &position, &argument); + zephir_check_call_status(); + zephir_array_append(&buildArguments, &_4$$3, PH_SEPARATE, "phalcon/Di/Service/Builder.zep", 320); + } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_INIT_VAR(&input); + ZEPHIR_CALL_METHOD(NULL, &arguments, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &arguments, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&position, &arguments, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&argument, &arguments, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_6$$4, this_ptr, "buildparameter", &_5, 220, container, &position, &argument); + zephir_check_call_status(); + zephir_array_append(&buildArguments, &_6$$4, PH_SEPARATE, "phalcon/Di/Service/Builder.zep", 320); + ZEPHIR_CALL_METHOD(NULL, &arguments, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&argument); + ZEPHIR_INIT_NVAR(&position); + RETURN_CTOR(&buildArguments); +} - ZEPHIR_CALL_FUNCTION(&_0, "base64_encode", NULL, 226, &input); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "+/"); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "-_"); - ZEPHIR_CALL_FUNCTION(&_3, "strtr", NULL, 5, &_0, &_1, &_2); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_1); - ZVAL_STRING(&_1, "="); - ZEPHIR_INIT_NVAR(&_2); - ZVAL_STRING(&_2, ""); - ZEPHIR_INIT_VAR(&_4); - zephir_fast_str_replace(&_4, &_1, &_2, &_3); - RETURN_CCTOR(&_4); -} -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Builder, encode) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long options, depth, ZEPHIR_LAST_CALL_STATUS; - zval *data, data_sub, *options_param = NULL, *depth_param = NULL, encoded, _0, _1, _2, _3$$3, _4$$3, _5$$3; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&encoded); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_ZVAL(data) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(options) - Z_PARAM_LONG(depth) - ZEND_PARSE_PARAMETERS_END(); +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &data, &options_param, &depth_param); - if (!options_param) { - options = 0; - } else { - options = zephir_get_intval(options_param); - } - if (!depth_param) { - depth = 512; - } else { - depth = zephir_get_intval(depth_param); - } - ZVAL_LONG(&_0, options); - ZVAL_LONG(&_1, depth); - ZEPHIR_INIT_VAR(&encoded); - zephir_json_encode(&encoded, data, zephir_get_intval(&_0) ); - ZEPHIR_CALL_FUNCTION(&_2, "json_last_error", NULL, 189); - zephir_check_call_status(); - if (UNEXPECTED(!ZEPHIR_IS_LONG_IDENTICAL(&_2, 0))) { - ZEPHIR_INIT_VAR(&_3$$3); - object_init_ex(&_3$$3, spl_ce_InvalidArgumentException); - ZEPHIR_CALL_FUNCTION(&_4$$3, "json_last_error_msg", NULL, 190); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_5$$3); - ZEPHIR_CONCAT_SV(&_5$$3, "json_encode error: ", &_4$$3); - ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 191, &_5$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_3$$3, "phalcon/Encryption/Security/JWT/Builder.zep", 451); - ZEPHIR_MM_RESTORE(); - return; - } - RETURN_CCTOR(&encoded); -} +ZEPHIR_INIT_CLASS(Phalcon_Logger_AbstractLogger) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Logger, AbstractLogger, phalcon, logger_abstractlogger, phalcon_logger_abstractlogger_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_logger_abstractlogger_ce, SL("adapters"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_abstractlogger_ce, SL("excluded"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_logger_abstractlogger_ce, SL("logLevel"), 8, ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_logger_abstractlogger_ce, SL("name"), "", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_abstractlogger_ce, SL("timezone"), ZEND_ACC_PROTECTED); + phalcon_logger_abstractlogger_ce->create_object = zephir_init_properties_Phalcon_Logger_AbstractLogger; + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("ALERT"), 2); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("CRITICAL"), 1); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("CUSTOM"), 8); -#ifdef HAVE_CONFIG_H -#endif + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("DEBUG"), 7); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("EMERGENCY"), 0); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("ERROR"), 3); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("INFO"), 6); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("NOTICE"), 5); -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Validator) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT, Validator, phalcon, encryption_security_jwt_validator, phalcon_encryption_security_jwt_validator_method_entry, 0); + zephir_declare_class_constant_long(phalcon_logger_abstractlogger_ce, SL("WARNING"), 4); - zend_declare_property_long(phalcon_encryption_security_jwt_validator_ce, SL("timeShift"), 0, ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_validator_ce, SL("token"), ZEND_ACC_PRIVATE); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, __construct) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, __construct) { - zend_long timeShift; - zval *token, token_sub, *timeShift_param = NULL, _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval adapters; + zval *name_param = NULL, *adapters_param = NULL, *timezone = NULL, timezone_sub, __$null, defaultTimezone; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&token_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&timezone_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&defaultTimezone); + ZVAL_UNDEF(&adapters); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_OBJECT_OF_CLASS(token, phalcon_encryption_security_jwt_token_token_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_LONG(timeShift) + Z_PARAM_ARRAY(adapters) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(timezone, php_date_get_timezone_ce()) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 1, &token, &timeShift_param); - if (!timeShift_param) { - timeShift = 0; + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &name_param, &adapters_param, &timezone); + zephir_get_strval(&name, name_param); + if (!adapters_param) { + ZEPHIR_INIT_VAR(&adapters); + array_init(&adapters); } else { - timeShift = zephir_get_intval(timeShift_param); + zephir_get_arrval(&adapters, adapters_param); + } + if (!timezone) { + timezone = &timezone_sub; + ZEPHIR_CPY_WRT(timezone, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(timezone); } - zephir_update_property_zval(this_ptr, ZEND_STRL("token"), token); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, timeShift); - zephir_update_property_zval(this_ptr, ZEND_STRL("timeShift"), &_0); + if (Z_TYPE_P(timezone) == IS_NULL) { + ZEPHIR_CALL_FUNCTION(&defaultTimezone, "date_default_timezone_get", NULL, 93); + zephir_check_call_status(); + if (UNEXPECTED(1 == ZEPHIR_IS_EMPTY(&defaultTimezone))) { + ZEPHIR_INIT_NVAR(&defaultTimezone); + ZVAL_STRING(&defaultTimezone, "UTC"); + } + ZEPHIR_INIT_NVAR(timezone); + object_init_ex(timezone, php_date_get_timezone_ce()); + ZEPHIR_CALL_METHOD(NULL, timezone, "__construct", NULL, 0, &defaultTimezone); + zephir_check_call_status(); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("timezone"), timezone); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setadapters", NULL, 0, &adapters); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, setToken) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, addAdapter) { - zval *token, token_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *name_param = NULL, *adapter, adapter_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&token_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&adapter_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(token, phalcon_encryption_security_jwt_token_token_ce) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_OBJECT_OF_CLASS(adapter, phalcon_logger_adapter_adapterinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &token); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &name_param, &adapter); + zephir_get_strval(&name, name_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("token"), token); - RETURN_THISW(); + zephir_update_property_array(this_ptr, SL("adapters"), &name, adapter); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateAudience) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, excludeAdapters) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *audience_param = NULL, _0, _1, _2, _3, _4; - zval audience; + zval *adapters_param = NULL, __$true, adapter, registered, *_0, _1; + zval adapters; zval *this_ptr = getThis(); - ZVAL_UNDEF(&audience); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&adapters); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&adapter); + ZVAL_UNDEF(®istered); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(audience) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(adapters) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &audience_param); - if (UNEXPECTED(Z_TYPE_P(audience_param) != IS_STRING && Z_TYPE_P(audience_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'audience' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(audience_param) == IS_STRING)) { - zephir_get_strval(&audience, audience_param); + zephir_fetch_params(1, 0, 1, &adapters_param); + if (!adapters_param) { + ZEPHIR_INIT_VAR(&adapters); + array_init(&adapters); } else { - ZEPHIR_INIT_VAR(&audience); + zephir_get_arrval(&adapters, adapters_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_1, &_0, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - array_init(&_3); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "aud"); - ZEPHIR_CALL_METHOD(&_2, &_1, "get", NULL, 0, &_4, &_3); - zephir_check_call_status(); - if (!(zephir_fast_in_array(&audience, &_2))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: audience not allowed", "phalcon/Encryption/Security/JWT/Validator.zep", 71); - return; + zephir_read_property(®istered, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + zephir_is_iterable(&adapters, 0, "phalcon/Logger/AbstractLogger.zep", 153); + if (Z_TYPE_P(&adapters) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&adapters), _0) + { + ZEPHIR_INIT_NVAR(&adapter); + ZVAL_COPY(&adapter, _0); + if (1 == zephir_array_isset(®istered, &adapter)) { + zephir_update_property_array(this_ptr, SL("excluded"), &adapter, &__$true); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &adapters, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &adapters, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&adapter, &adapters, "current", NULL, 0); + zephir_check_call_status(); + if (1 == zephir_array_isset(®istered, &adapter)) { + zephir_update_property_array(this_ptr, SL("excluded"), &adapter, &__$true); + } + ZEPHIR_CALL_METHOD(NULL, &adapters, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&adapter); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateExpiration) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getAdapter) { - zend_bool _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1, _2, _3, _5, _6, _7, _8; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0, _1, _2; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_8); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - timestamp = zephir_get_intval(timestamp_param); + zephir_fetch_params(1, 1, 0, &name_param); + zephir_get_strval(&name, name_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_1, &_0, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "exp"); - ZEPHIR_CALL_METHOD(&_2, &_1, "has", NULL, 0, &_3); - zephir_check_call_status(); - _4 = zephir_is_true(&_2); - if (_4) { - ZVAL_LONG(&_6, timestamp); - ZEPHIR_CALL_METHOD(&_5, this_ptr, "gettimestamp", NULL, 263, &_6); - zephir_check_call_status(); - zephir_read_property(&_6, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_7, &_6, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "exp"); - ZEPHIR_CALL_METHOD(&_8, &_7, "get", NULL, 0, &_3); - zephir_check_call_status(); - _4 = ZEPHIR_GE_LONG(&_5, zephir_get_intval(&_8)); - } - if (_4) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: the token has expired", "phalcon/Encryption/Security/JWT/Validator.zep", 91); + zephir_read_property(&_0, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + if (1 != zephir_array_isset(&_0, &name)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "Adapter does not exist for this logger", "phalcon/Logger/AbstractLogger.zep", 169); return; } - RETURN_THIS(); + zephir_read_property(&_1, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_2, &_1, &name, PH_NOISY | PH_READONLY, "phalcon/Logger/AbstractLogger.zep", 172); + RETURN_CTOR(&_2); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateId) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getAdapters) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *id_param = NULL, _0, _1, _2, _3; - zval id, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&id); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(id) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &id_param); - if (UNEXPECTED(Z_TYPE_P(id_param) != IS_STRING && Z_TYPE_P(id_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'id' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(id_param) == IS_STRING)) { - zephir_get_strval(&id, id_param); - } else { - ZEPHIR_INIT_VAR(&id); - } + RETURN_MEMBER(getThis(), "adapters"); +} +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getLogLevel) +{ + zval *this_ptr = getThis(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_1, &_0, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "jti"); - ZEPHIR_CALL_METHOD(&_2, &_1, "get", NULL, 0, &_3); - zephir_check_call_status(); - zephir_cast_to_string(&_4, &_2); - if (!ZEPHIR_IS_IDENTICAL(&id, &_4)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: incorrect Id", "phalcon/Encryption/Security/JWT/Validator.zep", 108); - return; - } - RETURN_THIS(); + + + RETURN_MEMBER(getThis(), "logLevel"); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateIssuedAt) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "name"); +} + +static PHP_METHOD(Phalcon_Logger_AbstractLogger, removeAdapter) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1, _2, _3, _4; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0, _1; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - timestamp = zephir_get_intval(timestamp_param); + zephir_fetch_params(1, 1, 0, &name_param); + zephir_get_strval(&name, name_param); - ZVAL_LONG(&_1, timestamp); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "gettimestamp", NULL, 263, &_1); - zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_2, &_1, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "iat"); - ZEPHIR_CALL_METHOD(&_3, &_2, "get", NULL, 0, &_4); - zephir_check_call_status(); - if (ZEPHIR_LE_LONG(&_0, zephir_get_intval(&_3))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: the token cannot be used yet (future)", "phalcon/Encryption/Security/JWT/Validator.zep", 125); + zephir_read_property(&_0, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + if (1 != zephir_array_isset(&_0, &name)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "Adapter does not exist for this logger", "phalcon/Logger/AbstractLogger.zep", 214); return; } + zephir_unset_property_array(this_ptr, ZEND_STRL("adapters"), &name); + zephir_read_property(&_1, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + zephir_array_unset(&_1, &name, PH_SEPARATE); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateIssuer) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, setAdapters) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *issuer_param = NULL, _0, _1, _2, _3; - zval issuer, _4; + zval *adapters_param = NULL; + zval adapters; zval *this_ptr = getThis(); - ZVAL_UNDEF(&issuer); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&adapters); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(issuer) + Z_PARAM_ARRAY(adapters) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &issuer_param); - if (UNEXPECTED(Z_TYPE_P(issuer_param) != IS_STRING && Z_TYPE_P(issuer_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'issuer' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(issuer_param) == IS_STRING)) { - zephir_get_strval(&issuer, issuer_param); - } else { - ZEPHIR_INIT_VAR(&issuer); - } + zephir_fetch_params(1, 1, 0, &adapters_param); + zephir_get_arrval(&adapters, adapters_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_1, &_0, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "iss"); - ZEPHIR_CALL_METHOD(&_2, &_1, "get", NULL, 0, &_3); - zephir_check_call_status(); - zephir_cast_to_string(&_4, &_2); - if (!ZEPHIR_IS_IDENTICAL(&issuer, &_4)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: incorrect issuer", "phalcon/Encryption/Security/JWT/Validator.zep", 142); - return; - } + zephir_update_property_zval(this_ptr, ZEND_STRL("adapters"), &adapters); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateNotBefore) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, setLogLevel) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *timestamp_param = NULL, _0, _1, _2, _3, _4; - zend_long timestamp, ZEPHIR_LAST_CALL_STATUS; + zval *level_param = NULL, levels, _0; + zend_long level, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&levels); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) + Z_PARAM_LONG(level) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, ×tamp_param); - timestamp = zephir_get_intval(timestamp_param); + zephir_fetch_params(1, 1, 0, &level_param); + level = zephir_get_intval(level_param); - ZVAL_LONG(&_1, timestamp); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "gettimestamp", NULL, 263, &_1); - zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_2, &_1, "getclaims", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "nbf"); - ZEPHIR_CALL_METHOD(&_3, &_2, "get", NULL, 0, &_4); + ZEPHIR_CALL_METHOD(&levels, this_ptr, "getlevels", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_LE_LONG(&_0, zephir_get_intval(&_3))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: the token cannot be used yet (not before)", "phalcon/Encryption/Security/JWT/Validator.zep", 159); - return; + ZEPHIR_INIT_VAR(&_0); + if (1 == zephir_array_isset_long(&levels, level)) { + ZEPHIR_INIT_NVAR(&_0); + ZVAL_LONG(&_0, level); + } else { + ZEPHIR_INIT_NVAR(&_0); + ZVAL_LONG(&_0, 8); } + zephir_update_property_zval(this_ptr, ZEND_STRL("logLevel"), &_0); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, validateSignature) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, addMessage) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval passphrase; - zval *signer, signer_sub, *passphrase_param = NULL, _0, _1, _2, _3, _4, _5; + zval context; + zval message; + zval *level_param = NULL, *message_param = NULL, *context_param = NULL, adapter, collection, item, levelName, levels, method, _0, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6$$3, *_7$$3, _8$$3, _9$$5, _10$$7; + zend_long level, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&signer_sub); + ZVAL_UNDEF(&adapter); + ZVAL_UNDEF(&collection); + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&levelName); + ZVAL_UNDEF(&levels); + ZVAL_UNDEF(&method); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&passphrase); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$7); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(signer, phalcon_encryption_security_jwt_signer_signerinterface_ce) - Z_PARAM_STR(passphrase) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_LONG(level) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &signer, &passphrase_param); - zephir_get_strval(&passphrase, passphrase_param); + zephir_fetch_params(1, 2, 1, &level_param, &message_param, &context_param); + level = zephir_get_intval(level_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - zephir_read_property(&_1, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_2, &_1, "getsignature", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_3, &_2, "gethash", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_4, this_ptr, ZEND_STRL("token"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_5, &_4, "getpayload", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, signer, "verify", NULL, 0, &_3, &_5, &passphrase); - zephir_check_call_status(); - if (!zephir_is_true(&_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, "Validation: the signature does not match", "phalcon/Encryption/Security/JWT/Validator.zep", 183); - return; + zephir_read_property(&_0, this_ptr, ZEND_STRL("logLevel"), PH_NOISY_CC | PH_READONLY); + if (ZEPHIR_GE_LONG(&_0, level)) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + if (zephir_fast_count_int(&_1$$3) == 0) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "No adapters specified", "phalcon/Logger/AbstractLogger.zep", 273); + return; + } + ZEPHIR_CALL_METHOD(&levels, this_ptr, "getlevels", NULL, 0); + zephir_check_call_status(); + if (1 == zephir_array_isset_long(&levels, level)) { + ZEPHIR_OBS_VAR(&levelName); + zephir_array_fetch_long(&levelName, &levels, level, PH_NOISY, "phalcon/Logger/AbstractLogger.zep", 277); + } else { + ZEPHIR_OBS_NVAR(&levelName); + zephir_array_fetch_long(&levelName, &levels, 8, PH_NOISY, "phalcon/Logger/AbstractLogger.zep", 277); + } + ZEPHIR_INIT_VAR(&item); + object_init_ex(&item, phalcon_logger_item_ce); + ZEPHIR_INIT_VAR(&_2$$3); + object_init_ex(&_2$$3, php_date_get_immutable_ce()); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("timezone"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_4$$3); + ZVAL_STRING(&_4$$3, "now"); + ZEPHIR_CALL_METHOD(NULL, &_2$$3, "__construct", NULL, 0, &_4$$3, &_3$$3); + zephir_check_call_status(); + ZVAL_LONG(&_5$$3, level); + ZEPHIR_CALL_METHOD(NULL, &item, "__construct", NULL, 94, &message, &levelName, &_5$$3, &_2$$3, &context); + zephir_check_call_status(); + zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("excluded"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_FUNCTION(&collection, "array_diff_key", NULL, 95, &_5$$3, &_6$$3); + zephir_check_call_status(); + zephir_is_iterable(&collection, 0, "phalcon/Logger/AbstractLogger.zep", 303); + if (Z_TYPE_P(&collection) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&collection), _7$$3) + { + ZEPHIR_INIT_NVAR(&adapter); + ZVAL_COPY(&adapter, _7$$3); + ZEPHIR_INIT_NVAR(&method); + ZVAL_STRING(&method, "process"); + ZEPHIR_CALL_METHOD(&_9$$5, &adapter, "intransaction", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_TRUE_IDENTICAL(&_9$$5)) { + ZEPHIR_INIT_NVAR(&method); + ZVAL_STRING(&method, "add"); + } + ZEPHIR_CALL_METHOD_ZVAL(NULL, &adapter, &method, NULL, 0, &item); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &collection, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_8$$3, &collection, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_8$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&adapter, &collection, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&method); + ZVAL_STRING(&method, "process"); + ZEPHIR_CALL_METHOD(&_10$$7, &adapter, "intransaction", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_TRUE_IDENTICAL(&_10$$7)) { + ZEPHIR_INIT_NVAR(&method); + ZVAL_STRING(&method, "add"); + } + ZEPHIR_CALL_METHOD_ZVAL(NULL, &adapter, &method, NULL, 0, &item); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &collection, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&adapter); + ZEPHIR_INIT_NVAR(&_4$$3); + array_init(&_4$$3); + zephir_update_property_zval(this_ptr, ZEND_STRL("excluded"), &_4$$3); } - RETURN_THIS(); + RETURN_MM_BOOL(1); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Validator, getTimestamp) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getLevelNumber) { - zval *timestamp_param = NULL, _0; - zend_long timestamp; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *level, level_sub, levelName, levels, _0$$3, _1$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&level_sub); + ZVAL_UNDEF(&levelName); + ZVAL_UNDEF(&levels); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(timestamp) + Z_PARAM_ZVAL(level) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, ×tamp_param); - timestamp = zephir_get_intval(timestamp_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("timeShift"), PH_NOISY_CC | PH_READONLY); - RETURN_LONG((timestamp + zephir_get_numberval(&_0))); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_AbstractItem) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Token, AbstractItem, phalcon, encryption_security_jwt_token_abstractitem, phalcon_encryption_security_jwt_token_abstractitem_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &level); - zend_declare_property_null(phalcon_encryption_security_jwt_token_abstractitem_ce, SL("data"), ZEND_ACC_PROTECTED); - phalcon_encryption_security_jwt_token_abstractitem_ce->create_object = zephir_init_properties_Phalcon_Encryption_Security_JWT_Token_AbstractItem; - return SUCCESS; + if (1 == Z_TYPE_P(level) == IS_STRING) { + ZEPHIR_INIT_VAR(&levelName); + zephir_fast_strtoupper(&levelName, level); + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getlevels", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(&levels, "array_flip", NULL, 96, &_0$$3); + zephir_check_call_status(); + if (zephir_array_isset(&levels, &levelName)) { + zephir_array_fetch(&_1$$4, &levels, &levelName, PH_NOISY | PH_READONLY, "phalcon/Logger/AbstractLogger.zep", 328); + RETURN_CTOR(&_1$$4); + } + } else if (1 == zephir_is_numeric(level)) { + ZEPHIR_CALL_METHOD(&levels, this_ptr, "getlevels", NULL, 0); + zephir_check_call_status(); + if (zephir_array_isset(&levels, level)) { + RETURN_MM_LONG(zephir_get_intval(level)); + } + } + RETURN_MM_LONG(8); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_AbstractItem, getEncoded) +static PHP_METHOD(Phalcon_Logger_AbstractLogger, getLevels) { - zval _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_1, &_0, SL("encoded"), PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/JWT/Token/AbstractItem.zep", 30); - RETURN_CTORW(&_1); + zephir_create_array(return_value, 9, 0); + add_index_stringl(return_value, 2, SL("ALERT")); + add_index_stringl(return_value, 1, SL("CRITICAL")); + add_index_stringl(return_value, 7, SL("DEBUG")); + add_index_stringl(return_value, 0, SL("EMERGENCY")); + add_index_stringl(return_value, 3, SL("ERROR")); + add_index_stringl(return_value, 6, SL("INFO")); + add_index_stringl(return_value, 5, SL("NOTICE")); + add_index_stringl(return_value, 4, SL("WARNING")); + add_index_stringl(return_value, 8, SL("CUSTOM")); + return; } -zend_object *zephir_init_properties_Phalcon_Encryption_Security_JWT_Token_AbstractItem(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_Logger_AbstractLogger(zend_class_entry *class_type) { - zval _0, _1$$3; + zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); ZEPHIR_MM_GROW(); @@ -33989,11 +34295,17 @@ zend_object *zephir_init_properties_Phalcon_Encryption_Security_JWT_Token_Abstra { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("excluded"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("data"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("excluded"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("adapters"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("adapters"), &_3$$4); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -34010,121 +34322,73 @@ zend_object *zephir_init_properties_Phalcon_Encryption_Security_JWT_Token_Abstra -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_Enum) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Token, Enum, phalcon, encryption_security_jwt_token_enum, NULL, 0); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("TYPE"), "typ"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("ALGO"), "alg"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("CONTENT_TYPE"), "cty"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("AUDIENCE"), "aud"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("EXPIRATION_TIME"), "exp"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("ID"), "jti"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("ISSUED_AT"), "iat"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("ISSUER"), "iss"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("NOT_BEFORE"), "nbf"); - - zephir_declare_class_constant_string(phalcon_encryption_security_jwt_token_enum_ce, SL("SUBJECT"), "sub"); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_Item) +ZEPHIR_INIT_CLASS(Phalcon_Logger_AdapterFactory) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security\\JWT\\Token, Item, phalcon, encryption_security_jwt_token_item, phalcon_encryption_security_jwt_token_abstractitem_ce, phalcon_encryption_security_jwt_token_item_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger, AdapterFactory, phalcon, logger_adapterfactory, phalcon_factory_abstractfactory_ce, phalcon_logger_adapterfactory_method_entry, 0); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, __construct) +static PHP_METHOD(Phalcon_Logger_AdapterFactory, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval encoded; - zval *payload_param = NULL, *encoded_param = NULL, _0, _1; - zval payload; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *services_param = NULL; + zval services; zval *this_ptr = getThis(); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&encoded); + ZVAL_UNDEF(&services); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ARRAY(payload) - Z_PARAM_STR(encoded) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(services) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &payload_param, &encoded_param); - ZEPHIR_OBS_COPY_OR_DUP(&payload, payload_param); - if (UNEXPECTED(Z_TYPE_P(encoded_param) != IS_STRING && Z_TYPE_P(encoded_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'encoded' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(encoded_param) == IS_STRING)) { - zephir_get_strval(&encoded, encoded_param); + zephir_fetch_params(1, 0, 1, &services_param); + if (!services_param) { + ZEPHIR_INIT_VAR(&services); + array_init(&services); } else { - ZEPHIR_INIT_VAR(&encoded); + ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "encoded"); - zephir_update_property_array(this_ptr, SL("data"), &_0, &encoded); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "payload"); - zephir_update_property_array(this_ptr, SL("data"), &_1, &payload); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); + zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, get) +static PHP_METHOD(Phalcon_Logger_AdapterFactory, newInstance) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, *defaultValue = NULL, defaultValue_sub, __$null, _0, _1, _2, _3; - zval name; + zval options, _0; + zval *name_param = NULL, *fileName_param = NULL, *options_param = NULL, definition; + zval name, fileName; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&defaultValue_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&fileName); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&options); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) + ZEND_PARSE_PARAMETERS_START(2, 3) Z_PARAM_STR(name) + Z_PARAM_STR(fileName) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &name_param, &defaultValue); + zephir_fetch_params(1, 2, 1, &name_param, &fileName_param, &options_param); if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); @@ -34134,73 +34398,249 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, get) } else { ZEPHIR_INIT_VAR(&name); } - if (!defaultValue) { - defaultValue = &defaultValue_sub; - defaultValue = &__$null; + if (UNEXPECTED(Z_TYPE_P(fileName_param) != IS_STRING && Z_TYPE_P(fileName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'fileName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(fileName_param) == IS_STRING)) { + zephir_get_strval(&fileName, fileName_param); + } else { + ZEPHIR_INIT_VAR(&fileName); + } + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + zephir_get_arrval(&options, options_param); } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &name); + ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); zephir_check_call_status(); - if (!(zephir_is_true(&_0))) { - RETVAL_ZVAL(defaultValue, 1, 0); - RETURN_MM(); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_2, &_1, SL("payload"), PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/JWT/Token/Item.zep", 42); - zephir_array_fetch(&_3, &_2, &name, PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/JWT/Token/Item.zep", 42); - RETURN_CTOR(&_3); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 2, 0); + zephir_array_fast_append(&_0, &fileName); + zephir_array_fast_append(&_0, &options); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(return_value, &definition, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, getPayload) +static PHP_METHOD(Phalcon_Logger_AdapterFactory, getExceptionClass) { - zval _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + RETURN_STRING("Phalcon\\Logger\\Exception"); +} - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_1, &_0, SL("payload"), PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/JWT/Token/Item.zep", 50); - RETURN_CTORW(&_1); +static PHP_METHOD(Phalcon_Logger_AdapterFactory, getServices) +{ + zval *this_ptr = getThis(); + + + + zephir_create_array(return_value, 3, 0); + add_assoc_stringl_ex(return_value, SL("noop"), SL("Phalcon\\Logger\\Adapter\\Noop")); + add_assoc_stringl_ex(return_value, SL("stream"), SL("Phalcon\\Logger\\Adapter\\Stream")); + add_assoc_stringl_ex(return_value, SL("syslog"), SL("Phalcon\\Logger\\Adapter\\Syslog")); + return; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, has) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Logger_Enum) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Logger, Enum, phalcon, logger_enum, NULL, 0); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("ALERT"), 2); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("CRITICAL"), 1); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("CUSTOM"), 8); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("DEBUG"), 7); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("EMERGENCY"), 0); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("ERROR"), 3); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("INFO"), 6); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("NOTICE"), 5); + + zephir_declare_class_constant_long(phalcon_logger_enum_ce, SL("WARNING"), 4); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Logger_Exception) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger, Exception, phalcon, logger_exception, zend_ce_exception, NULL, 0); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Logger_Item) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Logger, Item, phalcon, logger_item, phalcon_logger_item_method_entry, 0); + + zend_declare_property_null(phalcon_logger_item_ce, SL("context"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_item_ce, SL("message"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_item_ce, SL("level"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_item_ce, SL("levelName"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_item_ce, SL("dateTime"), ZEND_ACC_PROTECTED); + phalcon_logger_item_ce->create_object = zephir_init_properties_Phalcon_Logger_Item; + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Logger_Item, getContext) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "context"); +} + +static PHP_METHOD(Phalcon_Logger_Item, getMessage) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "message"); +} + +static PHP_METHOD(Phalcon_Logger_Item, getLevel) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "level"); +} + +static PHP_METHOD(Phalcon_Logger_Item, getLevelName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "levelName"); +} + +static PHP_METHOD(Phalcon_Logger_Item, getDateTime) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "dateTime"); +} + +static PHP_METHOD(Phalcon_Logger_Item, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *name_param = NULL, _0, _1; - zval name; + zval context; + zend_long level; + zval *message_param = NULL, *levelName_param = NULL, *level_param = NULL, *dateTime, dateTime_sub, *context_param = NULL, _0; + zval message, levelName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&levelName); + ZVAL_UNDEF(&dateTime_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_START(4, 5) + Z_PARAM_STR(message) + Z_PARAM_STR(levelName) + Z_PARAM_LONG(level) + Z_PARAM_OBJECT_OF_CLASS(dateTime, php_date_get_immutable_ce()) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &name_param); - if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { - zephir_get_strval(&name, name_param); + zephir_fetch_params(1, 4, 1, &message_param, &levelName_param, &level_param, &dateTime, &context_param); + zephir_get_strval(&message, message_param); + zephir_get_strval(&levelName, levelName_param); + level = zephir_get_intval(level_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&name); + zephir_get_arrval(&context, context_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_1, &_0, SL("payload"), PH_READONLY, "phalcon/Encryption/Security/JWT/Token/Item.zep", 60); - RETURN_MM_BOOL(zephir_array_isset(&_1, &name)); + zephir_update_property_zval(this_ptr, ZEND_STRL("message"), &message); + zephir_update_property_zval(this_ptr, ZEND_STRL("levelName"), &levelName); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_LONG(&_0, level); + zephir_update_property_zval(this_ptr, ZEND_STRL("level"), &_0); + zephir_update_property_zval(this_ptr, ZEND_STRL("dateTime"), dateTime); + zephir_update_property_zval(this_ptr, ZEND_STRL("context"), &context); + ZEPHIR_MM_RESTORE(); +} + +zend_object *zephir_init_properties_Phalcon_Logger_Item(zend_class_entry *class_type) +{ + zval _0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + + + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("context"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("context"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } } @@ -34213,497 +34653,368 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Item, has) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_Parser) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Logger) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Token, Parser, phalcon, encryption_security_jwt_token_parser, phalcon_encryption_security_jwt_token_parser_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger, Logger, phalcon, logger_logger, phalcon_logger_abstractlogger_ce, phalcon_logger_logger_method_entry, 0); + zend_class_implements(phalcon_logger_logger_ce, 1, phalcon_logger_loggerinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, parse) +static PHP_METHOD(Phalcon_Logger_Logger, alert) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *token_param = NULL, claims, encodedClaims, encodedHeaders, encodedSignature, headers, results, signature; - zval token; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&token); - ZVAL_UNDEF(&claims); - ZVAL_UNDEF(&encodedClaims); - ZVAL_UNDEF(&encodedHeaders); - ZVAL_UNDEF(&encodedSignature); - ZVAL_UNDEF(&headers); - ZVAL_UNDEF(&results); - ZVAL_UNDEF(&signature); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(token) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &token_param); - if (UNEXPECTED(Z_TYPE_P(token_param) != IS_STRING && Z_TYPE_P(token_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'token' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(token_param) == IS_STRING)) { - zephir_get_strval(&token, token_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&token); + zephir_get_arrval(&context, context_param); } - ZEPHIR_CALL_METHOD(&results, this_ptr, "parsetoken", NULL, 257, &token); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&encodedHeaders); - zephir_array_fetch_long(&encodedHeaders, &results, 0, PH_NOISY, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 33); - ZEPHIR_OBS_VAR(&encodedClaims); - zephir_array_fetch_long(&encodedClaims, &results, 1, PH_NOISY, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 34); - ZEPHIR_OBS_VAR(&encodedSignature); - zephir_array_fetch_long(&encodedSignature, &results, 2, PH_NOISY, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 35); - ZEPHIR_CALL_METHOD(&headers, this_ptr, "decodeheaders", NULL, 258, &encodedHeaders); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&claims, this_ptr, "decodeclaims", NULL, 259, &encodedClaims); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&signature, this_ptr, "decodesignature", NULL, 260, &headers, &encodedSignature); - zephir_check_call_status(); - object_init_ex(return_value, phalcon_encryption_security_jwt_token_token_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 255, &headers, &claims, &signature); + ZVAL_LONG(&_0, 2); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, decodeClaims) +static PHP_METHOD(Phalcon_Logger_Logger, critical) { - zval _4$$4; - zend_bool _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *claims_param = NULL, decoded, _0, _1, _3, _5$$4; - zval claims; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&claims); - ZVAL_UNDEF(&decoded); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(claims) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &claims_param); - zephir_get_strval(&claims, claims_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "decodeurl", NULL, 261, &claims); - zephir_check_call_status(); - ZVAL_BOOL(&_1, 1); - ZEPHIR_CALL_METHOD(&decoded, this_ptr, "decode", NULL, 262, &_0, &_1); - zephir_check_call_status(); - if (Z_TYPE_P(&decoded) != IS_ARRAY) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Invalid Claims (not an array)", "phalcon/Encryption/Security/JWT/Token/Parser.zep", 59); - return; - } - _2 = zephir_array_isset_string(&decoded, SL("aud")); - if (_2) { - ZEPHIR_OBS_VAR(&_3); - zephir_array_fetch_string(&_3, &decoded, SL("aud"), PH_NOISY, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 65); - _2 = Z_TYPE_P(&_3) != IS_ARRAY; - } - if (_2) { - ZEPHIR_INIT_VAR(&_4$$4); - zephir_create_array(&_4$$4, 1, 0); - ZEPHIR_OBS_VAR(&_5$$4); - zephir_array_fetch_string(&_5$$4, &decoded, SL("aud"), PH_NOISY, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 66); - zephir_array_fast_append(&_4$$4, &_5$$4); - zephir_array_update_string(&decoded, SL("aud"), &_4$$4, PH_COPY | PH_SEPARATE); - } - object_init_ex(return_value, phalcon_encryption_security_jwt_token_item_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 253, &decoded, &claims); + ZVAL_LONG(&_0, 1); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, decodeHeaders) +static PHP_METHOD(Phalcon_Logger_Logger, debug) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *headers_param = NULL, decoded, _0, _1; - zval headers; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&headers); - ZVAL_UNDEF(&decoded); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(headers) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &headers_param); - zephir_get_strval(&headers, headers_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "decodeurl", NULL, 261, &headers); - zephir_check_call_status(); - ZVAL_BOOL(&_1, 1); - ZEPHIR_CALL_METHOD(&decoded, this_ptr, "decode", NULL, 262, &_0, &_1); - zephir_check_call_status(); - if (Z_TYPE_P(&decoded) != IS_ARRAY) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Invalid Header (not an array)", "phalcon/Encryption/Security/JWT/Token/Parser.zep", 88); - return; - } - if (!(zephir_array_isset_string(&decoded, SL("typ")))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Invalid Header (missing 'typ' element)", "phalcon/Encryption/Security/JWT/Token/Parser.zep", 94); - return; - } - object_init_ex(return_value, phalcon_encryption_security_jwt_token_item_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 253, &decoded, &headers); + ZVAL_LONG(&_0, 7); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, decodeSignature) +static PHP_METHOD(Phalcon_Logger_Logger, emergency) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval signature; - zval *headers, headers_sub, *signature_param = NULL, algo, decoded, _0, _1, _2; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&headers_sub); - ZVAL_UNDEF(&algo); - ZVAL_UNDEF(&decoded); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&signature); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(headers, phalcon_encryption_security_jwt_token_item_ce) - Z_PARAM_STR(signature) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &headers, &signature_param); - zephir_get_strval(&signature, signature_param); - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "alg"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "none"); - ZEPHIR_CALL_METHOD(&algo, headers, "get", NULL, 0, &_0, &_1); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "none"); - if (ZEPHIR_IS_IDENTICAL(&_2, &algo)) { - ZEPHIR_INIT_VAR(&decoded); - ZVAL_STRING(&decoded, ""); - ZEPHIR_INIT_NVAR(&signature); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_CALL_METHOD(&decoded, this_ptr, "decodeurl", NULL, 261, &signature); - zephir_check_call_status(); + zephir_get_arrval(&context, context_param); } - object_init_ex(return_value, phalcon_encryption_security_jwt_token_signature_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 254, &decoded, &signature); + + + ZVAL_LONG(&_0, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, parseToken) +static PHP_METHOD(Phalcon_Logger_Logger, error) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *token_param = NULL, parts; - zval token; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&token); - ZVAL_UNDEF(&parts); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(token) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &token_param); - if (UNEXPECTED(Z_TYPE_P(token_param) != IS_STRING && Z_TYPE_P(token_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'token' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(token_param) == IS_STRING)) { - zephir_get_strval(&token, token_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&token); + zephir_get_arrval(&context, context_param); } - ZEPHIR_INIT_VAR(&parts); - zephir_fast_explode_str(&parts, SL("."), &token, LONG_MAX); - if (zephir_fast_count_int(&parts) != 3) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(spl_ce_InvalidArgumentException, "Invalid JWT string (dots misalignment)", "phalcon/Encryption/Security/JWT/Token/Parser.zep", 140); - return; - } - RETURN_CCTOR(&parts); + ZVAL_LONG(&_0, 3); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, decode) +static PHP_METHOD(Phalcon_Logger_Logger, info) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long depth, options, ZEPHIR_LAST_CALL_STATUS; - zend_bool associative; - zval *data_param = NULL, *associative_param = NULL, *depth_param = NULL, *options_param = NULL, decoded, _0, _1, _2, _3, _4$$3, _5$$3, _6$$3; - zval data; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&decoded); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_STR(data) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(associative) - Z_PARAM_LONG(depth) - Z_PARAM_LONG(options) + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &data_param, &associative_param, &depth_param, &options_param); - if (UNEXPECTED(Z_TYPE_P(data_param) != IS_STRING && Z_TYPE_P(data_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'data' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(data_param) == IS_STRING)) { - zephir_get_strval(&data, data_param); - } else { - ZEPHIR_INIT_VAR(&data); - } - if (!associative_param) { - associative = 0; - } else { - associative = zephir_get_boolval(associative_param); - } - if (!depth_param) { - depth = 512; - } else { - depth = zephir_get_intval(depth_param); - } - if (!options_param) { - options = 0; + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - options = zephir_get_intval(options_param); + zephir_get_arrval(&context, context_param); } - ZVAL_BOOL(&_0, (associative ? 1 : 0)); - ZVAL_LONG(&_1, depth); - ZVAL_LONG(&_2, options); - ZEPHIR_INIT_VAR(&decoded); - zephir_json_decode(&decoded, &data, zephir_get_intval(&_0) ); - ZEPHIR_CALL_FUNCTION(&_3, "json_last_error", NULL, 189); + ZVAL_LONG(&_0, 6); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - if (UNEXPECTED(!ZEPHIR_IS_LONG_IDENTICAL(&_3, 0))) { - ZEPHIR_INIT_VAR(&_4$$3); - object_init_ex(&_4$$3, spl_ce_InvalidArgumentException); - ZEPHIR_CALL_FUNCTION(&_5$$3, "json_last_error_msg", NULL, 190); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_6$$3); - ZEPHIR_CONCAT_SV(&_6$$3, "json_decode error: ", &_5$$3); - ZEPHIR_CALL_METHOD(NULL, &_4$$3, "__construct", NULL, 191, &_6$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_4$$3, "phalcon/Encryption/Security/JWT/Token/Parser.zep", 163); - ZEPHIR_MM_RESTORE(); - return; - } - RETURN_CCTOR(&decoded); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Parser, decodeUrl) +static PHP_METHOD(Phalcon_Logger_Logger, log) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, remainder = 0; - zval *input_param = NULL, data, _3, _4, _5, _0$$3, _1$$3, _2$$3; - zval input; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval message, _0; + zval *level, level_sub, *message_param = NULL, *context_param = NULL, intLevel; zval *this_ptr = getThis(); - ZVAL_UNDEF(&input); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&level_sub); + ZVAL_UNDEF(&intLevel); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(input) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_ZVAL(level) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &input_param); - if (UNEXPECTED(Z_TYPE_P(input_param) != IS_STRING && Z_TYPE_P(input_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'input' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(input_param) == IS_STRING)) { - zephir_get_strval(&input, input_param); + zephir_fetch_params(1, 2, 1, &level, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&input); + zephir_get_arrval(&context, context_param); } - remainder = (long) (zephir_safe_mod_long_long(zephir_fast_strlen_ev(&input), 4)); - if (remainder) { - ZEPHIR_INIT_VAR(&_0$$3); - ZVAL_STRING(&_0$$3, "="); - ZVAL_LONG(&_1$$3, (4 - remainder)); - ZEPHIR_CALL_FUNCTION(&_2$$3, "str_repeat", NULL, 1, &_0$$3, &_1$$3); - zephir_check_call_status(); - zephir_concat_self(&input, &_2$$3); - } - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "-_"); - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "+/"); - ZEPHIR_CALL_FUNCTION(&_5, "strtr", NULL, 5, &input, &_3, &_4); + ZEPHIR_CALL_METHOD(&intLevel, this_ptr, "getlevelnumber", NULL, 0, level); zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&data, "base64_decode", NULL, 225, &_5); + zephir_cast_to_string(&_0, &message); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &intLevel, &_0, &context); zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&data)) { - ZEPHIR_INIT_NVAR(&data); - ZVAL_STRING(&data, ""); - } - RETURN_CCTOR(&data); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_Signature) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security\\JWT\\Token, Signature, phalcon, encryption_security_jwt_token_signature, phalcon_encryption_security_jwt_token_abstractitem_ce, phalcon_encryption_security_jwt_token_signature_method_entry, 0); - - return SUCCESS; + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Signature, __construct) +static PHP_METHOD(Phalcon_Logger_Logger, notice) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *hash_param = NULL, *encoded_param = NULL, _0, _1; - zval hash, encoded; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&hash); - ZVAL_UNDEF(&encoded); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) Z_PARAM_OPTIONAL - Z_PARAM_STR(hash) - Z_PARAM_STR(encoded) + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &hash_param, &encoded_param); - if (!hash_param) { - ZEPHIR_INIT_VAR(&hash); - ZVAL_STRING(&hash, ""); - } else { - if (UNEXPECTED(Z_TYPE_P(hash_param) != IS_STRING && Z_TYPE_P(hash_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'hash' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(hash_param) == IS_STRING)) { - zephir_get_strval(&hash, hash_param); - } else { - ZEPHIR_INIT_VAR(&hash); - } - } - if (!encoded_param) { - ZEPHIR_INIT_VAR(&encoded); - ZVAL_STRING(&encoded, ""); - } else { - if (UNEXPECTED(Z_TYPE_P(encoded_param) != IS_STRING && Z_TYPE_P(encoded_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'encoded' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(encoded_param) == IS_STRING)) { - zephir_get_strval(&encoded, encoded_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&encoded); - } + zephir_get_arrval(&context, context_param); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "encoded"); - zephir_update_property_array(this_ptr, SL("data"), &_0, &encoded); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "hash"); - zephir_update_property_array(this_ptr, SL("data"), &_1, &hash); + ZVAL_LONG(&_0, 5); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); + zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Signature, getHash) +static PHP_METHOD(Phalcon_Logger_Logger, warning) { - zval _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("data"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_1, &_0, SL("hash"), PH_NOISY | PH_READONLY, "phalcon/Encryption/Security/JWT/Token/Signature.zep", 35); - RETURN_CTORW(&_1); + + ZVAL_LONG(&_0, 4); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addmessage", NULL, 0, &_0, &message, &context); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } @@ -34716,116 +35027,273 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Signature, getHash) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Token_Token) +ZEPHIR_INIT_CLASS(Phalcon_Logger_LoggerFactory) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Token, Token, phalcon, encryption_security_jwt_token_token, phalcon_encryption_security_jwt_token_token_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger, LoggerFactory, phalcon, logger_loggerfactory, phalcon_factory_abstractconfigfactory_ce, phalcon_logger_loggerfactory_method_entry, 0); - zend_declare_property_null(phalcon_encryption_security_jwt_token_token_ce, SL("claims"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_token_token_ce, SL("headers"), ZEND_ACC_PRIVATE); - zend_declare_property_null(phalcon_encryption_security_jwt_token_token_ce, SL("signature"), ZEND_ACC_PRIVATE); + zend_declare_property_null(phalcon_logger_loggerfactory_ce, SL("adapterFactory"), ZEND_ACC_PRIVATE); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getClaims) +static PHP_METHOD(Phalcon_Logger_LoggerFactory, __construct) { + zval *factory, factory_sub; zval *this_ptr = getThis(); + ZVAL_UNDEF(&factory_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(factory, phalcon_logger_adapterfactory_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "claims"); -} - -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getHeaders) -{ - zval *this_ptr = getThis(); - + zephir_fetch_params_without_memory_grow(1, 0, &factory); - RETURN_MEMBER(getThis(), "headers"); + zephir_update_property_zval(this_ptr, ZEND_STRL("adapterFactory"), factory); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getSignature) +static PHP_METHOD(Phalcon_Logger_LoggerFactory, load) { + zend_string *_7; + zend_ulong _6; + zval data; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *config = NULL, config_sub, adapter, adapterClass, adapterFileName, adapterName, adapterOptions, adapters, name, timezone, options, _0, _1, _2, _3, *_4, _5, _8$$3, _9$$3, _10$$3, _11$$3, _12$$4, _13$$4, _14$$4, _15$$4; zval *this_ptr = getThis(); + ZVAL_UNDEF(&config_sub); + ZVAL_UNDEF(&adapter); + ZVAL_UNDEF(&adapterClass); + ZVAL_UNDEF(&adapterFileName); + ZVAL_UNDEF(&adapterName); + ZVAL_UNDEF(&adapterOptions); + ZVAL_UNDEF(&adapters); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&timezone); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_11$$3); + ZVAL_UNDEF(&_12$$4); + ZVAL_UNDEF(&_13$$4); + ZVAL_UNDEF(&_14$$4); + ZVAL_UNDEF(&_15$$4); + ZVAL_UNDEF(&data); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(config) + ZEND_PARSE_PARAMETERS_END(); +#endif + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &config); + ZEPHIR_SEPARATE_PARAM(config); - RETURN_MEMBER(getThis(), "signature"); + + ZEPHIR_INIT_VAR(&data); + array_init(&data); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkconfig", NULL, 0, config); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(config, &_0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "name"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkconfigelement", NULL, 0, config, &_1); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(config, &_0); + ZEPHIR_OBS_VAR(&name); + zephir_array_fetch_string(&name, config, SL("name"), PH_NOISY, "phalcon/Logger/LoggerFactory.zep", 62); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "timezone"); + ZEPHIR_CALL_METHOD(&timezone, this_ptr, "getarrval", NULL, 0, config, &_1); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_1); + array_init(&_1); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "options"); + ZEPHIR_CALL_METHOD(&options, this_ptr, "getarrval", NULL, 0, config, &_2, &_1); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_2); + array_init(&_2); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "adapters"); + ZEPHIR_CALL_METHOD(&adapters, this_ptr, "getarrval", NULL, 0, &options, &_3, &_2); + zephir_check_call_status(); + zephir_is_iterable(&adapters, 0, "phalcon/Logger/LoggerFactory.zep", 81); + if (Z_TYPE_P(&adapters) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&adapters), _6, _7, _4) + { + ZEPHIR_INIT_NVAR(&adapterName); + if (_7 != NULL) { + ZVAL_STR_COPY(&adapterName, _7); + } else { + ZVAL_LONG(&adapterName, _6); + } + ZEPHIR_INIT_NVAR(&adapter); + ZVAL_COPY(&adapter, _4); + ZEPHIR_INIT_NVAR(&_8$$3); + ZVAL_STRING(&_8$$3, "adapter"); + ZEPHIR_CALL_METHOD(&adapterClass, this_ptr, "getarrval", NULL, 0, &adapter, &_8$$3); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_8$$3); + ZVAL_STRING(&_8$$3, "name"); + ZEPHIR_CALL_METHOD(&adapterFileName, this_ptr, "getarrval", NULL, 0, &adapter, &_8$$3); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_8$$3); + array_init(&_8$$3); + ZEPHIR_INIT_NVAR(&_9$$3); + ZVAL_STRING(&_9$$3, "options"); + ZEPHIR_CALL_METHOD(&adapterOptions, this_ptr, "getarrval", NULL, 0, &adapter, &_9$$3, &_8$$3); + zephir_check_call_status(); + zephir_read_property(&_10$$3, this_ptr, ZEND_STRL("adapterFactory"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_11$$3, &_10$$3, "newinstance", NULL, 0, &adapterClass, &adapterFileName, &adapterOptions); + zephir_check_call_status(); + zephir_array_update_zval(&data, &adapterName, &_11$$3, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &adapters, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &adapters, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&adapterName, &adapters, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&adapter, &adapters, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_12$$4); + ZVAL_STRING(&_12$$4, "adapter"); + ZEPHIR_CALL_METHOD(&adapterClass, this_ptr, "getarrval", NULL, 0, &adapter, &_12$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_12$$4); + ZVAL_STRING(&_12$$4, "name"); + ZEPHIR_CALL_METHOD(&adapterFileName, this_ptr, "getarrval", NULL, 0, &adapter, &_12$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_12$$4); + array_init(&_12$$4); + ZEPHIR_INIT_NVAR(&_13$$4); + ZVAL_STRING(&_13$$4, "options"); + ZEPHIR_CALL_METHOD(&adapterOptions, this_ptr, "getarrval", NULL, 0, &adapter, &_13$$4, &_12$$4); + zephir_check_call_status(); + zephir_read_property(&_14$$4, this_ptr, ZEND_STRL("adapterFactory"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_15$$4, &_14$$4, "newinstance", NULL, 0, &adapterClass, &adapterFileName, &adapterOptions); + zephir_check_call_status(); + zephir_array_update_zval(&data, &adapterName, &_15$$4, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &adapters, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&adapter); + ZEPHIR_INIT_NVAR(&adapterName); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "newinstance", NULL, 0, &name, &data, &timezone); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, __construct) +static PHP_METHOD(Phalcon_Logger_LoggerFactory, newInstance) { - zval *headers, headers_sub, *claims, claims_sub, *signature, signature_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval adapters; + zval *name_param = NULL, *adapters_param = NULL, *timezone = NULL, timezone_sub, __$null; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&headers_sub); - ZVAL_UNDEF(&claims_sub); - ZVAL_UNDEF(&signature_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&timezone_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&adapters); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_OBJECT_OF_CLASS(headers, phalcon_encryption_security_jwt_token_item_ce) - Z_PARAM_OBJECT_OF_CLASS(claims, phalcon_encryption_security_jwt_token_item_ce) - Z_PARAM_OBJECT_OF_CLASS(signature, phalcon_encryption_security_jwt_token_signature_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(adapters) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(timezone, php_date_get_timezone_ce()) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(3, 0, &headers, &claims, &signature); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &name_param, &adapters_param, &timezone); + zephir_get_strval(&name, name_param); + if (!adapters_param) { + ZEPHIR_INIT_VAR(&adapters); + array_init(&adapters); + } else { + zephir_get_arrval(&adapters, adapters_param); + } + if (!timezone) { + timezone = &timezone_sub; + timezone = &__$null; + } - zephir_update_property_zval(this_ptr, ZEND_STRL("headers"), headers); - zephir_update_property_zval(this_ptr, ZEND_STRL("claims"), claims); - zephir_update_property_zval(this_ptr, ZEND_STRL("signature"), signature); + object_init_ex(return_value, phalcon_logger_logger_ce); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 413, &name, &adapters, timezone); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getPayload) +static PHP_METHOD(Phalcon_Logger_LoggerFactory, getArrVal) { - zval _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *collection_param = NULL, *index, index_sub, *defaultValue = NULL, defaultValue_sub, __$null, value; + zval collection; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&collection); + ZVAL_UNDEF(&index_sub); + ZVAL_UNDEF(&defaultValue_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&value); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_ARRAY(collection) + Z_PARAM_ZVAL(index) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(defaultValue) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 1, &collection_param, &index, &defaultValue); + ZEPHIR_OBS_COPY_OR_DUP(&collection, collection_param); + if (!defaultValue) { + defaultValue = &defaultValue_sub; + defaultValue = &__$null; + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("headers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_1, &_0, "getencoded", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_2, this_ptr, ZEND_STRL("claims"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_3, &_2, "getencoded", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CONCAT_VSV(return_value, &_1, ".", &_3); - RETURN_MM(); + + if (UNEXPECTED(!(zephir_array_isset_fetch(&value, &collection, index, 1)))) { + RETVAL_ZVAL(defaultValue, 1, 0); + RETURN_MM(); + } + RETURN_CTOR(&value); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getToken) +static PHP_METHOD(Phalcon_Logger_LoggerFactory, getExceptionClass) { - zval _0, _1, _2; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - - ZEPHIR_MM_GROW(); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getpayload", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getsignature", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_2, &_1, "getencoded", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CONCAT_VSV(return_value, &_0, ".", &_2); - RETURN_MM(); + RETURN_STRING("Phalcon\\Logger\\Exception"); } @@ -34838,24 +35306,26 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Token_Token, getToken) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Signer_AbstractSigner) +ZEPHIR_INIT_CLASS(Phalcon_Logger_LoggerInterface) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Signer, AbstractSigner, phalcon, encryption_security_jwt_signer_abstractsigner, phalcon_encryption_security_jwt_signer_abstractsigner_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Logger, LoggerInterface, phalcon, logger_loggerinterface, phalcon_logger_loggerinterface_method_entry); - zend_declare_property_null(phalcon_encryption_security_jwt_signer_abstractsigner_ce, SL("algorithm"), ZEND_ACC_PROTECTED); - zend_class_implements(phalcon_encryption_security_jwt_signer_abstractsigner_ce, 1, phalcon_encryption_security_jwt_signer_signerinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_AbstractSigner, getAlgorithm) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "algorithm"); -} - +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, alert); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, critical); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, debug); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, emergency); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, error); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, getAdapter); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, getAdapters); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, getLogLevel); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, info); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, log); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, notice); +ZEPHIR_DOC_METHOD(Phalcon_Logger_LoggerInterface, warning); @@ -34866,368 +35336,334 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_AbstractSigner, getAlgo -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Signer_Hmac) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Adapter_AbstractAdapter) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security\\JWT\\Signer, Hmac, phalcon, encryption_security_jwt_signer_hmac, phalcon_encryption_security_jwt_signer_abstractsigner_ce, phalcon_encryption_security_jwt_signer_hmac_method_entry, 0); + ZEPHIR_REGISTER_CLASS(Phalcon\\Logger\\Adapter, AbstractAdapter, phalcon, logger_adapter_abstractadapter, phalcon_logger_adapter_abstractadapter_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_string(phalcon_logger_adapter_abstractadapter_ce, SL("defaultFormatter"), "Phalcon\\Logger\\Formatter\\Line", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_adapter_abstractadapter_ce, SL("formatter"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_logger_adapter_abstractadapter_ce, SL("inTransaction"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_adapter_abstractadapter_ce, SL("queue"), ZEND_ACC_PROTECTED); + phalcon_logger_adapter_abstractadapter_ce->create_object = zephir_init_properties_Phalcon_Logger_Adapter_AbstractAdapter; + zend_class_implements(phalcon_logger_adapter_abstractadapter_ce, 1, phalcon_logger_adapter_adapterinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_Hmac, __construct) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, __destruct) { - zval supported; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *algo_param = NULL; - zval algo; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&algo); - ZVAL_UNDEF(&supported); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR(algo) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_0); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &algo_param); - if (!algo_param) { - ZEPHIR_INIT_VAR(&algo); - ZVAL_STRING(&algo, "sha512"); - } else { - if (UNEXPECTED(Z_TYPE_P(algo_param) != IS_STRING && Z_TYPE_P(algo_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'algo' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(algo_param) == IS_STRING)) { - zephir_get_strval(&algo, algo_param); - } else { - ZEPHIR_INIT_VAR(&algo); - } - } - - ZEPHIR_INIT_VAR(&supported); - zephir_create_array(&supported, 3, 0); - add_assoc_long_ex(&supported, SL("sha512"), 1); - add_assoc_long_ex(&supported, SL("sha384"), 1); - add_assoc_long_ex(&supported, SL("sha256"), 1); - if (!(zephir_array_isset(&supported, &algo))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_encryption_security_jwt_exceptions_unsupportedalgorithmexception_ce, "Unsupported HMAC algorithm", "phalcon/Encryption/Security/JWT/Signer/Hmac.zep", 40); + zephir_read_property(&_0, this_ptr, ZEND_STRL("inTransaction"), PH_NOISY_CC | PH_READONLY); + if (zephir_is_true(&_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "There is an active transaction", "phalcon/Logger/Adapter/AbstractAdapter.zep", 64); return; } - zephir_update_property_zval(this_ptr, ZEND_STRL("algorithm"), &algo); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "close", NULL, 0); + zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_Hmac, getAlgHeader) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, __serialize) { - zval _0, _1, _2, _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZEPHIR_MM_GROW(); - - ZEPHIR_INIT_VAR(&_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("algorithm"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "sha"); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, ""); - zephir_fast_str_replace(&_0, &_2, &_3, &_1); - ZEPHIR_CONCAT_SV(return_value, "HS", &_0); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_logger_exception_ce, "This object cannot be serialized", "phalcon/Logger/Adapter/AbstractAdapter.zep", 75); + return; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_Hmac, sign) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, __unserialize) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *payload_param = NULL, *passphrase_param = NULL; - zval payload, passphrase; + zval *data_param = NULL; + zval data; zval *this_ptr = getThis(); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&passphrase); + ZVAL_UNDEF(&data); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(payload) - Z_PARAM_STR(passphrase) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &payload_param, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(payload_param) != IS_STRING && Z_TYPE_P(payload_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'payload' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(payload_param) == IS_STRING)) { - zephir_get_strval(&payload, payload_param); - } else { - ZEPHIR_INIT_VAR(&payload); - } - if (UNEXPECTED(Z_TYPE_P(passphrase_param) != IS_STRING && Z_TYPE_P(passphrase_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'passphrase' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(passphrase_param) == IS_STRING)) { - zephir_get_strval(&passphrase, passphrase_param); - } else { - ZEPHIR_INIT_VAR(&passphrase); - } + zephir_fetch_params(1, 1, 0, &data_param); + zephir_get_arrval(&data, data_param); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "gethash", NULL, 256, &payload, &passphrase); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "This object cannot be unserialized", "phalcon/Logger/Adapter/AbstractAdapter.zep", 83); + return; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_Hmac, verify) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, add) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *source_param = NULL, *payload_param = NULL, *passphrase_param = NULL, _0; - zval source, payload, passphrase; + zval *item, item_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&passphrase); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&item_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(source) - Z_PARAM_STR(payload) - Z_PARAM_STR(passphrase) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &source_param, &payload_param, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(source_param) != IS_STRING && Z_TYPE_P(source_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'source' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(source_param) == IS_STRING)) { - zephir_get_strval(&source, source_param); - } else { - ZEPHIR_INIT_VAR(&source); - } - if (UNEXPECTED(Z_TYPE_P(payload_param) != IS_STRING && Z_TYPE_P(payload_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'payload' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(payload_param) == IS_STRING)) { - zephir_get_strval(&payload, payload_param); - } else { - ZEPHIR_INIT_VAR(&payload); - } - if (UNEXPECTED(Z_TYPE_P(passphrase_param) != IS_STRING && Z_TYPE_P(passphrase_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'passphrase' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(passphrase_param) == IS_STRING)) { - zephir_get_strval(&passphrase, passphrase_param); - } else { - ZEPHIR_INIT_VAR(&passphrase); - } + zephir_fetch_params_without_memory_grow(1, 0, &item); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "gethash", NULL, 256, &payload, &passphrase); - zephir_check_call_status(); - RETURN_MM_BOOL(zephir_hash_equals(&source, &_0)); + zephir_update_property_array_append(this_ptr, SL("queue"), item); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_Hmac, getHash) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, begin) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *payload_param = NULL, *passphrase_param = NULL, __$true, _0; - zval payload, passphrase; + zval __$true, __$false; zval *this_ptr = getThis(); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&passphrase); ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(payload) - Z_PARAM_STR(passphrase) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_BOOL(&__$false, 0); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &payload_param, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(payload_param) != IS_STRING && Z_TYPE_P(payload_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'payload' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(payload_param) == IS_STRING)) { - zephir_get_strval(&payload, payload_param); - } else { - ZEPHIR_INIT_VAR(&payload); - } - if (UNEXPECTED(Z_TYPE_P(passphrase_param) != IS_STRING && Z_TYPE_P(passphrase_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'passphrase' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(passphrase_param) == IS_STRING)) { - zephir_get_strval(&passphrase, passphrase_param); + + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("inTransaction"), &__$true); } else { - ZEPHIR_INIT_VAR(&passphrase); + zephir_update_property_zval(this_ptr, ZEND_STRL("inTransaction"), &__$false); } + RETURN_THISW(); +} +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, commit) +{ + zval item, queue, _0, *_1, _2; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getalgorithm", NULL, 0); + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&queue); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "checktransaction", NULL, 64); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_FUNCTION("hash_hmac", NULL, 224, &_0, &payload, &passphrase, &__$true); + zephir_read_property(&_0, this_ptr, ZEND_STRL("queue"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&queue, &_0); + zephir_is_iterable(&queue, 0, "phalcon/Logger/Adapter/AbstractAdapter.zep", 132); + if (Z_TYPE_P(&queue) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&queue), _1) + { + ZEPHIR_INIT_NVAR(&item); + ZVAL_COPY(&item, _1); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "process", &_3, 0, &item); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &queue, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, &queue, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&item, &queue, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "process", &_3, 0, &item); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &queue, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&item); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "resettransaction", NULL, 65); zephir_check_call_status(); - RETURN_MM(); + RETURN_THIS(); } +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, getFormatter) +{ + zval _0, _1$$3, _2$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZEPHIR_MM_GROW(); -#ifdef HAVE_CONFIG_H -#endif + zephir_read_property(&_0, this_ptr, ZEND_STRL("formatter"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("defaultFormatter"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&_1$$3, &_2$$3); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("formatter"), &_1$$3); + } + RETURN_MM_MEMBER(getThis(), "formatter"); +} +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, inTransaction) +{ + zval *this_ptr = getThis(); + RETURN_MEMBER(getThis(), "inTransaction"); +} -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Signer_None) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, process) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Encryption\\Security\\JWT\\Signer, None, phalcon, encryption_security_jwt_signer_none, phalcon_encryption_security_jwt_signer_none_method_entry, 0); - - zend_class_implements(phalcon_encryption_security_jwt_signer_none_ce, 1, phalcon_encryption_security_jwt_signer_signerinterface_ce); - return SUCCESS; } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_None, getAlgHeader) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, rollback) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - RETURN_STRING("none"); + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "checktransaction", NULL, 64); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "resettransaction", NULL, 65); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_None, getAlgorithm) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, setFormatter) { + zval *formatter, formatter_sub; zval *this_ptr = getThis(); + ZVAL_UNDEF(&formatter_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(formatter, phalcon_logger_formatter_formatterinterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + zephir_fetch_params_without_memory_grow(1, 0, &formatter); - RETURN_STRING("None"); + zephir_update_property_zval(this_ptr, ZEND_STRL("formatter"), formatter); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_None, sign) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, getFormattedItem) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *payload_param = NULL, *passphrase_param = NULL; - zval payload, passphrase; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *item, item_sub, formatter; zval *this_ptr = getThis(); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&passphrase); + ZVAL_UNDEF(&item_sub); + ZVAL_UNDEF(&formatter); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(payload) - Z_PARAM_STR(passphrase) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &payload_param, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(payload_param) != IS_STRING && Z_TYPE_P(payload_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'payload' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(payload_param) == IS_STRING)) { - zephir_get_strval(&payload, payload_param); - } else { - ZEPHIR_INIT_VAR(&payload); - } - zephir_get_strval(&passphrase, passphrase_param); + zephir_fetch_params(1, 1, 0, &item); - RETURN_MM_STRING(""); + ZEPHIR_CALL_METHOD(&formatter, this_ptr, "getformatter", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&formatter, "format", NULL, 0, item); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_None, verify) +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, checkTransaction) +{ + zval _0; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("inTransaction"), PH_NOISY_CC | PH_READONLY); + if (!ZEPHIR_IS_TRUE_IDENTICAL(&_0)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_logger_exception_ce, "There is no active transaction", "phalcon/Logger/Adapter/AbstractAdapter.zep", 213); + return; + } +} + +static PHP_METHOD(Phalcon_Logger_Adapter_AbstractAdapter, resetTransaction) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *source_param = NULL, *payload_param = NULL, *passphrase_param = NULL, _0; - zval source, payload, passphrase; + zval __$true, __$false, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&payload); - ZVAL_UNDEF(&passphrase); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(source) - Z_PARAM_STR(payload) - Z_PARAM_STR(passphrase) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &source_param, &payload_param, &passphrase_param); - if (UNEXPECTED(Z_TYPE_P(source_param) != IS_STRING && Z_TYPE_P(source_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'source' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(source_param) == IS_STRING)) { - zephir_get_strval(&source, source_param); - } else { - ZEPHIR_INIT_VAR(&source); - } - if (UNEXPECTED(Z_TYPE_P(payload_param) != IS_STRING && Z_TYPE_P(payload_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'payload' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(payload_param) == IS_STRING)) { - zephir_get_strval(&payload, payload_param); - } else { - ZEPHIR_INIT_VAR(&payload); - } - if (UNEXPECTED(Z_TYPE_P(passphrase_param) != IS_STRING && Z_TYPE_P(passphrase_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'passphrase' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(passphrase_param) == IS_STRING)) { - zephir_get_strval(&passphrase, passphrase_param); + + ZEPHIR_INIT_VAR(&_0); + array_init(&_0); + zephir_update_property_zval(this_ptr, ZEND_STRL("queue"), &_0); + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("inTransaction"), &__$true); } else { - ZEPHIR_INIT_VAR(&passphrase); + zephir_update_property_zval(this_ptr, ZEND_STRL("inTransaction"), &__$false); } + ZEPHIR_MM_RESTORE(); +} +zend_object *zephir_init_properties_Phalcon_Logger_Adapter_AbstractAdapter(zend_class_entry *class_type) +{ + zval _0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, ""); - RETURN_MM_BOOL(ZEPHIR_IS_IDENTICAL(&_0, &source)); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("queue"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("queue"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } } @@ -35240,17 +35676,22 @@ static PHP_METHOD(Phalcon_Encryption_Security_JWT_Signer_None, verify) -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Signer_SignerInterface) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Adapter_AdapterInterface) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Encryption\\Security\\JWT\\Signer, SignerInterface, phalcon, encryption_security_jwt_signer_signerinterface, phalcon_encryption_security_jwt_signer_signerinterface_method_entry); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Logger\\Adapter, AdapterInterface, phalcon, logger_adapter_adapterinterface, phalcon_logger_adapter_adapterinterface_method_entry); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Security_JWT_Signer_SignerInterface, getAlgHeader); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Security_JWT_Signer_SignerInterface, getAlgorithm); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Security_JWT_Signer_SignerInterface, sign); -ZEPHIR_DOC_METHOD(Phalcon_Encryption_Security_JWT_Signer_SignerInterface, verify); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, add); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, begin); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, close); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, commit); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, getFormatter); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, inTransaction); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, process); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, rollback); +ZEPHIR_DOC_METHOD(Phalcon_Logger_Adapter_AdapterInterface, setFormatter); @@ -35261,30 +35702,39 @@ ZEPHIR_DOC_METHOD(Phalcon_Encryption_Security_JWT_Signer_SignerInterface, verify -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Exceptions_UnsupportedAlgorithmException) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Adapter_Noop) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security\\JWT\\Exceptions, UnsupportedAlgorithmException, phalcon, encryption_security_jwt_exceptions_unsupportedalgorithmexception, zend_ce_exception, NULL, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Adapter, Noop, phalcon, logger_adapter_noop, phalcon_logger_adapter_abstractadapter_ce, phalcon_logger_adapter_noop_method_entry, 0); - zend_class_implements(phalcon_encryption_security_jwt_exceptions_unsupportedalgorithmexception_ce, 1, zend_ce_throwable); return SUCCESS; } +static PHP_METHOD(Phalcon_Logger_Adapter_Noop, close) +{ + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H -#endif + RETURN_BOOL(1); +} +static PHP_METHOD(Phalcon_Logger_Adapter_Noop, process) +{ + zval *item, item_sub; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&item_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + zephir_fetch_params_without_memory_grow(1, 0, &item); -ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Exceptions_ValidatorException) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Encryption\\Security\\JWT\\Exceptions, ValidatorException, phalcon, encryption_security_jwt_exceptions_validatorexception, zend_ce_exception, NULL, 0); - zend_class_implements(phalcon_encryption_security_jwt_exceptions_validatorexception_ce, 1, zend_ce_throwable); - return SUCCESS; } @@ -35297,472 +35747,199 @@ ZEPHIR_INIT_CLASS(Phalcon_Encryption_Security_JWT_Exceptions_ValidatorException) -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Application) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Adapter_Stream) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Application, phalcon, mvc_application, phalcon_application_abstractapplication_ce, phalcon_mvc_application_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Adapter, Stream, phalcon, logger_adapter_stream, phalcon_logger_adapter_abstractadapter_ce, phalcon_logger_adapter_stream_method_entry, 0); - zend_declare_property_bool(phalcon_mvc_application_ce, SL("implicitView"), 1, ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_application_ce, SL("sendCookies"), 1, ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_application_ce, SL("sendHeaders"), 1, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_adapter_stream_ce, SL("handler"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_logger_adapter_stream_ce, SL("mode"), "ab", ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_adapter_stream_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_logger_adapter_stream_ce, SL("options"), ZEND_ACC_PROTECTED); return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Application, handle) +static PHP_METHOD(Phalcon_Logger_Adapter_Stream, getName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "name"); +} + +static PHP_METHOD(Phalcon_Logger_Adapter_Stream, __construct) { - zval _17$$20; - zend_class_entry *_6$$7; - zend_bool returnedResponse = 0, _1, _10$$6, _13$$11, _31$$30, _33$$30; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *uri_param = NULL, __$false, container, eventsManager, router, dispatcher, response, view, module, moduleObject, moduleName, className, path, implicitView, controller, possibleResponse, renderStatus, matchedRoute, match, _0, _2, _3, _4, _21, _22, _23, _24, _41, _5$$7, _7$$6, _8$$8, _9$$8, _11$$12, _12$$12, _14$$18, _15$$18, _16$$15, _18$$22, _19$$23, _20$$23, _25$$25, _26$$25, _27$$27, _28$$27, _29$$29, _30$$29, _32$$31, _34$$34, _35$$35, _36$$35, _37$$38, _38$$38, _39$$39, _40$$40; - zval uri; + zval options; + zval *name_param = NULL, *options_param = NULL, mode, _0, _1; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&uri); - ZVAL_BOOL(&__$false, 0); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&dispatcher); - ZVAL_UNDEF(&response); - ZVAL_UNDEF(&view); - ZVAL_UNDEF(&module); - ZVAL_UNDEF(&moduleObject); - ZVAL_UNDEF(&moduleName); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&path); - ZVAL_UNDEF(&implicitView); - ZVAL_UNDEF(&controller); - ZVAL_UNDEF(&possibleResponse); - ZVAL_UNDEF(&renderStatus); - ZVAL_UNDEF(&matchedRoute); - ZVAL_UNDEF(&match); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&mode); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_21); - ZVAL_UNDEF(&_22); - ZVAL_UNDEF(&_23); - ZVAL_UNDEF(&_24); - ZVAL_UNDEF(&_41); - ZVAL_UNDEF(&_5$$7); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_8$$8); - ZVAL_UNDEF(&_9$$8); - ZVAL_UNDEF(&_11$$12); - ZVAL_UNDEF(&_12$$12); - ZVAL_UNDEF(&_14$$18); - ZVAL_UNDEF(&_15$$18); - ZVAL_UNDEF(&_16$$15); - ZVAL_UNDEF(&_18$$22); - ZVAL_UNDEF(&_19$$23); - ZVAL_UNDEF(&_20$$23); - ZVAL_UNDEF(&_25$$25); - ZVAL_UNDEF(&_26$$25); - ZVAL_UNDEF(&_27$$27); - ZVAL_UNDEF(&_28$$27); - ZVAL_UNDEF(&_29$$29); - ZVAL_UNDEF(&_30$$29); - ZVAL_UNDEF(&_32$$31); - ZVAL_UNDEF(&_34$$34); - ZVAL_UNDEF(&_35$$35); - ZVAL_UNDEF(&_36$$35); - ZVAL_UNDEF(&_37$$38); - ZVAL_UNDEF(&_38$$38); - ZVAL_UNDEF(&_39$$39); - ZVAL_UNDEF(&_40$$40); - ZVAL_UNDEF(&_17$$20); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(uri) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &uri_param); - if (UNEXPECTED(Z_TYPE_P(uri_param) != IS_STRING && Z_TYPE_P(uri_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'uri' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(uri_param) == IS_STRING)) { - zephir_get_strval(&uri, uri_param); + zephir_fetch_params(1, 1, 1, &name_param, &options_param); + zephir_get_strval(&name, name_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - ZEPHIR_INIT_VAR(&uri); + zephir_get_arrval(&options, options_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) == IS_NULL) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_application_exception_ce, "A dependency injection container is required to access internal services", "phalcon/Mvc/Application.zep", 100); - return; - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_0); - _1 = Z_TYPE_P(&eventsManager) != IS_NULL; - if (_1) { - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "application:boot"); - ZEPHIR_CALL_METHOD(&_2, &eventsManager, "fire", NULL, 0, &_3, this_ptr); - zephir_check_call_status(); - _1 = ZEPHIR_IS_FALSE_IDENTICAL(&_2); - } - if (_1) { - RETURN_MM_BOOL(0); + if (1 == zephir_array_isset_string(&options, SL("mode"))) { + ZEPHIR_OBS_VAR(&mode); + zephir_array_fetch_string(&mode, &options, SL("mode"), PH_NOISY, "phalcon/Logger/Adapter/Stream.zep", 82); + } else { + ZEPHIR_INIT_NVAR(&mode); + ZVAL_STRING(&mode, "ab"); } - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "router"); - ZEPHIR_CALL_METHOD(&_4, &container, "getshared", NULL, 0, &_3); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&router, &_4); - ZEPHIR_CALL_METHOD(NULL, &router, "handle", NULL, 0, &uri); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "r"); + ZEPHIR_CALL_FUNCTION(&_1, "mb_strpos", NULL, 82, &mode, &_0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&matchedRoute, &router, "getmatchedroute", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&matchedRoute) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&match, &matchedRoute, "getmatch", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&match) != IS_NULL) { - if (zephir_is_instance_of(&match, SL("Closure"))) { - _6$$7 = zephir_fetch_class_str_ex(SL("Closure"), ZEND_FETCH_CLASS_AUTO); - ZEPHIR_CALL_CE_STATIC(&_5$$7, _6$$7, "bind", NULL, 0, &match, &container); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&match, &_5$$7); - } - ZEPHIR_CALL_METHOD(&_7$$6, &router, "getparams", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&possibleResponse); - ZEPHIR_CALL_USER_FUNC_ARRAY(&possibleResponse, &match, &_7$$6); - zephir_check_call_status(); - if (Z_TYPE_P(&possibleResponse) == IS_STRING) { - ZEPHIR_INIT_VAR(&_9$$8); - ZVAL_STRING(&_9$$8, "response"); - ZEPHIR_CALL_METHOD(&_8$$8, &container, "getshared", NULL, 0, &_9$$8); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_8$$8); - ZEPHIR_CALL_METHOD(NULL, &response, "setcontent", NULL, 0, &possibleResponse); - zephir_check_call_status(); - RETURN_CCTOR(&response); - } - _10$$6 = Z_TYPE_P(&possibleResponse) == IS_OBJECT; - if (_10$$6) { - _10$$6 = zephir_instance_of_ev(&possibleResponse, phalcon_http_responseinterface_ce); - } - if (_10$$6) { - ZEPHIR_CALL_METHOD(NULL, &possibleResponse, "sendheaders", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &possibleResponse, "sendcookies", NULL, 0); - zephir_check_call_status(); - RETURN_CCTOR(&possibleResponse); - } - } - } - ZEPHIR_CALL_METHOD(&moduleName, &router, "getmodulename", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&moduleName))) { - ZEPHIR_OBS_NVAR(&moduleName); - zephir_read_property(&moduleName, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC); - } - ZEPHIR_INIT_VAR(&moduleObject); - ZVAL_NULL(&moduleObject); - if (zephir_is_true(&moduleName)) { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_12$$12); - ZVAL_STRING(&_12$$12, "application:beforeStartModule"); - ZEPHIR_CALL_METHOD(&_11$$12, &eventsManager, "fire", NULL, 0, &_12$$12, this_ptr, &moduleName); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_11$$12)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(&module, this_ptr, "getmodule", NULL, 0, &moduleName); - zephir_check_call_status(); - _13$$11 = Z_TYPE_P(&module) != IS_ARRAY; - if (_13$$11) { - _13$$11 = Z_TYPE_P(&module) != IS_OBJECT; - } - if (UNEXPECTED(_13$$11)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_application_exception_ce, "Invalid module definition", "phalcon/Mvc/Application.zep", 196); - return; - } - if (Z_TYPE_P(&module) == IS_ARRAY) { - ZEPHIR_OBS_VAR(&className); - if (!(zephir_array_isset_string_fetch(&className, &module, SL("className"), 0))) { - ZEPHIR_INIT_NVAR(&className); - ZVAL_STRING(&className, "Module"); - } - ZEPHIR_OBS_VAR(&path); - if (zephir_array_isset_string_fetch(&path, &module, SL("path"), 0)) { - if (UNEXPECTED(!((zephir_file_exists(&path) == SUCCESS)))) { - ZEPHIR_INIT_VAR(&_14$$18); - object_init_ex(&_14$$18, phalcon_mvc_application_exception_ce); - ZEPHIR_INIT_VAR(&_15$$18); - ZEPHIR_CONCAT_SVS(&_15$$18, "Module definition path '", &path, "' doesn't exist"); - ZEPHIR_CALL_METHOD(NULL, &_14$$18, "__construct", NULL, 29, &_15$$18); - zephir_check_call_status(); - zephir_throw_exception_debug(&_14$$18, "phalcon/Mvc/Application.zep", 218); - ZEPHIR_MM_RESTORE(); - return; - } - if (!(zephir_class_exists(&className, zephir_is_true(&__$false) ))) { - if (zephir_require_once_zval(&path) == FAILURE) { - RETURN_MM_NULL(); - } - } - } - ZEPHIR_CALL_METHOD(&_16$$15, &container, "get", NULL, 0, &className); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&moduleObject, &_16$$15); - ZEPHIR_CALL_METHOD(NULL, &moduleObject, "registerautoloaders", NULL, 0, &container); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &moduleObject, "registerservices", NULL, 0, &container); - zephir_check_call_status(); - } else { - if (UNEXPECTED(!((zephir_is_instance_of(&module, SL("Closure")))))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_application_exception_ce, "Invalid module definition", "phalcon/Mvc/Application.zep", 239); - return; - } - ZEPHIR_INIT_VAR(&_17$$20); - zephir_create_array(&_17$$20, 1, 0); - zephir_array_fast_append(&_17$$20, &container); - ZEPHIR_INIT_NVAR(&moduleObject); - ZEPHIR_CALL_USER_FUNC_ARRAY(&moduleObject, &module, &_17$$20); - zephir_check_call_status(); - } - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_18$$22); - ZVAL_STRING(&_18$$22, "application:afterStartModule"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_18$$22, this_ptr, &moduleObject); - zephir_check_call_status(); - } - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("implicitView"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&implicitView, &_0); - if (ZEPHIR_IS_TRUE_IDENTICAL(&implicitView)) { - ZEPHIR_INIT_VAR(&_20$$23); - ZVAL_STRING(&_20$$23, "view"); - ZEPHIR_CALL_METHOD(&_19$$23, &container, "getshared", NULL, 0, &_20$$23); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&view, &_19$$23); - } - ZEPHIR_INIT_NVAR(&_3); - ZVAL_STRING(&_3, "dispatcher"); - ZEPHIR_CALL_METHOD(&_4, &container, "getshared", NULL, 0, &_3); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&dispatcher, &_4); - ZEPHIR_CALL_METHOD(&_4, &router, "getmodulename", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setmodulename", NULL, 0, &_4); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_21, &router, "getnamespacename", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setnamespacename", NULL, 0, &_21); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_22, &router, "getcontrollername", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setcontrollername", NULL, 0, &_22); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_23, &router, "getactionname", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setactionname", NULL, 0, &_23); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_24, &router, "getparams", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &dispatcher, "setparams", NULL, 0, &_24); - zephir_check_call_status(); - if (ZEPHIR_IS_TRUE_IDENTICAL(&implicitView)) { - ZEPHIR_CALL_METHOD(NULL, &view, "start", NULL, 0); - zephir_check_call_status(); - } - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_26$$25); - ZVAL_STRING(&_26$$25, "application:beforeHandleRequest"); - ZEPHIR_CALL_METHOD(&_25$$25, &eventsManager, "fire", NULL, 0, &_26$$25, this_ptr, &dispatcher); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_25$$25)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(&controller, &dispatcher, "dispatch", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&possibleResponse, &dispatcher, "getreturnedvalue", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&possibleResponse)) { - ZEPHIR_INIT_VAR(&_28$$27); - ZVAL_STRING(&_28$$27, "response"); - ZEPHIR_CALL_METHOD(&_27$$27, &container, "getshared", NULL, 0, &_28$$27); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_27$$27); - } else { - if (Z_TYPE_P(&possibleResponse) == IS_STRING) { - ZEPHIR_INIT_VAR(&_30$$29); - ZVAL_STRING(&_30$$29, "response"); - ZEPHIR_CALL_METHOD(&_29$$29, &container, "getshared", NULL, 0, &_30$$29); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_29$$29); - ZEPHIR_CALL_METHOD(NULL, &response, "setcontent", NULL, 0, &possibleResponse); - zephir_check_call_status(); - } else { - _31$$30 = (Z_TYPE_P(&possibleResponse) == IS_OBJECT); - if (_31$$30) { - _31$$30 = (zephir_instance_of_ev(&possibleResponse, phalcon_http_responseinterface_ce)); - } - returnedResponse = _31$$30; - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_32$$31); - ZVAL_STRING(&_32$$31, "application:afterHandleRequest"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_32$$31, this_ptr, &controller); - zephir_check_call_status(); - } - _33$$30 = returnedResponse == 0; - if (_33$$30) { - _33$$30 = ZEPHIR_IS_TRUE_IDENTICAL(&implicitView); - } - if (_33$$30) { - if (Z_TYPE_P(&controller) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&renderStatus); - ZVAL_BOOL(&renderStatus, 1); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_34$$34); - ZVAL_STRING(&_34$$34, "application:viewRender"); - ZEPHIR_CALL_METHOD(&renderStatus, &eventsManager, "fire", NULL, 0, &_34$$34, this_ptr, &view); - zephir_check_call_status(); - } - if (!ZEPHIR_IS_FALSE_IDENTICAL(&renderStatus)) { - ZEPHIR_CALL_METHOD(&_35$$35, &dispatcher, "getcontrollername", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_36$$35, &dispatcher, "getactionname", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &view, "render", NULL, 0, &_35$$35, &_36$$35); - zephir_check_call_status(); - } - } - } - if (ZEPHIR_IS_TRUE_IDENTICAL(&implicitView)) { - ZEPHIR_CALL_METHOD(NULL, &view, "finish", NULL, 0); - zephir_check_call_status(); - } - if (returnedResponse == 1) { - ZEPHIR_CPY_WRT(&response, &possibleResponse); - } else { - ZEPHIR_INIT_VAR(&_38$$38); - ZVAL_STRING(&_38$$38, "response"); - ZEPHIR_CALL_METHOD(&_37$$38, &container, "getshared", NULL, 0, &_38$$38); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_37$$38); - if (ZEPHIR_IS_TRUE_IDENTICAL(&implicitView)) { - ZEPHIR_CALL_METHOD(&_39$$39, &view, "getcontent", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &response, "setcontent", NULL, 0, &_39$$39); - zephir_check_call_status(); - } - } - } - } - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_40$$40); - ZVAL_STRING(&_40$$40, "application:beforeSendResponse"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_40$$40, this_ptr, &response); - zephir_check_call_status(); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("sendHeaders"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_0)) { - ZEPHIR_CALL_METHOD(NULL, &response, "sendheaders", NULL, 0); - zephir_check_call_status(); - } - zephir_read_property(&_41, this_ptr, ZEND_STRL("sendCookies"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_41)) { - ZEPHIR_CALL_METHOD(NULL, &response, "sendcookies", NULL, 0); - zephir_check_call_status(); + if (!ZEPHIR_IS_FALSE_IDENTICAL(&_1)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_logger_exception_ce, "Adapter cannot be opened in read mode", "phalcon/Logger/Adapter/Stream.zep", 84); + return; } - RETURN_CCTOR(&response); + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("mode"), &mode); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Application, sendCookiesOnHandleRequest) +static PHP_METHOD(Phalcon_Logger_Adapter_Stream, close) { - zval *sendCookies_param = NULL, __$true, __$false; - zend_bool sendCookies; + zend_bool result; + zval __$null, _0, _1$$3; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(sendCookies) - ZEND_PARSE_PARAMETERS_END(); -#endif - + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); - zephir_fetch_params_without_memory_grow(1, 0, &sendCookies_param); - sendCookies = zephir_get_boolval(sendCookies_param); - if (sendCookies) { - zephir_update_property_zval(this_ptr, ZEND_STRL("sendCookies"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("sendCookies"), &__$false); + result = 1; + zephir_read_property(&_0, this_ptr, ZEND_STRL("handler"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_RESOURCE) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("handler"), PH_NOISY_CC | PH_READONLY); + result = zephir_fclose(&_1$$3); } - RETURN_THISW(); + zephir_update_property_zval(this_ptr, ZEND_STRL("handler"), &__$null); + RETURN_BOOL(result); } -static PHP_METHOD(Phalcon_Mvc_Application, sendHeadersOnHandleRequest) +static PHP_METHOD(Phalcon_Logger_Adapter_Stream, process) { - zval *sendHeaders_param = NULL, __$true, __$false; - zend_bool sendHeaders; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *item, item_sub, __$null, message, _0, _9, _10, _11, _1$$3, _2$$3, _3$$3, _4$$3, _5$$4, _6$$4, _7$$4, _8$$4; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&item_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(sendHeaders) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &sendHeaders_param); - sendHeaders = zephir_get_boolval(sendHeaders_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &item); - if (sendHeaders) { - zephir_update_property_zval(this_ptr, ZEND_STRL("sendHeaders"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("sendHeaders"), &__$false); + zephir_read_property(&_0, this_ptr, ZEND_STRL("handler"), PH_NOISY_CC | PH_READONLY); + if (!(Z_TYPE_P(&_0) == IS_RESOURCE)) { + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("mode"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "phpfopen", NULL, 0, &_2$$3, &_3$$3); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("handler"), &_1$$3); + zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("handler"), PH_NOISY_CC | PH_READONLY); + if (!(Z_TYPE_P(&_4$$3) == IS_RESOURCE)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("handler"), &__$null); + ZEPHIR_INIT_VAR(&_5$$4); + object_init_ex(&_5$$4, spl_ce_LogicException); + zephir_read_property(&_6$$4, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_7$$4, this_ptr, ZEND_STRL("mode"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_8$$4); + ZEPHIR_CONCAT_SVSVS(&_8$$4, "The file '", &_6$$4, "' cannot be opened with mode '", &_7$$4, "'"); + ZEPHIR_CALL_METHOD(NULL, &_5$$4, "__construct", NULL, 408, &_8$$4); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5$$4, "phalcon/Logger/Adapter/Stream.zep", 128); + ZEPHIR_MM_RESTORE(); + return; + } } - RETURN_THISW(); + ZEPHIR_CALL_METHOD(&_9, this_ptr, "getformatteditem", NULL, 0, item); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_10); + ZEPHIR_GET_CONSTANT(&_10, "PHP_EOL"); + ZEPHIR_INIT_VAR(&message); + ZEPHIR_CONCAT_VV(&message, &_9, &_10); + zephir_read_property(&_11, this_ptr, ZEND_STRL("handler"), PH_NOISY_CC | PH_READONLY); + zephir_fwrite(NULL, &_11, &message); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Application, useImplicitView) +static PHP_METHOD(Phalcon_Logger_Adapter_Stream, phpFopen) { - zval *implicitView_param = NULL, __$true, __$false; - zend_bool implicitView; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *filename_param = NULL, *mode_param = NULL; + zval filename, mode; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&filename); + ZVAL_UNDEF(&mode); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(implicitView) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(filename) + Z_PARAM_STR(mode) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &implicitView_param); - implicitView = zephir_get_boolval(implicitView_param); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &filename_param, &mode_param); + zephir_get_strval(&filename, filename_param); + zephir_get_strval(&mode, mode_param); - if (implicitView) { - zephir_update_property_zval(this_ptr, ZEND_STRL("implicitView"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("implicitView"), &__$false); - } - RETURN_THISW(); + ZEPHIR_RETURN_CALL_FUNCTION("fopen", NULL, 135, &filename, &mode); + zephir_check_call_status(); + RETURN_MM(); } @@ -35775,397 +35952,441 @@ static PHP_METHOD(Phalcon_Mvc_Application, useImplicitView) -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Controller) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Adapter_Syslog) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Controller, phalcon, mvc_controller, phalcon_di_injectable_ce, phalcon_mvc_controller_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Adapter, Syslog, phalcon, logger_adapter_syslog, phalcon_logger_adapter_abstractadapter_ce, phalcon_logger_adapter_syslog_method_entry, 0); - zend_class_implements(phalcon_mvc_controller_ce, 1, phalcon_mvc_controllerinterface_ce); + zend_declare_property_long(phalcon_logger_adapter_syslog_ce, SL("facility"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_logger_adapter_syslog_ce, SL("name"), "", ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_logger_adapter_syslog_ce, SL("opened"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_logger_adapter_syslog_ce, SL("option"), 0, ZEND_ACC_PROTECTED); return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Controller, __construct) +static PHP_METHOD(Phalcon_Logger_Adapter_Syslog, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval options; + zval *name_param = NULL, *options_param = NULL, facility, option; + zval name; zval *this_ptr = getThis(); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&facility); + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&options); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &name_param, &options_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + zephir_get_arrval(&options, options_param); + } - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("onconstruct")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "onconstruct", NULL, 0); - zephir_check_call_status(); + + ZEPHIR_OBS_VAR(&facility); + if (!(zephir_array_isset_string_fetch(&facility, &options, SL("facility"), 0))) { + ZEPHIR_INIT_NVAR(&facility); + ZVAL_LONG(&facility, 8); + } + ZEPHIR_OBS_VAR(&option); + if (!(zephir_array_isset_string_fetch(&option, &options, SL("option"), 0))) { + ZEPHIR_INIT_NVAR(&option); + ZVAL_LONG(&option, 4); } + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("option"), &option); + zephir_update_property_zval(this_ptr, ZEND_STRL("facility"), &facility); ZEPHIR_MM_RESTORE(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_ControllerInterface) +static PHP_METHOD(Phalcon_Logger_Adapter_Syslog, close) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, ControllerInterface, phalcon, mvc_controllerinterface, NULL); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Dispatcher) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Dispatcher, phalcon, mvc_dispatcher, phalcon_dispatcher_abstractdispatcher_ce, phalcon_mvc_dispatcher_method_entry, 0); + ZEPHIR_MM_GROW(); - zend_declare_property_string(phalcon_mvc_dispatcher_ce, SL("defaultAction"), "index", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_dispatcher_ce, SL("defaultHandler"), "index", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_dispatcher_ce, SL("handlerSuffix"), "Controller", ZEND_ACC_PROTECTED); - zend_class_implements(phalcon_mvc_dispatcher_ce, 1, phalcon_mvc_dispatcherinterface_ce); - return SUCCESS; + zephir_read_property(&_0, this_ptr, ZEND_STRL("opened"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_is_true(&_0))) { + RETURN_MM_BOOL(1); + } + ZEPHIR_RETURN_CALL_FUNCTION("closelog", NULL, 409); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, forward) +static PHP_METHOD(Phalcon_Logger_Adapter_Syslog, process) { + zval _6$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_2 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *forward_param = NULL, eventsManager, _0, _1$$3; - zval forward; + zval *item, item_sub, __$true, __$false, level, message, result, _0, _1, _2, _9, _3$$3, _4$$3, _5$$3, _7$$3, _8$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&forward); - ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&item_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&level); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_6$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(forward) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &forward_param); - zephir_get_arrval(&forward, forward_param); + zephir_fetch_params(1, 1, 0, &item); - zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_0); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "dispatch:beforeForward"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_1$$3, this_ptr, &forward); + ZEPHIR_CALL_METHOD(&message, this_ptr, "getformatteditem", NULL, 0, item); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("option"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_2, this_ptr, ZEND_STRL("facility"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, this_ptr, "openlog", NULL, 0, &_0, &_1, &_2); + zephir_check_call_status(); + if (!zephir_is_true(&result)) { + ZEPHIR_INIT_VAR(&_3$$3); + object_init_ex(&_3$$3, spl_ce_LogicException); + zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("name"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&_5$$3); + zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("facility"), PH_NOISY_CC); + zephir_cast_to_string(&_6$$3, &_5$$3); + ZEPHIR_INIT_VAR(&_7$$3); + ZVAL_STRING(&_7$$3, "Cannot open syslog for name [%s] and facility [%s]"); + ZEPHIR_CALL_FUNCTION(&_8$$3, "sprintf", NULL, 113, &_7$$3, &_4$$3, &_6$$3); zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 408, &_8$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_3$$3, "phalcon/Logger/Adapter/Syslog.zep", 106); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_CALL_PARENT(NULL, phalcon_mvc_dispatcher_ce, getThis(), "forward", &_2, 0, &forward); + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("opened"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("opened"), &__$false); + } + ZEPHIR_CALL_METHOD(&_9, item, "getlevel", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&level, this_ptr, "logleveltosyslog", NULL, 410, &_9); + zephir_check_call_status(); + ZEPHIR_CALL_FUNCTION(NULL, "syslog", NULL, 411, &level, &message); zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getActiveController) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "activeHandler"); -} - -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getControllerClass) +static PHP_METHOD(Phalcon_Logger_Adapter_Syslog, openlog) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long option, facility, ZEPHIR_LAST_CALL_STATUS; + zval *ident_param = NULL, *option_param = NULL, *facility_param = NULL, _0, _1; + zval ident; zval *this_ptr = getThis(); + ZVAL_UNDEF(&ident); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(ident) + Z_PARAM_LONG(option) + Z_PARAM_LONG(facility) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 3, 0, &ident_param, &option_param, &facility_param); + zephir_get_strval(&ident, ident_param); + option = zephir_get_intval(option_param); + facility = zephir_get_intval(facility_param); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "gethandlerclass", NULL, 0); + + ZVAL_LONG(&_0, option); + ZVAL_LONG(&_1, facility); + ZEPHIR_RETURN_CALL_FUNCTION("openlog", NULL, 412, &ident, &_0, &_1); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getControllerName) +static PHP_METHOD(Phalcon_Logger_Adapter_Syslog, logLevelToSyslog) { + zval levels; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *level_param = NULL, result; + zend_long level; zval *this_ptr = getThis(); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&levels); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(level) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "handlerName"); -} + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &level_param); + level = zephir_get_intval(level_param); -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getLastController) -{ - zval *this_ptr = getThis(); + ZEPHIR_INIT_VAR(&levels); + zephir_create_array(&levels, 9, 0); + add_index_long(&levels, 2, 1); + add_index_long(&levels, 1, 2); + add_index_long(&levels, 8, 3); + add_index_long(&levels, 7, 7); + add_index_long(&levels, 0, 0); + add_index_long(&levels, 3, 3); + add_index_long(&levels, 6, 6); + add_index_long(&levels, 5, 5); + add_index_long(&levels, 4, 4); + ZEPHIR_OBS_VAR(&result); + if (!(zephir_array_isset_long_fetch(&result, &levels, level, 0))) { + ZEPHIR_INIT_NVAR(&result); + ZVAL_LONG(&result, 3); + } + RETURN_CCTOR(&result); +} - RETURN_MEMBER(getThis(), "lastHandler"); -} -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getPreviousActionName) -{ - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - RETURN_MEMBER(getThis(), "previousActionName"); -} -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getPreviousControllerName) -{ - zval *this_ptr = getThis(); +ZEPHIR_INIT_CLASS(Phalcon_Logger_Formatter_AbstractFormatter) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Formatter, AbstractFormatter, phalcon, logger_formatter_abstractformatter, phalcon_support_helper_str_abstractstr_ce, phalcon_logger_formatter_abstractformatter_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - RETURN_MEMBER(getThis(), "previousHandlerName"); + zend_declare_property_string(phalcon_logger_formatter_abstractformatter_ce, SL("dateFormat"), "c", ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_logger_formatter_abstractformatter_ce, 1, phalcon_logger_formatter_formatterinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, getPreviousNamespaceName) +static PHP_METHOD(Phalcon_Logger_Formatter_AbstractFormatter, getDateFormat) { zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "previousNamespaceName"); + RETURN_MEMBER(getThis(), "dateFormat"); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, setControllerName) +static PHP_METHOD(Phalcon_Logger_Formatter_AbstractFormatter, setDateFormat) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *controllerName_param = NULL; - zval controllerName; + zval *dateFormat_param = NULL; + zval dateFormat; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerName); + ZVAL_UNDEF(&dateFormat); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(controllerName) + Z_PARAM_STR(dateFormat) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &controllerName_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); - } else { - ZEPHIR_INIT_VAR(&controllerName); - } + zephir_fetch_params(1, 1, 0, &dateFormat_param); + zephir_get_strval(&dateFormat, dateFormat_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("handlerName"), &controllerName); - ZEPHIR_MM_RESTORE(); + zephir_update_property_zval(this_ptr, ZEND_STRL("dateFormat"), &dateFormat); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, setControllerSuffix) +static PHP_METHOD(Phalcon_Logger_Formatter_AbstractFormatter, getFormattedDate) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *controllerSuffix_param = NULL; - zval controllerSuffix; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *item, item_sub, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerSuffix); + ZVAL_UNDEF(&item_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(controllerSuffix) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &controllerSuffix_param); - if (UNEXPECTED(Z_TYPE_P(controllerSuffix_param) != IS_STRING && Z_TYPE_P(controllerSuffix_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerSuffix' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerSuffix_param) == IS_STRING)) { - zephir_get_strval(&controllerSuffix, controllerSuffix_param); - } else { - ZEPHIR_INIT_VAR(&controllerSuffix); - } + zephir_fetch_params(1, 1, 0, &item); - zephir_update_property_zval(this_ptr, ZEND_STRL("handlerSuffix"), &controllerSuffix); - ZEPHIR_MM_RESTORE(); + ZEPHIR_CALL_METHOD(&_0, item, "getdatetime", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dateFormat"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "format", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, setDefaultController) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Logger_Formatter_FormatterInterface) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *controllerName_param = NULL; - zval controllerName; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Logger\\Formatter, FormatterInterface, phalcon, logger_formatter_formatterinterface, phalcon_logger_formatter_formatterinterface_method_entry); - ZVAL_UNDEF(&controllerName); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(controllerName) - ZEND_PARSE_PARAMETERS_END(); + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_Logger_Formatter_FormatterInterface, format); + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &controllerName_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); - } else { - ZEPHIR_INIT_VAR(&controllerName); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultHandler"), &controllerName); - ZEPHIR_MM_RESTORE(); + +ZEPHIR_INIT_CLASS(Phalcon_Logger_Formatter_Json) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Formatter, Json, phalcon, logger_formatter_json, phalcon_logger_formatter_abstractformatter_ce, phalcon_logger_formatter_json_method_entry, 0); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, handleException) +static PHP_METHOD(Phalcon_Logger_Formatter_Json, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *exception, exception_sub, eventsManager, _0, _1$$3, _2$$3; + zval *dateFormat_param = NULL; + zval dateFormat; zval *this_ptr = getThis(); - ZVAL_UNDEF(&exception_sub); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&dateFormat); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(exception, zend_ce_exception) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(dateFormat) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &exception); + zephir_fetch_params(1, 0, 1, &dateFormat_param); + if (!dateFormat_param) { + ZEPHIR_INIT_VAR(&dateFormat); + ZVAL_STRING(&dateFormat, "c"); + } else { + zephir_get_strval(&dateFormat, dateFormat_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_0); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "dispatch:beforeException"); - ZEPHIR_CALL_METHOD(&_1$$3, &eventsManager, "fire", NULL, 0, &_2$$3, this_ptr, exception); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$3)) { - RETURN_MM_BOOL(0); - } - } + zephir_update_property_zval(this_ptr, ZEND_STRL("dateFormat"), &dateFormat); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Dispatcher, throwDispatchException) +static PHP_METHOD(Phalcon_Logger_Formatter_Json, format) { + zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long exceptionCode, ZEPHIR_LAST_CALL_STATUS; - zval *message_param = NULL, *exceptionCode_param = NULL, container, response, exception, _0, _4, _5, _1$$3, _2$$3, _3$$3; - zval message; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *item, item_sub, message, options, _0, _1, _3; zval *this_ptr = getThis(); + ZVAL_UNDEF(&item_sub); ZVAL_UNDEF(&message); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&response); - ZVAL_UNDEF(&exception); + ZVAL_UNDEF(&options); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(message) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(exceptionCode) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &message_param, &exceptionCode_param); - if (UNEXPECTED(Z_TYPE_P(message_param) != IS_STRING && Z_TYPE_P(message_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'message' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(message_param) == IS_STRING)) { - zephir_get_strval(&message, message_param); - } else { - ZEPHIR_INIT_VAR(&message); - } - if (!exceptionCode_param) { - exceptionCode = 0; - } else { - exceptionCode = zephir_get_intval(exceptionCode_param); - } + zephir_fetch_params(1, 1, 0, &item); - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_mvc_dispatcher_exception_ce); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "A dependency injection container is required to access the 'response' service"); - ZVAL_LONG(&_3$$3, 0); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 29, &_2$$3, &_3$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_1$$3, "phalcon/Mvc/Dispatcher.zep", 228); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_5); - ZVAL_STRING(&_5, "response"); - ZEPHIR_CALL_METHOD(&_4, &container, "getshared", NULL, 0, &_5); + ZEPHIR_INIT_VAR(&options); + ZVAL_LONG(&options, (((((1 + 4) + 2) + 8) + 64) + 4194304)); + ZEPHIR_CALL_METHOD(&_0, item, "getmessage", NULL, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_4); - ZVAL_LONG(&_0, 404); - ZEPHIR_INIT_NVAR(&_5); - ZVAL_STRING(&_5, "Not Found"); - ZEPHIR_CALL_METHOD(NULL, &response, "setstatuscode", NULL, 0, &_0, &_5); + ZEPHIR_CALL_METHOD(&_1, item, "getcontext", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&exception); - object_init_ex(&exception, phalcon_mvc_dispatcher_exception_ce); - ZVAL_LONG(&_0, exceptionCode); - ZEPHIR_CALL_METHOD(NULL, &exception, "__construct", NULL, 29, &message, &_0); + ZEPHIR_CALL_METHOD(&message, this_ptr, "tointerpolate", NULL, 0, &_0, &_1); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4, this_ptr, "handleexception", NULL, 0, &exception); + ZEPHIR_INIT_VAR(&_2); + zephir_create_array(&_2, 3, 0); + ZEPHIR_CALL_METHOD(&_3, item, "getlevelname", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_4)) { - RETURN_MM_BOOL(0); - } - zephir_throw_exception_debug(&exception, "phalcon/Mvc/Dispatcher.zep", 250); - ZEPHIR_MM_RESTORE(); - return; + zephir_array_update_string(&_2, SL("level"), &_3, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_2, SL("message"), &message, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getformatteddate", NULL, 0, item); + zephir_check_call_status(); + zephir_array_update_string(&_2, SL("timestamp"), &_3, PH_COPY | PH_SEPARATE); + zephir_json_encode(return_value, &_2, zephir_get_intval(&options) ); + RETURN_MM(); } @@ -36178,2131 +36399,1867 @@ static PHP_METHOD(Phalcon_Mvc_Dispatcher, throwDispatchException) -ZEPHIR_INIT_CLASS(Phalcon_Mvc_DispatcherInterface) +ZEPHIR_INIT_CLASS(Phalcon_Logger_Formatter_Line) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, DispatcherInterface, phalcon, mvc_dispatcherinterface, phalcon_mvc_dispatcherinterface_method_entry); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Logger\\Formatter, Line, phalcon, logger_formatter_line, phalcon_logger_formatter_abstractformatter_ce, phalcon_logger_formatter_line_method_entry, 0); - zend_class_implements(phalcon_mvc_dispatcherinterface_ce, 1, phalcon_dispatcher_dispatcherinterface_ce); + zend_declare_property_null(phalcon_logger_formatter_line_ce, SL("format"), ZEND_ACC_PROTECTED); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, getActiveController); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, getControllerName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, getLastController); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, setControllerSuffix); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, setControllerName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_DispatcherInterface, setDefaultController); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_EntityInterface) +static PHP_METHOD(Phalcon_Logger_Formatter_Line, getFormat) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, EntityInterface, phalcon, mvc_entityinterface, phalcon_mvc_entityinterface_method_entry); + zval *this_ptr = getThis(); - return SUCCESS; -} -ZEPHIR_DOC_METHOD(Phalcon_Mvc_EntityInterface, readAttribute); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_EntityInterface, writeAttribute); + RETURN_MEMBER(getThis(), "format"); +} +static PHP_METHOD(Phalcon_Logger_Formatter_Line, setFormat) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *format_param = NULL; + zval format; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&format); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(format) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &format_param); + zephir_get_strval(&format, format_param); - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Micro) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Micro, phalcon, mvc_micro, phalcon_di_injectable_ce, phalcon_mvc_micro_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_micro_ce, SL("activeHandler"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("afterBindingHandlers"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("afterHandlers"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("beforeHandlers"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("container"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("errorHandler"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("finishHandlers"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("handlers"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("modelBinder"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("notFoundHandler"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("responseHandler"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("returnedValue"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_micro_ce, SL("router"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_micro_ce, SL("stopped"), 0, ZEND_ACC_PROTECTED); - phalcon_mvc_micro_ce->create_object = zephir_init_properties_Phalcon_Mvc_Micro; - - zend_class_implements(phalcon_mvc_micro_ce, 1, zend_ce_arrayaccess); - zend_class_implements(phalcon_mvc_micro_ce, 1, phalcon_events_eventsawareinterface_ce); - return SUCCESS; + zephir_update_property_zval(this_ptr, ZEND_STRL("format"), &format); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, __construct) +static PHP_METHOD(Phalcon_Logger_Formatter_Line, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *container = NULL, container_sub, __$null; + zval *format_param = NULL, *dateFormat_param = NULL; + zval format, dateFormat; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&format); + ZVAL_UNDEF(&dateFormat); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(0, 2) Z_PARAM_OPTIONAL - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(container, phalcon_di_diinterface_ce) + Z_PARAM_STR(format) + Z_PARAM_STR(dateFormat) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &container); - if (!container) { - container = &container_sub; - container = &__$null; + zephir_fetch_params(1, 0, 2, &format_param, &dateFormat_param); + if (!format_param) { + ZEPHIR_INIT_VAR(&format); + ZVAL_STRING(&format, "[%date%][%level%] %message%"); + } else { + zephir_get_strval(&format, format_param); + } + if (!dateFormat_param) { + ZEPHIR_INIT_VAR(&dateFormat); + ZVAL_STRING(&dateFormat, "c"); + } else { + zephir_get_strval(&dateFormat, dateFormat_param); } - if (Z_TYPE_P(container) != IS_NULL) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setdi", NULL, 0, container); - zephir_check_call_status(); - } + zephir_update_property_zval(this_ptr, ZEND_STRL("format"), &format); + zephir_update_property_zval(this_ptr, ZEND_STRL("dateFormat"), &dateFormat); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, after) +static PHP_METHOD(Phalcon_Logger_Formatter_Line, format) { - zval *handler, handler_sub; + zval _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *item, item_sub, message, _0, _2; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(&item_sub); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) + Z_PARAM_OBJECT_OF_CLASS(item, phalcon_logger_item_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &handler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &item); - zephir_update_property_array_append(this_ptr, SL("afterHandlers"), handler); - RETURN_THISW(); -} + zephir_read_property(&_0, this_ptr, ZEND_STRL("format"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + zephir_create_array(&_1, 3, 0); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getformatteddate", NULL, 0, item); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("%date%"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&_2, item, "getlevelname", NULL, 0); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("%level%"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&_2, item, "getmessage", NULL, 0); + zephir_check_call_status(); + zephir_array_update_string(&_1, SL("%message%"), &_2, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_FUNCTION(&message, "strtr", NULL, 5, &_0, &_1); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, item, "getcontext", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "tointerpolate", NULL, 0, &message, &_2); + zephir_check_call_status(); + RETURN_MM(); +} -static PHP_METHOD(Phalcon_Mvc_Micro, afterBinding) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_AbstractConditions) { - zval *handler, handler_sub; + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Query, AbstractConditions, phalcon, datamapper_query_abstractconditions, phalcon_datamapper_query_abstractquery_ce, phalcon_datamapper_query_abstractconditions_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, limit) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *limit_param = NULL, _0, _1; + zend_long limit; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) + Z_PARAM_LONG(limit) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &handler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &limit_param); + limit = zephir_get_intval(limit_param); - zephir_update_property_array_append(this_ptr, SL("afterBindingHandlers"), handler); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "LIMIT"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, limit); + zephir_update_property_array(this_ptr, SL("store"), &_0, &_1); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, before) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, offset) { - zval *handler, handler_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *offset_param = NULL, _0, _1; + zend_long offset; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) + Z_PARAM_LONG(offset) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &handler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &offset_param); + offset = zephir_get_intval(offset_param); - zephir_update_property_array_append(this_ptr, SL("beforeHandlers"), handler); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "OFFSET"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, offset); + zephir_update_property_array(this_ptr, SL("store"), &_0, &_1); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, delete) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, andWhere) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&routePattern); + type = zephir_get_intval(type_param); } - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "adddelete", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + ZVAL_LONG(&_0, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", NULL, 0, &condition, value, &_0); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, error) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, appendWhere) { - zval *handler, handler_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &handler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("errorHandler"), handler); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "WHERE"); + ZVAL_LONG(&_1, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendcondition", NULL, 0, &_0, &condition, value, &_1); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, finish) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, orderBy) { - zval *handler, handler_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *orderBy, orderBy_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); + ZVAL_UNDEF(&orderBy_sub); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) + Z_PARAM_ZVAL(orderBy) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &handler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &orderBy); - zephir_update_property_array_append(this_ptr, SL("finishHandlers"), handler); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "ORDER"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "processvalue", NULL, 0, &_0, orderBy); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, get) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, orWhere) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1, _2; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&routePattern); + type = zephir_get_intval(type_param); } - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addget", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "WHERE"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "OR "); + ZVAL_LONG(&_2, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addcondition", NULL, 0, &_0, &_1, &condition, value, &_2); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getActiveHandler) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, where) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1, _2; + zval condition; zval *this_ptr = getThis(); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - RETURN_MEMBER(getThis(), "activeHandler"); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "WHERE"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "AND "); + ZVAL_LONG(&_2, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addcondition", NULL, 0, &_0, &_1, &condition, value, &_2); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getBoundModels) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, whereEquals) { - zval modelBinder, _0; + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *columnsValues_param = NULL, key, value, *_0, _1, _5$$5, _6$$6, _7$$7, _8$$10, _9$$11, _10$$12; + zval columnsValues; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelBinder); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&columnsValues); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_8$$10); + ZVAL_UNDEF(&_9$$11); + ZVAL_UNDEF(&_10$$12); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(columnsValues) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &columnsValues_param); + zephir_get_arrval(&columnsValues, columnsValues_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelBinder"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&modelBinder, &_0); - if (Z_TYPE_P(&modelBinder) == IS_NULL) { - array_init(return_value); - RETURN_MM(); + + zephir_is_iterable(&columnsValues, 0, "phalcon/DataMapper/Query/AbstractConditions.zep", 162); + if (Z_TYPE_P(&columnsValues) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&columnsValues), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&key); + if (_3 != NULL) { + ZVAL_STR_COPY(&key, _3); + } else { + ZVAL_LONG(&key, _2); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + if (zephir_is_numeric(&key)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &value); + zephir_check_call_status(); + } else if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_5$$5); + ZEPHIR_CONCAT_VS(&_5$$5, &key, " IS NULL"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_5$$5); + zephir_check_call_status(); + } else if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&_6$$6); + ZEPHIR_CONCAT_VS(&_6$$6, &key, " IN "); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_6$$6, &value); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_7$$7); + ZEPHIR_CONCAT_VS(&_7$$7, &key, " = "); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_7$$7, &value); + zephir_check_call_status(); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columnsValues, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &columnsValues, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&key, &columnsValues, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &columnsValues, "current", NULL, 0); + zephir_check_call_status(); + if (zephir_is_numeric(&key)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &value); + zephir_check_call_status(); + } else if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_8$$10); + ZEPHIR_CONCAT_VS(&_8$$10, &key, " IS NULL"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_8$$10); + zephir_check_call_status(); + } else if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&_9$$11); + ZEPHIR_CONCAT_VS(&_9$$11, &key, " IN "); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_9$$11, &value); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_10$$12); + ZEPHIR_CONCAT_VS(&_10$$12, &key, " = "); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "where", &_4, 0, &_10$$12, &value); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, &columnsValues, "next", NULL, 0); + zephir_check_call_status(); + } } - ZEPHIR_RETURN_CALL_METHOD(&modelBinder, "getboundmodels", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getEventsManager) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, addCondition) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *store_param = NULL, *andor_param = NULL, *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0$$3, _1$$3, _2, _3; + zval store, andor, condition, _4; zval *this_ptr = getThis(); + ZVAL_UNDEF(&store); + ZVAL_UNDEF(&andor); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 5) + Z_PARAM_STR(store) + Z_PARAM_STR(andor) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 3, 2, &store_param, &andor_param, &condition_param, &value, &type_param); + zephir_get_strval(&store, store_param); + zephir_get_strval(&andor, andor_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - RETURN_MEMBER(getThis(), "eventsManager"); + if (!(ZEPHIR_IS_EMPTY(value))) { + ZVAL_LONG(&_1$$3, type); + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "bindinline", NULL, 0, value, &_1$$3); + zephir_check_call_status(); + zephir_concat_self(&condition, &_0$$3); + } + zephir_read_property(&_2, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_3, &_2, &store, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 185); + if (ZEPHIR_IS_EMPTY(&_3)) { + ZEPHIR_INIT_NVAR(&andor); + } + ZEPHIR_INIT_VAR(&_4); + ZEPHIR_CONCAT_VV(&_4, &andor, &condition); + zephir_update_property_array_multi(this_ptr, SL("store"), &_4, SL("za"), 2, &store); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, setEventsManager) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildBy) { - zval *eventsManager, eventsManager_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *type_param = NULL, _0, _1, _2, _3, _4, _5; + zval type; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventsManager_sub); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + Z_PARAM_STR(type) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &type_param); + zephir_get_strval(&type, type_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_1, &_0, &type, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 201); + if (ZEPHIR_IS_EMPTY(&_1)) { + RETURN_MM_STRING(""); + } + zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_4, &_3, &type, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 206); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, ","); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "indent", NULL, 0, &_4, &_5); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSV(return_value, " ", &type, " BY", &_2); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getHandlers) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildCondition) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *type_param = NULL, _0, _1, _2, _3, _4; + zval type; zval *this_ptr = getThis(); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(type) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "handlers"); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &type_param); + zephir_get_strval(&type, type_param); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_1, &_0, &type, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 218); + if (ZEPHIR_IS_EMPTY(&_1)) { + RETURN_MM_STRING(""); + } + zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_4, &_3, &type, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 223); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "indent", NULL, 0, &_4); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVV(return_value, " ", &type, &_2); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getModelBinder) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildLimitEarly) { + zend_bool _3, _6; + zval _0, _1, _2, _4, _5, _7, _8, _9$$3, _10$$3, _11$$3; + zval limit; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&limit); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_11$$3); + + ZEPHIR_MM_GROW(); - RETURN_MEMBER(getThis(), "modelBinder"); + ZEPHIR_INIT_VAR(&limit); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "getdrivername", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, "sqlsrv"); + _3 = ZEPHIR_IS_IDENTICAL(&_2, &_1); + if (_3) { + zephir_read_property(&_4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_5, &_4, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 237); + _3 = ZEPHIR_GT_LONG(&_5, 0); + } + _6 = _3; + if (_6) { + zephir_read_property(&_7, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_8, &_7, SL("OFFSET"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 239); + _6 = ZEPHIR_IS_LONG_IDENTICAL(&_8, 0); + } + if (_6) { + zephir_read_property(&_9$$3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_10$$3, &_9$$3, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 240); + ZEPHIR_INIT_VAR(&_11$$3); + ZEPHIR_CONCAT_SV(&_11$$3, " TOP ", &_10$$3); + zephir_get_strval(&limit, &_11$$3); + } + RETURN_CTOR(&limit); } -static PHP_METHOD(Phalcon_Mvc_Micro, getReturnedValue) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildLimit) { + zval method, suffix, _0, _1, _2; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&suffix); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + + ZEPHIR_MM_GROW(); - RETURN_MEMBER(getThis(), "returnedValue"); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&suffix, &_0, "getdrivername", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "sqlsrv"); + if (!ZEPHIR_IS_IDENTICAL(&_1, &suffix)) { + ZEPHIR_INIT_NVAR(&suffix); + ZVAL_STRING(&suffix, "common"); + } + ZEPHIR_INIT_VAR(&_2); + zephir_ucfirst(&_2, &suffix); + ZEPHIR_INIT_VAR(&method); + ZEPHIR_CONCAT_SV(&method, "buildLimit", &_2); + ZEPHIR_RETURN_CALL_METHOD_ZVAL(this_ptr, &method, NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getRouter) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildLimitCommon) { - zval router, _0, _1$$3, _2$$3; + zval _0, _1, _5, _6, _10, _2$$3, _3$$3, _4$$3, _7$$4, _8$$4, _9$$4, _11$$5, _12$$5; + zval limit; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&router); + ZVAL_UNDEF(&limit); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_10); ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_11$$5); + ZVAL_UNDEF(&_12$$5); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("router"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&router, &_0); - if (Z_TYPE_P(&router) != IS_OBJECT) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "router"); - ZEPHIR_CALL_METHOD(&router, this_ptr, "getsharedservice", NULL, 0, &_1$$3); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &router, "clear", NULL, 0); - zephir_check_call_status(); - ZVAL_BOOL(&_2$$3, 1); - ZEPHIR_CALL_METHOD(NULL, &router, "removeextraslashes", NULL, 0, &_2$$3); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("router"), &router); + ZEPHIR_INIT_VAR(&limit); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 275); + if (!ZEPHIR_IS_LONG_IDENTICAL(&_1, 0)) { + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_3$$3, &_2$$3, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 276); + ZEPHIR_INIT_VAR(&_4$$3); + ZEPHIR_CONCAT_SV(&_4$$3, "LIMIT ", &_3$$3); + zephir_concat_self(&limit, &_4$$3); } - RETURN_CCTOR(&router); + zephir_read_property(&_5, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_6, &_5, SL("OFFSET"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 279); + if (!ZEPHIR_IS_LONG_IDENTICAL(&_6, 0)) { + zephir_read_property(&_7$$4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_8$$4, &_7$$4, SL("OFFSET"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 280); + ZEPHIR_INIT_VAR(&_9$$4); + ZEPHIR_CONCAT_SV(&_9$$4, " OFFSET ", &_8$$4); + zephir_concat_self(&limit, &_9$$4); + } + ZEPHIR_INIT_VAR(&_10); + ZVAL_STRING(&_10, ""); + if (!ZEPHIR_IS_IDENTICAL(&_10, &limit)) { + ZEPHIR_INIT_VAR(&_11$$5); + zephir_fast_trim(&_11$$5, &limit, NULL , ZEPHIR_TRIM_LEFT); + ZEPHIR_INIT_VAR(&_12$$5); + ZEPHIR_CONCAT_SV(&_12$$5, " ", &_11$$5); + zephir_get_strval(&limit, &_12$$5); + } + RETURN_CTOR(&limit); } -static PHP_METHOD(Phalcon_Mvc_Micro, getService) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, buildLimitSqlsrv) { + zend_bool _2; + zval _0, _1, _3, _4, _5$$3, _6$$3, _7$$3, _8$$3, _9$$3; + zval limit; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *serviceName_param = NULL, container, _0; - zval serviceName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&serviceName); - ZVAL_UNDEF(&container); + ZVAL_UNDEF(&limit); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_9$$3); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_INIT_VAR(&limit); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 299); + _2 = ZEPHIR_GT_LONG(&_1, 0); + if (_2) { + zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_4, &_3, SL("OFFSET"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 299); + _2 = ZEPHIR_GT_LONG(&_4, 0); + } + if (_2) { + zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_6$$3, &_5$$3, SL("OFFSET"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 300); + zephir_read_property(&_7$$3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_8$$3, &_7$$3, SL("LIMIT"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 301); + ZEPHIR_INIT_VAR(&_9$$3); + ZEPHIR_CONCAT_SVSSVS(&_9$$3, " OFFSET ", &_6$$3, " ROWS", " FETCH NEXT ", &_8$$3, " ROWS ONLY"); + zephir_get_strval(&limit, &_9$$3); + } + RETURN_CTOR(&limit); +} + +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, appendCondition) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *store_param = NULL, *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, key, _2, _3, _5, _6, _7, _8, _9, _10, _0$$3, _1$$3, _4$$4; + zval store, condition; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&store); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_4$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(serviceName) + ZEND_PARSE_PARAMETERS_START(2, 4) + Z_PARAM_STR(store) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &serviceName_param); - if (UNEXPECTED(Z_TYPE_P(serviceName_param) != IS_STRING && Z_TYPE_P(serviceName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'serviceName' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 2, 2, &store_param, &condition_param, &value, &type_param); + zephir_get_strval(&store, store_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - if (EXPECTED(Z_TYPE_P(serviceName_param) == IS_STRING)) { - zephir_get_strval(&serviceName, serviceName_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&serviceName); + type = zephir_get_intval(type_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_INIT_NVAR(&container); - object_init_ex(&container, phalcon_di_factorydefault_ce); - ZEPHIR_CALL_METHOD(NULL, &container, "__construct", NULL, 411); + if (!(ZEPHIR_IS_EMPTY(value))) { + ZVAL_LONG(&_1$$3, type); + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "bindinline", NULL, 0, value, &_1$$3); zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); + zephir_concat_self(&condition, &_0$$3); + } + zephir_read_property(&_2, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_3, &_2, &store, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 327); + if (ZEPHIR_IS_EMPTY(&_3)) { + ZEPHIR_INIT_VAR(&_4$$4); + ZVAL_STRING(&_4$$4, ""); + zephir_update_property_array_multi(this_ptr, SL("store"), &_4$$4, SL("za"), 2, &store); } - ZEPHIR_RETURN_CALL_METHOD(&container, "get", NULL, 412, &serviceName); + zephir_read_property(&_5, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_6, &_5, &store, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 331); + ZEPHIR_CALL_FUNCTION(&key, "array_key_last", NULL, 36, &_6); zephir_check_call_status(); - RETURN_MM(); + zephir_read_property(&_7, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_8, &_7, &store, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 333); + zephir_array_fetch(&_9, &_8, &key, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 333); + ZEPHIR_INIT_VAR(&_10); + ZEPHIR_CONCAT_VV(&_10, &_9, &condition); + zephir_update_property_array_multi(this_ptr, SL("store"), &_10, SL("zz"), 2, &store, &key); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, getSharedService) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractConditions, processValue) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *serviceName_param = NULL, container, _0; - zval serviceName; + zval *store_param = NULL, *data = NULL, data_sub, _0$$3, _1$$4, _2$$4, _3$$4; + zval store; zval *this_ptr = getThis(); - ZVAL_UNDEF(&serviceName); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&store); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(serviceName) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(store) + Z_PARAM_ZVAL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &serviceName_param); - if (UNEXPECTED(Z_TYPE_P(serviceName_param) != IS_STRING && Z_TYPE_P(serviceName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'serviceName' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 2, 0, &store_param, &data); + zephir_get_strval(&store, store_param); + ZEPHIR_SEPARATE_PARAM(data); + + + if (Z_TYPE_P(data) == IS_STRING) { + ZEPHIR_INIT_VAR(&_0$$3); + zephir_create_array(&_0$$3, 1, 0); + zephir_array_fast_append(&_0$$3, data); + ZEPHIR_CPY_WRT(data, &_0$$3); } - if (EXPECTED(Z_TYPE_P(serviceName_param) == IS_STRING)) { - zephir_get_strval(&serviceName, serviceName_param); - } else { - ZEPHIR_INIT_VAR(&serviceName); + if (Z_TYPE_P(data) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&_1$$4); + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch(&_3$$4, &_2$$4, &store, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractConditions.zep", 350); + zephir_fast_array_merge(&_1$$4, &_3$$4, data); + zephir_update_property_array(this_ptr, SL("store"), &store, &_1$$4); } + ZEPHIR_MM_RESTORE(); +} - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_INIT_NVAR(&container); - object_init_ex(&container, phalcon_di_factorydefault_ce); - ZEPHIR_CALL_METHOD(NULL, &container, "__construct", NULL, 411); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); - } - ZEPHIR_RETURN_CALL_METHOD(&container, "getshared", NULL, 413, &serviceName); - zephir_check_call_status(); - RETURN_MM(); + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_AbstractQuery) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Query, AbstractQuery, phalcon, datamapper_query_abstractquery, phalcon_datamapper_query_abstractquery_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_datamapper_query_abstractquery_ce, SL("bind"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_query_abstractquery_ce, SL("connection"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_query_abstractquery_ce, SL("store"), ZEND_ACC_PROTECTED); + phalcon_datamapper_query_abstractquery_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Query_AbstractQuery; + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Micro, handle) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, __construct) { - zval _81$$59, _86$$64, _93$$69; - zend_class_entry *_28$$21; - zend_bool _26$$7, _37$$7, _18$$11, _22$$16, _33$$25, _44$$31, _48$$36, _57$$42, _61$$47, _78$$57, _83$$62, _98$$79; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *uri_param = NULL, __$true, __$false, container, status, router, matchedRoute, handler, beforeHandlers, params, returnedValue, e, errorHandler, afterHandlers, notFoundHandler, finishHandlers, finish, before, after, response, modelBinder, routeName, realHandler, methodName, lazyReturned, afterBindingHandlers, afterBinding, _0, _88, _1$$4, _5$$4, _6$$4, _72$$4, _75$$4, *_76$$4, _77$$4, _2$$5, _3$$5, _4$$5, _7$$7, _8$$7, _11$$7, _15$$7, *_16$$7, _17$$7, _41$$7, *_42$$7, _43$$7, _54$$7, *_55$$7, _56$$7, _9$$8, _10$$8, _12$$9, _13$$9, _14$$9, _21$$11, _19$$14, _20$$14, _25$$16, _23$$19, _24$$19, _27$$21, _29$$23, _30$$24, _31$$24, _32$$22, _34$$26, _35$$26, _36$$26, _38$$29, _39$$29, _40$$29, _47$$31, _45$$34, _46$$34, _51$$36, _49$$39, _50$$39, _52$$41, _53$$41, _60$$42, _58$$45, _59$$45, _64$$47, _62$$50, _63$$50, _65$$52, _69$$52, _66$$53, _67$$53, _68$$53, _70$$55, _71$$55, _73$$56, _74$$56, _82$$57, _79$$60, _80$$60, _87$$62, _84$$65, _85$$65, _89$$67, _92$$67, _90$$68, _91$$68, _94$$77, _95$$77, _96$$80, _97$$80, _99$$82; - zval uri, bindCacheKey; + zval *connection, connection_sub, *bind, bind_sub, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&uri); - ZVAL_UNDEF(&bindCacheKey); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&status); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&matchedRoute); - ZVAL_UNDEF(&handler); - ZVAL_UNDEF(&beforeHandlers); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&returnedValue); - ZVAL_UNDEF(&e); - ZVAL_UNDEF(&errorHandler); - ZVAL_UNDEF(&afterHandlers); - ZVAL_UNDEF(¬FoundHandler); - ZVAL_UNDEF(&finishHandlers); - ZVAL_UNDEF(&finish); - ZVAL_UNDEF(&before); - ZVAL_UNDEF(&after); - ZVAL_UNDEF(&response); - ZVAL_UNDEF(&modelBinder); - ZVAL_UNDEF(&routeName); - ZVAL_UNDEF(&realHandler); - ZVAL_UNDEF(&methodName); - ZVAL_UNDEF(&lazyReturned); - ZVAL_UNDEF(&afterBindingHandlers); - ZVAL_UNDEF(&afterBinding); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&bind_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_88); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_72$$4); - ZVAL_UNDEF(&_75$$4); - ZVAL_UNDEF(&_77$$4); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_15$$7); - ZVAL_UNDEF(&_17$$7); - ZVAL_UNDEF(&_41$$7); - ZVAL_UNDEF(&_43$$7); - ZVAL_UNDEF(&_54$$7); - ZVAL_UNDEF(&_56$$7); - ZVAL_UNDEF(&_9$$8); - ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_12$$9); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_14$$9); - ZVAL_UNDEF(&_21$$11); - ZVAL_UNDEF(&_19$$14); - ZVAL_UNDEF(&_20$$14); - ZVAL_UNDEF(&_25$$16); - ZVAL_UNDEF(&_23$$19); - ZVAL_UNDEF(&_24$$19); - ZVAL_UNDEF(&_27$$21); - ZVAL_UNDEF(&_29$$23); - ZVAL_UNDEF(&_30$$24); - ZVAL_UNDEF(&_31$$24); - ZVAL_UNDEF(&_32$$22); - ZVAL_UNDEF(&_34$$26); - ZVAL_UNDEF(&_35$$26); - ZVAL_UNDEF(&_36$$26); - ZVAL_UNDEF(&_38$$29); - ZVAL_UNDEF(&_39$$29); - ZVAL_UNDEF(&_40$$29); - ZVAL_UNDEF(&_47$$31); - ZVAL_UNDEF(&_45$$34); - ZVAL_UNDEF(&_46$$34); - ZVAL_UNDEF(&_51$$36); - ZVAL_UNDEF(&_49$$39); - ZVAL_UNDEF(&_50$$39); - ZVAL_UNDEF(&_52$$41); - ZVAL_UNDEF(&_53$$41); - ZVAL_UNDEF(&_60$$42); - ZVAL_UNDEF(&_58$$45); - ZVAL_UNDEF(&_59$$45); - ZVAL_UNDEF(&_64$$47); - ZVAL_UNDEF(&_62$$50); - ZVAL_UNDEF(&_63$$50); - ZVAL_UNDEF(&_65$$52); - ZVAL_UNDEF(&_69$$52); - ZVAL_UNDEF(&_66$$53); - ZVAL_UNDEF(&_67$$53); - ZVAL_UNDEF(&_68$$53); - ZVAL_UNDEF(&_70$$55); - ZVAL_UNDEF(&_71$$55); - ZVAL_UNDEF(&_73$$56); - ZVAL_UNDEF(&_74$$56); - ZVAL_UNDEF(&_82$$57); - ZVAL_UNDEF(&_79$$60); - ZVAL_UNDEF(&_80$$60); - ZVAL_UNDEF(&_87$$62); - ZVAL_UNDEF(&_84$$65); - ZVAL_UNDEF(&_85$$65); - ZVAL_UNDEF(&_89$$67); - ZVAL_UNDEF(&_92$$67); - ZVAL_UNDEF(&_90$$68); - ZVAL_UNDEF(&_91$$68); - ZVAL_UNDEF(&_94$$77); - ZVAL_UNDEF(&_95$$77); - ZVAL_UNDEF(&_96$$80); - ZVAL_UNDEF(&_97$$80); - ZVAL_UNDEF(&_99$$82); - ZVAL_UNDEF(&_81$$59); - ZVAL_UNDEF(&_86$$64); - ZVAL_UNDEF(&_93$$69); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(uri) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + Z_PARAM_OBJECT_OF_CLASS(bind, phalcon_datamapper_query_bind_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &uri_param); - if (UNEXPECTED(Z_TYPE_P(uri_param) != IS_STRING && Z_TYPE_P(uri_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'uri' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(uri_param) == IS_STRING)) { - zephir_get_strval(&uri, uri_param); - } else { - ZEPHIR_INIT_VAR(&uri); - } - + zephir_fetch_params(1, 2, 0, &connection, &bind); - ZEPHIR_INIT_VAR(&status); - ZVAL_NULL(&status); - ZEPHIR_INIT_VAR(&realHandler); - ZVAL_NULL(&realHandler); - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "A dependency injection container is required to access micro services", "phalcon/Mvc/Micro.zep", 419); - return; - } - /* try_start_1: */ + zephir_update_property_zval(this_ptr, ZEND_STRL("bind"), bind); + zephir_update_property_zval(this_ptr, ZEND_STRL("connection"), connection); + ZEPHIR_INIT_VAR(&_0); + array_init(&_0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "UNION"); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "reset", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); +} - ZEPHIR_INIT_VAR(&returnedValue); - ZVAL_NULL(&returnedValue); - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_1$$4) != IS_NULL) { - zephir_read_property(&_2$$5, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_4$$5); - ZVAL_STRING(&_4$$5, "micro:beforeHandleRoute"); - ZEPHIR_CALL_METHOD(&_3$$5, &_2$$5, "fire", NULL, 0, &_4$$5, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_3$$5)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_INIT_VAR(&_6$$4); - ZVAL_STRING(&_6$$4, "router"); - ZEPHIR_CALL_METHOD(&_5$$4, &container, "getshared", NULL, 0, &_6$$4); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_CPY_WRT(&router, &_5$$4); - ZEPHIR_CALL_METHOD(NULL, &router, "handle", NULL, 0, &uri); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_CALL_METHOD(&matchedRoute, &router, "getmatchedroute", NULL, 0); - zephir_check_call_status_or_jump(try_end_1); - if (Z_TYPE_P(&matchedRoute) == IS_OBJECT) { - ZEPHIR_OBS_VAR(&handler); - zephir_read_property(&_7$$7, this_ptr, ZEND_STRL("handlers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&_8$$7, &matchedRoute, "getrouteid", NULL, 0); - zephir_check_call_status_or_jump(try_end_1); - if (UNEXPECTED(!(zephir_array_isset_fetch(&handler, &_7$$7, &_8$$7, 0)))) { - ZEPHIR_INIT_VAR(&_9$$8); - object_init_ex(&_9$$8, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_VAR(&_10$$8); - ZVAL_STRING(&_10$$8, "Matched route doesn't have an associated handler"); - ZEPHIR_CALL_METHOD(NULL, &_9$$8, "__construct", NULL, 29, &_10$$8); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_9$$8, "phalcon/Mvc/Micro.zep", 453); - goto try_end_1; - - } - zephir_update_property_zval(this_ptr, ZEND_STRL("activeHandler"), &handler); - zephir_read_property(&_11$$7, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_11$$7) != IS_NULL) { - zephir_read_property(&_12$$9, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_14$$9); - ZVAL_STRING(&_14$$9, "micro:beforeExecuteRoute"); - ZEPHIR_CALL_METHOD(&_13$$9, &_12$$9, "fire", NULL, 0, &_14$$9, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_13$$9)) { - RETURN_MM_BOOL(0); - } - ZEPHIR_OBS_NVAR(&handler); - zephir_read_property(&handler, this_ptr, ZEND_STRL("activeHandler"), PH_NOISY_CC); - } - zephir_read_property(&_15$$7, this_ptr, ZEND_STRL("beforeHandlers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&beforeHandlers, &_15$$7); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$false); - } - zephir_is_iterable(&beforeHandlers, 0, "phalcon/Mvc/Micro.zep", 506); - if (Z_TYPE_P(&beforeHandlers) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&beforeHandlers), _16$$7) - { - ZEPHIR_INIT_NVAR(&before); - ZVAL_COPY(&before, _16$$7); - _18$$11 = Z_TYPE_P(&before) == IS_OBJECT; - if (_18$$11) { - _18$$11 = zephir_instance_of_ev(&before, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_18$$11) { - ZEPHIR_CALL_METHOD(&status, &before, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&before)))) { - ZEPHIR_INIT_NVAR(&_19$$14); - object_init_ex(&_19$$14, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_20$$14); - ZVAL_STRING(&_20$$14, "'before' handler is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_19$$14, "__construct", NULL, 29, &_20$$14); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_19$$14, "phalcon/Mvc/Micro.zep", 489); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &before); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_21$$11, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_21$$11)) { - RETURN_CCTOR(&status); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &beforeHandlers, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_17$$7, &beforeHandlers, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_17$$7)) { - break; - } - ZEPHIR_CALL_METHOD(&before, &beforeHandlers, "current", NULL, 0); - zephir_check_call_status(); - _22$$16 = Z_TYPE_P(&before) == IS_OBJECT; - if (_22$$16) { - _22$$16 = zephir_instance_of_ev(&before, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_22$$16) { - ZEPHIR_CALL_METHOD(&status, &before, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&before)))) { - ZEPHIR_INIT_NVAR(&_23$$19); - object_init_ex(&_23$$19, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_24$$19); - ZVAL_STRING(&_24$$19, "'before' handler is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_23$$19, "__construct", NULL, 29, &_24$$19); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_23$$19, "phalcon/Mvc/Micro.zep", 489); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &before); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_25$$16, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_25$$16)) { - RETURN_CCTOR(&status); - } - ZEPHIR_CALL_METHOD(NULL, &beforeHandlers, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&before); - ZEPHIR_CALL_METHOD(¶ms, &router, "getparams", NULL, 0); - zephir_check_call_status_or_jump(try_end_1); - zephir_read_property(&_15$$7, this_ptr, ZEND_STRL("modelBinder"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&modelBinder, &_15$$7); - _26$$7 = Z_TYPE_P(&handler) == IS_OBJECT; - if (_26$$7) { - _26$$7 = zephir_is_instance_of(&handler, SL("Closure")); - } - if (_26$$7) { - _28$$21 = zephir_fetch_class_str_ex(SL("Closure"), ZEND_FETCH_CLASS_AUTO); - ZEPHIR_CALL_CE_STATIC(&_27$$21, _28$$21, "bind", NULL, 0, &handler, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_CPY_WRT(&handler, &_27$$21); - if (Z_TYPE_P(&modelBinder) != IS_NULL) { - ZEPHIR_CALL_METHOD(&routeName, &matchedRoute, "getname", NULL, 0); - zephir_check_call_status_or_jump(try_end_1); - if (Z_TYPE_P(&routeName) != IS_NULL) { - ZEPHIR_INIT_VAR(&_29$$23); - ZEPHIR_CONCAT_SV(&_29$$23, "_PHMB_", &routeName); - zephir_get_strval(&bindCacheKey, &_29$$23); - } else { - ZEPHIR_CALL_METHOD(&_30$$24, &matchedRoute, "getpattern", NULL, 0); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_INIT_VAR(&_31$$24); - ZEPHIR_CONCAT_SV(&_31$$24, "_PHMB_", &_30$$24); - zephir_get_strval(&bindCacheKey, &_31$$24); - } - ZEPHIR_CALL_METHOD(&_32$$22, &modelBinder, "bindtohandler", NULL, 0, &handler, ¶ms, &bindCacheKey); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_CPY_WRT(¶ms, &_32$$22); - } - } - if (Z_TYPE_P(&handler) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&realHandler); - zephir_array_fetch_long(&realHandler, &handler, 0, PH_NOISY, "phalcon/Mvc/Micro.zep", 537); - _33$$25 = zephir_instance_of_ev(&realHandler, phalcon_mvc_controller_ce); - if (_33$$25) { - _33$$25 = Z_TYPE_P(&modelBinder) != IS_NULL; - } - if (_33$$25) { - ZEPHIR_OBS_VAR(&methodName); - zephir_array_fetch_long(&methodName, &handler, 1, PH_NOISY, "phalcon/Mvc/Micro.zep", 540); - ZEPHIR_INIT_VAR(&_34$$26); - zephir_get_class(&_34$$26, &realHandler, 0); - ZEPHIR_INIT_VAR(&_35$$26); - ZEPHIR_CONCAT_SVSV(&_35$$26, "_PHMB_", &_34$$26, "_", &methodName); - zephir_get_strval(&bindCacheKey, &_35$$26); - ZEPHIR_CALL_METHOD(&_36$$26, &modelBinder, "bindtohandler", NULL, 0, &realHandler, ¶ms, &bindCacheKey, &methodName); - zephir_check_call_status_or_jump(try_end_1); - ZEPHIR_CPY_WRT(¶ms, &_36$$26); - } - } - _37$$7 = Z_TYPE_P(&realHandler) != IS_NULL; - if (_37$$7) { - _37$$7 = zephir_instance_of_ev(&realHandler, phalcon_mvc_micro_lazyloader_ce); - } - if (_37$$7) { - ZEPHIR_OBS_NVAR(&methodName); - zephir_array_fetch_long(&methodName, &handler, 1, PH_NOISY, "phalcon/Mvc/Micro.zep", 557); - ZEPHIR_CALL_METHOD(&lazyReturned, &realHandler, "callmethod", NULL, 0, &methodName, ¶ms, &modelBinder); - zephir_check_call_status_or_jump(try_end_1); - } else { - ZEPHIR_INIT_NVAR(&lazyReturned); - ZEPHIR_CALL_USER_FUNC_ARRAY(&lazyReturned, &handler, ¶ms); - zephir_check_call_status_or_jump(try_end_1); - } - ZEPHIR_CPY_WRT(&returnedValue, &lazyReturned); - zephir_read_property(&_15$$7, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_15$$7) != IS_NULL) { - zephir_read_property(&_38$$29, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_40$$29); - ZVAL_STRING(&_40$$29, "micro:afterBinding"); - ZEPHIR_CALL_METHOD(&_39$$29, &_38$$29, "fire", NULL, 0, &_40$$29, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_39$$29)) { - RETURN_MM_BOOL(0); - } - } - zephir_read_property(&_41$$7, this_ptr, ZEND_STRL("afterBindingHandlers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&afterBindingHandlers, &_41$$7); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$false); - } - zephir_is_iterable(&afterBindingHandlers, 0, "phalcon/Mvc/Micro.zep", 620); - if (Z_TYPE_P(&afterBindingHandlers) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&afterBindingHandlers), _42$$7) - { - ZEPHIR_INIT_NVAR(&afterBinding); - ZVAL_COPY(&afterBinding, _42$$7); - _44$$31 = Z_TYPE_P(&afterBinding) == IS_OBJECT; - if (_44$$31) { - _44$$31 = zephir_instance_of_ev(&afterBinding, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_44$$31) { - ZEPHIR_CALL_METHOD(&status, &afterBinding, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&afterBinding)))) { - ZEPHIR_INIT_NVAR(&_45$$34); - object_init_ex(&_45$$34, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_46$$34); - ZVAL_STRING(&_46$$34, "'afterBinding' handler is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_45$$34, "__construct", NULL, 29, &_46$$34); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_45$$34, "phalcon/Mvc/Micro.zep", 600); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &afterBinding); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_47$$31, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_47$$31)) { - RETURN_CCTOR(&status); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &afterBindingHandlers, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_43$$7, &afterBindingHandlers, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_43$$7)) { - break; - } - ZEPHIR_CALL_METHOD(&afterBinding, &afterBindingHandlers, "current", NULL, 0); - zephir_check_call_status(); - _48$$36 = Z_TYPE_P(&afterBinding) == IS_OBJECT; - if (_48$$36) { - _48$$36 = zephir_instance_of_ev(&afterBinding, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_48$$36) { - ZEPHIR_CALL_METHOD(&status, &afterBinding, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&afterBinding)))) { - ZEPHIR_INIT_NVAR(&_49$$39); - object_init_ex(&_49$$39, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_50$$39); - ZVAL_STRING(&_50$$39, "'afterBinding' handler is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_49$$39, "__construct", NULL, 29, &_50$$39); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_49$$39, "phalcon/Mvc/Micro.zep", 600); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &afterBinding); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_51$$36, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_51$$36)) { - RETURN_CCTOR(&status); - } - ZEPHIR_CALL_METHOD(NULL, &afterBindingHandlers, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&afterBinding); - zephir_update_property_zval(this_ptr, ZEND_STRL("returnedValue"), &returnedValue); - zephir_read_property(&_41$$7, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_41$$7) != IS_NULL) { - zephir_read_property(&_52$$41, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_53$$41); - ZVAL_STRING(&_53$$41, "micro:afterExecuteRoute"); - ZEPHIR_CALL_METHOD(NULL, &_52$$41, "fire", NULL, 0, &_53$$41, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_54$$7, this_ptr, ZEND_STRL("afterHandlers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&afterHandlers, &_54$$7); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$false); - } - zephir_is_iterable(&afterHandlers, 0, "phalcon/Mvc/Micro.zep", 659); - if (Z_TYPE_P(&afterHandlers) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&afterHandlers), _55$$7) - { - ZEPHIR_INIT_NVAR(&after); - ZVAL_COPY(&after, _55$$7); - _57$$42 = Z_TYPE_P(&after) == IS_OBJECT; - if (_57$$42) { - _57$$42 = zephir_instance_of_ev(&after, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_57$$42) { - ZEPHIR_CALL_METHOD(&status, &after, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&after)))) { - ZEPHIR_INIT_NVAR(&_58$$45); - object_init_ex(&_58$$45, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_59$$45); - ZVAL_STRING(&_59$$45, "One of the 'after' handlers is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_58$$45, "__construct", NULL, 29, &_59$$45); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_58$$45, "phalcon/Mvc/Micro.zep", 646); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &after); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_60$$42, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_60$$42)) { - break; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &afterHandlers, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_56$$7, &afterHandlers, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_56$$7)) { - break; - } - ZEPHIR_CALL_METHOD(&after, &afterHandlers, "current", NULL, 0); - zephir_check_call_status(); - _61$$47 = Z_TYPE_P(&after) == IS_OBJECT; - if (_61$$47) { - _61$$47 = zephir_instance_of_ev(&after, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_61$$47) { - ZEPHIR_CALL_METHOD(&status, &after, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&after)))) { - ZEPHIR_INIT_NVAR(&_62$$50); - object_init_ex(&_62$$50, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_63$$50); - ZVAL_STRING(&_63$$50, "One of the 'after' handlers is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_62$$50, "__construct", NULL, 29, &_63$$50); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_62$$50, "phalcon/Mvc/Micro.zep", 646); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC(&status, &after); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_64$$47, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_64$$47)) { - break; - } - ZEPHIR_CALL_METHOD(NULL, &afterHandlers, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&after); - } else { - zephir_read_property(&_65$$52, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_65$$52) != IS_NULL) { - zephir_read_property(&_66$$53, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_68$$53); - ZVAL_STRING(&_68$$53, "micro:beforeNotFound"); - ZEPHIR_CALL_METHOD(&_67$$53, &_66$$53, "fire", NULL, 0, &_68$$53, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_67$$53)) { - RETURN_MM_BOOL(0); - } - } - zephir_read_property(&_69$$52, this_ptr, ZEND_STRL("notFoundHandler"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(¬FoundHandler, &_69$$52); - if (UNEXPECTED(!(zephir_is_callable(¬FoundHandler)))) { - ZEPHIR_INIT_VAR(&_70$$55); - object_init_ex(&_70$$55, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_VAR(&_71$$55); - ZVAL_STRING(&_71$$55, "Not-Found handler is not callable or is not defined"); - ZEPHIR_CALL_METHOD(NULL, &_70$$55, "__construct", NULL, 29, &_71$$55); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_70$$55, "phalcon/Mvc/Micro.zep", 677); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&returnedValue); - ZEPHIR_CALL_USER_FUNC(&returnedValue, ¬FoundHandler); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_72$$4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_72$$4) != IS_NULL) { - zephir_read_property(&_73$$56, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_74$$56); - ZVAL_STRING(&_74$$56, "micro:afterHandleRoute"); - ZEPHIR_CALL_METHOD(NULL, &_73$$56, "fire", NULL, 0, &_74$$56, this_ptr, &returnedValue); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_75$$4, this_ptr, ZEND_STRL("finishHandlers"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&finishHandlers, &_75$$4); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$false); - } - zephir_is_iterable(&finishHandlers, 0, "phalcon/Mvc/Micro.zep", 732); - if (Z_TYPE_P(&finishHandlers) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&finishHandlers), _76$$4) - { - ZEPHIR_INIT_NVAR(&finish); - ZVAL_COPY(&finish, _76$$4); - _78$$57 = Z_TYPE_P(&finish) == IS_OBJECT; - if (_78$$57) { - _78$$57 = zephir_instance_of_ev(&finish, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_78$$57) { - ZEPHIR_CALL_METHOD(&status, &finish, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&finish)))) { - ZEPHIR_INIT_NVAR(&_79$$60); - object_init_ex(&_79$$60, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_80$$60); - ZVAL_STRING(&_80$$60, "One of the 'finish' handlers is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_79$$60, "__construct", NULL, 29, &_80$$60); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_79$$60, "phalcon/Mvc/Micro.zep", 713); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&_81$$59); - zephir_create_array(&_81$$59, 1, 0); - zephir_array_fast_append(&_81$$59, this_ptr); - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC_ARRAY(&status, &finish, &_81$$59); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_82$$57, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_82$$57)) { - break; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &finishHandlers, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_77$$4, &finishHandlers, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_77$$4)) { - break; - } - ZEPHIR_CALL_METHOD(&finish, &finishHandlers, "current", NULL, 0); - zephir_check_call_status(); - _83$$62 = Z_TYPE_P(&finish) == IS_OBJECT; - if (_83$$62) { - _83$$62 = zephir_instance_of_ev(&finish, phalcon_mvc_micro_middlewareinterface_ce); - } - if (_83$$62) { - ZEPHIR_CALL_METHOD(&status, &finish, "call", NULL, 0, this_ptr); - zephir_check_call_status_or_jump(try_end_1); - } else { - if (UNEXPECTED(!(zephir_is_callable(&finish)))) { - ZEPHIR_INIT_NVAR(&_84$$65); - object_init_ex(&_84$$65, phalcon_mvc_micro_exception_ce); - ZEPHIR_INIT_NVAR(&_85$$65); - ZVAL_STRING(&_85$$65, "One of the 'finish' handlers is not callable"); - ZEPHIR_CALL_METHOD(NULL, &_84$$65, "__construct", NULL, 29, &_85$$65); - zephir_check_call_status_or_jump(try_end_1); - zephir_throw_exception_debug(&_84$$65, "phalcon/Mvc/Micro.zep", 713); - goto try_end_1; - - } - ZEPHIR_INIT_NVAR(&_86$$64); - zephir_create_array(&_86$$64, 1, 0); - zephir_array_fast_append(&_86$$64, this_ptr); - ZEPHIR_INIT_NVAR(&status); - ZEPHIR_CALL_USER_FUNC_ARRAY(&status, &finish, &_86$$64); - zephir_check_call_status_or_jump(try_end_1); - } - zephir_read_property(&_87$$62, this_ptr, ZEND_STRL("stopped"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_87$$62)) { - break; - } - ZEPHIR_CALL_METHOD(NULL, &finishHandlers, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&finish); - - try_end_1: - - if (EG(exception)) { - ZEPHIR_INIT_VAR(&_88); - ZVAL_OBJ(&_88, EG(exception)); - Z_ADDREF_P(&_88); - if (zephir_is_instance_of(&_88, SL("Throwable"))) { - zend_clear_exception(); - ZEPHIR_CPY_WRT(&e, &_88); - zephir_read_property(&_89$$67, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_89$$67) != IS_NULL) { - zephir_read_property(&_90$$68, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_91$$68); - ZVAL_STRING(&_91$$68, "micro:beforeException"); - ZEPHIR_CALL_METHOD(&returnedValue, &_90$$68, "fire", NULL, 0, &_91$$68, this_ptr, &e); - zephir_check_call_status(); - } - zephir_read_property(&_92$$67, this_ptr, ZEND_STRL("errorHandler"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&errorHandler, &_92$$67); - if (zephir_is_true(&errorHandler)) { - if (UNEXPECTED(!(zephir_is_callable(&errorHandler)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "Error handler is not callable", "phalcon/Mvc/Micro.zep", 751); - return; - } - ZEPHIR_INIT_VAR(&_93$$69); - zephir_create_array(&_93$$69, 1, 0); - zephir_array_fast_append(&_93$$69, &e); - ZEPHIR_INIT_NVAR(&returnedValue); - ZEPHIR_CALL_USER_FUNC_ARRAY(&returnedValue, &errorHandler, &_93$$69); - zephir_check_call_status(); - if (Z_TYPE_P(&returnedValue) == IS_OBJECT) { - if (!(zephir_instance_of_ev(&returnedValue, phalcon_http_responseinterface_ce))) { - zephir_throw_exception_debug(&e, "phalcon/Mvc/Micro.zep", 764); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - if (!ZEPHIR_IS_FALSE_IDENTICAL(&returnedValue)) { - zephir_throw_exception_debug(&e, "phalcon/Mvc/Micro.zep", 768); - ZEPHIR_MM_RESTORE(); - return; - } - } - } else { - if (!ZEPHIR_IS_FALSE_IDENTICAL(&returnedValue)) { - zephir_throw_exception_debug(&e, "phalcon/Mvc/Micro.zep", 773); - ZEPHIR_MM_RESTORE(); - return; - } - } - } - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("responseHandler"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_0)) { - zephir_read_property(&_94$$77, this_ptr, ZEND_STRL("responseHandler"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_is_callable(&_94$$77)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "Response handler is not callable or is not defined", "phalcon/Mvc/Micro.zep", 786); - return; - } - zephir_read_property(&_95$$77, this_ptr, ZEND_STRL("responseHandler"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&returnedValue); - ZEPHIR_CALL_USER_FUNC(&returnedValue, &_95$$77); - zephir_check_call_status(); - } else { - if (Z_TYPE_P(&returnedValue) == IS_STRING) { - ZEPHIR_INIT_VAR(&_97$$80); - ZVAL_STRING(&_97$$80, "response"); - ZEPHIR_CALL_METHOD(&_96$$80, &container, "getshared", NULL, 0, &_97$$80); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&response, &_96$$80); - ZEPHIR_CALL_METHOD(&_96$$80, &response, "issent", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_96$$80))) { - ZEPHIR_CALL_METHOD(NULL, &response, "setcontent", NULL, 0, &returnedValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &response, "send", NULL, 0); - zephir_check_call_status(); - } - } - _98$$79 = Z_TYPE_P(&returnedValue) == IS_OBJECT; - if (_98$$79) { - _98$$79 = zephir_instance_of_ev(&returnedValue, phalcon_http_responseinterface_ce); - } - if (_98$$79) { - ZEPHIR_CALL_METHOD(&_99$$82, &returnedValue, "issent", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_99$$82))) { - ZEPHIR_CALL_METHOD(NULL, &returnedValue, "send", NULL, 0); - zephir_check_call_status(); - } - } - } - RETURN_CCTOR(&returnedValue); -} - -static PHP_METHOD(Phalcon_Mvc_Micro, hasService) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, bindInline) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *serviceName_param = NULL, container, _0; - zval serviceName; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *value, value_sub, *type_param = NULL, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&serviceName); - ZVAL_UNDEF(&container); + ZVAL_UNDEF(&value_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(serviceName) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &serviceName_param); - if (UNEXPECTED(Z_TYPE_P(serviceName_param) != IS_STRING && Z_TYPE_P(serviceName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'serviceName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(serviceName_param) == IS_STRING)) { - zephir_get_strval(&serviceName, serviceName_param); + zephir_fetch_params(1, 1, 1, &value, &type_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&serviceName); + type = zephir_get_intval(type_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_INIT_NVAR(&container); - object_init_ex(&container, phalcon_di_factorydefault_ce); - ZEPHIR_CALL_METHOD(NULL, &container, "__construct", NULL, 411); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); - } - ZEPHIR_RETURN_CALL_METHOD(&container, "has", NULL, 414, &serviceName); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, type); + ZEPHIR_RETURN_CALL_METHOD(&_0, "bindinline", NULL, 0, value, &_1); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, head) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, bindValue) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, *type_param = NULL, _0, _1; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); + zephir_fetch_params(1, 2, 1, &key_param, &value, &type_param); + zephir_get_strval(&key, key_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&routePattern); + type = zephir_get_intval(type_param); } - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addhead", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, type); + ZEPHIR_CALL_METHOD(NULL, &_0, "setvalue", NULL, 0, &key, value, &_1); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, map) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, bindValues) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + zval *values_param = NULL, _0; + zval values; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); + ZVAL_UNDEF(&values); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(values) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); - } else { - ZEPHIR_INIT_VAR(&routePattern); - } + zephir_fetch_params(1, 1, 0, &values_param); + zephir_get_arrval(&values, values_param); - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "add", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_0, "setvalues", NULL, 0, &values); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Micro, mount) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, getBindValues) { - zend_bool _4$$7, _5$$7, _7$$15, _8$$15; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *collection, collection_sub, mainHandler, handlers, lazyHandler, prefix, methods, pattern, subHandler, realHandler, prefixedPattern, route, handler, name, _0, *_1, _2, _6$$15; zval *this_ptr = getThis(); - ZVAL_UNDEF(&collection_sub); - ZVAL_UNDEF(&mainHandler); - ZVAL_UNDEF(&handlers); - ZVAL_UNDEF(&lazyHandler); - ZVAL_UNDEF(&prefix); - ZVAL_UNDEF(&methods); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&subHandler); - ZVAL_UNDEF(&realHandler); - ZVAL_UNDEF(&prefixedPattern); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&handler); - ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_6$$15); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(collection, phalcon_mvc_micro_collectioninterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &collection); - - ZEPHIR_CALL_METHOD(&mainHandler, collection, "gethandler", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_IS_EMPTY(&mainHandler))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "Collection requires a main handler", "phalcon/Mvc/Micro.zep", 909); - return; - } - ZEPHIR_CALL_METHOD(&handlers, collection, "gethandlers", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(!(zephir_fast_count_int(&handlers)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "There are no handlers to mount", "phalcon/Mvc/Micro.zep", 915); - return; - } - ZEPHIR_CALL_METHOD(&_0, collection, "islazy", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&_0)) { - ZEPHIR_INIT_VAR(&lazyHandler); - object_init_ex(&lazyHandler, phalcon_mvc_micro_lazyloader_ce); - ZEPHIR_CALL_METHOD(NULL, &lazyHandler, "__construct", NULL, 415, &mainHandler); - zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&lazyHandler, &mainHandler); - } - ZEPHIR_CALL_METHOD(&prefix, collection, "getprefix", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "toarray", NULL, 0); zephir_check_call_status(); - zephir_is_iterable(&handlers, 0, "phalcon/Mvc/Micro.zep", 973); - if (Z_TYPE_P(&handlers) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&handlers), _1) - { - ZEPHIR_INIT_NVAR(&handler); - ZVAL_COPY(&handler, _1); - if (UNEXPECTED(Z_TYPE_P(&handler) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "One of the registered handlers is invalid", "phalcon/Mvc/Micro.zep", 936); - return; - } - ZEPHIR_OBS_NVAR(&methods); - zephir_array_fetch_long(&methods, &handler, 0, PH_NOISY, "phalcon/Mvc/Micro.zep", 939); - ZEPHIR_OBS_NVAR(&pattern); - zephir_array_fetch_long(&pattern, &handler, 1, PH_NOISY, "phalcon/Mvc/Micro.zep", 940); - ZEPHIR_OBS_NVAR(&subHandler); - zephir_array_fetch_long(&subHandler, &handler, 2, PH_NOISY, "phalcon/Mvc/Micro.zep", 941); - ZEPHIR_OBS_NVAR(&name); - zephir_array_fetch_long(&name, &handler, 3, PH_NOISY, "phalcon/Mvc/Micro.zep", 942); - ZEPHIR_INIT_NVAR(&realHandler); - zephir_create_array(&realHandler, 2, 0); - zephir_array_fast_append(&realHandler, &lazyHandler); - zephir_array_fast_append(&realHandler, &subHandler); - if (!(ZEPHIR_IS_EMPTY(&prefix))) { - if (ZEPHIR_IS_STRING(&pattern, "/")) { - ZEPHIR_CPY_WRT(&prefixedPattern, &prefix); - } else { - ZEPHIR_INIT_NVAR(&prefixedPattern); - ZEPHIR_CONCAT_VV(&prefixedPattern, &prefix, &pattern); - } - } else { - ZEPHIR_CPY_WRT(&prefixedPattern, &pattern); - } - ZEPHIR_CALL_METHOD(&route, this_ptr, "map", &_3, 0, &prefixedPattern, &realHandler); - zephir_check_call_status(); - _4$$7 = Z_TYPE_P(&methods) == IS_STRING; - if (_4$$7) { - _4$$7 = !ZEPHIR_IS_STRING(&methods, ""); - } - _5$$7 = _4$$7; - if (!(_5$$7)) { - _5$$7 = Z_TYPE_P(&methods) == IS_ARRAY; - } - if (_5$$7) { - ZEPHIR_CALL_METHOD(NULL, &route, "via", NULL, 0, &methods); - zephir_check_call_status(); - } - if (Z_TYPE_P(&name) == IS_STRING) { - ZEPHIR_CALL_METHOD(NULL, &route, "setname", NULL, 0, &name); - zephir_check_call_status(); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &handlers, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &handlers, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&handler, &handlers, "current", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&handler) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_micro_exception_ce, "One of the registered handlers is invalid", "phalcon/Mvc/Micro.zep", 936); - return; - } - ZEPHIR_OBS_NVAR(&methods); - zephir_array_fetch_long(&methods, &handler, 0, PH_NOISY, "phalcon/Mvc/Micro.zep", 939); - ZEPHIR_OBS_NVAR(&pattern); - zephir_array_fetch_long(&pattern, &handler, 1, PH_NOISY, "phalcon/Mvc/Micro.zep", 940); - ZEPHIR_OBS_NVAR(&subHandler); - zephir_array_fetch_long(&subHandler, &handler, 2, PH_NOISY, "phalcon/Mvc/Micro.zep", 941); - ZEPHIR_OBS_NVAR(&name); - zephir_array_fetch_long(&name, &handler, 3, PH_NOISY, "phalcon/Mvc/Micro.zep", 942); - ZEPHIR_INIT_NVAR(&_6$$15); - zephir_create_array(&_6$$15, 2, 0); - zephir_array_fast_append(&_6$$15, &lazyHandler); - zephir_array_fast_append(&_6$$15, &subHandler); - ZEPHIR_CPY_WRT(&realHandler, &_6$$15); - if (!(ZEPHIR_IS_EMPTY(&prefix))) { - if (ZEPHIR_IS_STRING(&pattern, "/")) { - ZEPHIR_CPY_WRT(&prefixedPattern, &prefix); - } else { - ZEPHIR_INIT_NVAR(&prefixedPattern); - ZEPHIR_CONCAT_VV(&prefixedPattern, &prefix, &pattern); - } - } else { - ZEPHIR_CPY_WRT(&prefixedPattern, &pattern); - } - ZEPHIR_CALL_METHOD(&route, this_ptr, "map", &_3, 0, &prefixedPattern, &realHandler); - zephir_check_call_status(); - _7$$15 = Z_TYPE_P(&methods) == IS_STRING; - if (_7$$15) { - _7$$15 = !ZEPHIR_IS_STRING(&methods, ""); - } - _8$$15 = _7$$15; - if (!(_8$$15)) { - _8$$15 = Z_TYPE_P(&methods) == IS_ARRAY; - } - if (_8$$15) { - ZEPHIR_CALL_METHOD(NULL, &route, "via", NULL, 0, &methods); - zephir_check_call_status(); - } - if (Z_TYPE_P(&name) == IS_STRING) { - ZEPHIR_CALL_METHOD(NULL, &route, "setname", NULL, 0, &name); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, &handlers, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&handler); - RETURN_THIS(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, notFound) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, getStatement) { - zval *handler, handler_sub; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&handler_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &handler); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("notFoundHandler"), handler); - RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Micro, offsetExists) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, perform) { + zval _0, _1, _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval offset_sub; - zval *offset; zval *this_ptr = getThis(); - ZVAL_UNDEF(&offset_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(offset) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &offset); - - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hasservice", NULL, 0, offset); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getstatement", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getbindvalues", NULL, 0); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&_0, "perform", NULL, 0, &_1, &_2); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, offsetGet) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, setFlag) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval offset_sub; - zval *offset; + zend_bool enable; + zval *flag_param = NULL, *enable_param = NULL, __$true, flags, _0$$4, _1$$4; + zval flag; zval *this_ptr = getThis(); - ZVAL_UNDEF(&offset_sub); + ZVAL_UNDEF(&flag); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&flags); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&_1$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(offset) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(flag) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(enable) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &offset); + zephir_fetch_params(1, 1, 1, &flag_param, &enable_param); + zephir_get_strval(&flag, flag_param); + if (!enable_param) { + enable = 1; + } else { + enable = zephir_get_boolval(enable_param); + } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getservice", NULL, 0, offset); - zephir_check_call_status(); - RETURN_MM(); + if (enable) { + zephir_update_property_array_multi(this_ptr, SL("store"), &__$true, SL("sz"), 3, SL("FLAGS"), &flag); + } else { + zephir_read_property(&_0$$4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&flags); + zephir_array_fetch_string(&flags, &_0$$4, SL("FLAGS"), PH_NOISY, "phalcon/DataMapper/Query/AbstractQuery.zep", 148); + zephir_array_unset(&flags, &flag, PH_SEPARATE); + ZEPHIR_INIT_VAR(&_1$$4); + ZVAL_STRING(&_1$$4, "FLAGS"); + zephir_update_property_array(this_ptr, SL("store"), &_1$$4, &flags); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, offsetSet) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, quoteIdentifier) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval offset_sub, value_sub; - zval *offset, *value; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, *type_param = NULL, _0, _1; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&offset_sub); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ZVAL(offset) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &offset, &value); + zephir_fetch_params(1, 1, 1, &name_param, &type_param); + zephir_get_strval(&name, name_param); + if (!type_param) { + type = 2; + } else { + type = zephir_get_intval(type_param); + } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setservice", NULL, 0, offset, value); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, type); + ZEPHIR_RETURN_CALL_METHOD(&_0, "quote", NULL, 0, &name, &_1); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, offsetUnset) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, reset) { + zval _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval offset_sub, _0, _2, _1$$3; - zval *offset; zval *this_ptr = getThis(); - ZVAL_UNDEF(&offset_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_1$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(offset) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&_15); + ZVAL_UNDEF(&_16); + ZVAL_UNDEF(&_17); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &offset); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_di_factorydefault_ce); - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 411); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &_1$$3); - } - zephir_read_property(&_2, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_2, "remove", NULL, 0, offset); - zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_0); + array_init(&_0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "COLUMNS"); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_0); + ZEPHIR_INIT_VAR(&_2); + array_init(&_2); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "FLAGS"); + zephir_update_property_array(this_ptr, SL("store"), &_3, &_2); + ZEPHIR_INIT_VAR(&_4); + array_init(&_4); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, "FROM"); + zephir_update_property_array(this_ptr, SL("store"), &_5, &_4); + ZEPHIR_INIT_VAR(&_6); + array_init(&_6); + ZEPHIR_INIT_VAR(&_7); + ZVAL_STRING(&_7, "GROUP"); + zephir_update_property_array(this_ptr, SL("store"), &_7, &_6); + ZEPHIR_INIT_VAR(&_8); + array_init(&_8); + ZEPHIR_INIT_VAR(&_9); + ZVAL_STRING(&_9, "HAVING"); + zephir_update_property_array(this_ptr, SL("store"), &_9, &_8); + ZEPHIR_INIT_VAR(&_10); + ZVAL_STRING(&_10, "LIMIT"); + ZEPHIR_INIT_VAR(&_11); + ZVAL_LONG(&_11, 0); + zephir_update_property_array(this_ptr, SL("store"), &_10, &_11); + ZEPHIR_INIT_VAR(&_12); + array_init(&_12); + ZEPHIR_INIT_VAR(&_13); + ZVAL_STRING(&_13, "ORDER"); + zephir_update_property_array(this_ptr, SL("store"), &_13, &_12); + ZEPHIR_INIT_VAR(&_14); + ZVAL_STRING(&_14, "OFFSET"); + ZEPHIR_INIT_VAR(&_15); + ZVAL_LONG(&_15, 0); + zephir_update_property_array(this_ptr, SL("store"), &_14, &_15); + ZEPHIR_INIT_VAR(&_16); + array_init(&_16); + ZEPHIR_INIT_VAR(&_17); + ZVAL_STRING(&_17, "WHERE"); + zephir_update_property_array(this_ptr, SL("store"), &_17, &_16); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, options) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, buildFlags) { + zval _0, _1, _2, _3, _4, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); - } else { - ZEPHIR_INIT_VAR(&routePattern); - } - - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addoptions", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("FLAGS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractQuery.zep", 194); + if (ZEPHIR_IS_EMPTY(&_1)) { + RETURN_MM_STRING(""); + } + ZEPHIR_INIT_VAR(&_2); + ZEPHIR_INIT_VAR(&_3); + zephir_read_property(&_4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_5, &_4, SL("FLAGS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractQuery.zep", 198); + zephir_array_keys(&_3, &_5); + zephir_fast_join_str(&_2, SL(" "), &_3); + ZEPHIR_CONCAT_SV(return_value, " ", &_2); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, patch) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, buildReturning) { + zval _0, _1, _2, _3, _4, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); - } else { - ZEPHIR_INIT_VAR(&routePattern); - } - - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addpatch", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("RETURNING"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractQuery.zep", 208); + if (ZEPHIR_IS_EMPTY(&_1)) { + RETURN_MM_STRING(""); + } + zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_4, &_3, SL("RETURNING"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/AbstractQuery.zep", 212); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, ","); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "indent", NULL, 0, &_4, &_5); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + ZEPHIR_CONCAT_SV(return_value, " RETURNING", &_2); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, post) +static PHP_METHOD(Phalcon_DataMapper_Query_AbstractQuery, indent) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + zval glue, _1; + zval *collection_param = NULL, *glue_param = NULL, _0; + zval collection; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); + ZVAL_UNDEF(&collection); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&glue); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ARRAY(collection) + Z_PARAM_OPTIONAL + Z_PARAM_STR(glue) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); + zephir_fetch_params(1, 1, 1, &collection_param, &glue_param); + zephir_get_arrval(&collection, collection_param); + if (!glue_param) { + ZEPHIR_INIT_VAR(&glue); + ZVAL_STRING(&glue, ""); } else { - ZEPHIR_INIT_VAR(&routePattern); + zephir_get_strval(&glue, glue_param); } - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addpost", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + if (ZEPHIR_IS_EMPTY(&collection)) { + RETURN_MM_STRING(""); + } + ZEPHIR_INIT_VAR(&_0); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_VS(&_1, &glue, " "); + zephir_fast_join(&_0, &_1, &collection); + ZEPHIR_CONCAT_SV(return_value, " ", &_0); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, put) +zend_object *zephir_init_properties_Phalcon_DataMapper_Query_AbstractQuery(zend_class_entry *class_type) { + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *routePattern_param = NULL, *handler, handler_sub, router, route, _0; - zval routePattern; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + + + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("store"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_Bind) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Query, Bind, phalcon, datamapper_query_bind, phalcon_datamapper_query_bind_method_entry, 0); + + zend_declare_property_long(phalcon_datamapper_query_bind_ce, SL("inlineCount"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_query_bind_ce, SL("store"), ZEND_ACC_PROTECTED); + phalcon_datamapper_query_bind_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Query_Bind; + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, bindInline) +{ + zend_bool _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *value, value_sub, *type_param = NULL, key, _3, _4, _5, _1$$3, _2$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&routePattern); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(routePattern) - Z_PARAM_ZVAL(handler) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &routePattern_param, &handler); - if (UNEXPECTED(Z_TYPE_P(routePattern_param) != IS_STRING && Z_TYPE_P(routePattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'routePattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(routePattern_param) == IS_STRING)) { - zephir_get_strval(&routePattern, routePattern_param); + zephir_fetch_params(1, 1, 1, &value, &type_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&routePattern); + type = zephir_get_intval(type_param); } - ZEPHIR_CALL_METHOD(&router, this_ptr, "getrouter", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &router, "addput", NULL, 0, &routePattern); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &route, "getrouteid", NULL, 0); + _0 = Z_TYPE_P(value) == IS_OBJECT; + if (_0) { + _0 = zephir_instance_of_ev(value, phalcon_datamapper_query_select_ce); + } + if (_0) { + ZEPHIR_CALL_METHOD(&_1$$3, value, "getstatement", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "(", &_1$$3, ")"); + RETURN_MM(); + } + if (Z_TYPE_P(value) == IS_ARRAY) { + ZVAL_LONG(&_2$$4, type); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "inlinearray", NULL, 0, value, &_2$$4); + zephir_check_call_status(); + RETURN_MM(); + } + zephir_read_property(&_3, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_ZVAL_NREF(_4); + ZVAL_LONG(&_4, (zephir_get_numberval(&_3) + 1)); + zephir_update_property_zval(this_ptr, ZEND_STRL("inlineCount"), &_4); + zephir_read_property(&_4, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&key); + ZEPHIR_CONCAT_SVS(&key, "__", &_4, "__"); + ZVAL_LONG(&_5, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", NULL, 0, &key, value, &_5); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("handlers"), &_0, handler); - RETURN_CCTOR(&route); + ZEPHIR_CONCAT_SV(return_value, ":", &key); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Micro, setActiveHandler) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, remove) { - zval *activeHandler, activeHandler_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *key_param = NULL, store, _0; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&activeHandler_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&store); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(activeHandler) + Z_PARAM_STR(key) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &activeHandler); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &key_param); + zephir_get_strval(&key, key_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("activeHandler"), activeHandler); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&store, &_0); + zephir_array_unset(&store, &key, PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("store"), &store); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, setDI) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, setValue) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *container, container_sub, _0, _1, _2$$3; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *key_param = NULL, *value, value_sub, *type_param = NULL, localType; + zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&localType); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(key) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &container); + zephir_fetch_params(1, 2, 1, &key_param, &value, &type_param); + zephir_get_strval(&key, key_param); + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "application"); - ZEPHIR_CALL_METHOD(&_0, container, "has", NULL, 0, &_1); - zephir_check_call_status(); - if (!(zephir_is_true(&_0))) { - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "application"); - ZEPHIR_CALL_METHOD(NULL, container, "set", NULL, 0, &_2$$3, this_ptr); + ZEPHIR_INIT_VAR(&localType); + ZVAL_LONG(&localType, type); + if (ZEPHIR_IS_LONG_IDENTICAL(&localType, -1)) { + ZEPHIR_CALL_METHOD(&localType, this_ptr, "gettype", NULL, 0, value); zephir_check_call_status(); } - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 2, 0); + zephir_array_fast_append(&_0, value); + zephir_array_fast_append(&_0, &localType); + zephir_update_property_array(this_ptr, SL("store"), &key, &_0); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, setModelBinder) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, setValues) { + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelBinder, modelBinder_sub, *cache = NULL, cache_sub, __$null, _0$$3; + zephir_fcall_cache_entry *_5 = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *values_param = NULL, *type_param = NULL, key, value, *_0, _1, _4$$3, _6$$4; + zval values; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelBinder_sub); - ZVAL_UNDEF(&cache_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_6$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_OBJECT_OF_CLASS(modelBinder, phalcon_mvc_model_binderinterface_ce) + Z_PARAM_ARRAY(values) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(cache) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &modelBinder, &cache); - if (!cache) { - cache = &cache_sub; - ZEPHIR_CPY_WRT(cache, &__$null); + zephir_fetch_params(1, 1, 1, &values_param, &type_param); + zephir_get_arrval(&values, values_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_SEPARATE_PARAM(cache); + type = zephir_get_intval(type_param); } - if (Z_TYPE_P(cache) == IS_STRING) { - ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getservice", NULL, 0, cache); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(cache, &_0$$3); - } - if (Z_TYPE_P(cache) != IS_NULL) { - ZEPHIR_CALL_METHOD(NULL, modelBinder, "setcache", NULL, 0, cache); + zephir_is_iterable(&values, 0, "phalcon/DataMapper/Query/Bind.zep", 111); + if (Z_TYPE_P(&values) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&values), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&key); + if (_3 != NULL) { + ZVAL_STR_COPY(&key, _3); + } else { + ZVAL_LONG(&key, _2); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + ZVAL_LONG(&_4$$3, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", &_5, 0, &key, &value, &_4$$3); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &values, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&key, &values, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); + zephir_check_call_status(); + ZVAL_LONG(&_6$$4, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", &_5, 0, &key, &value, &_6$$4); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_update_property_zval(this_ptr, ZEND_STRL("modelBinder"), modelBinder); - RETURN_THIS(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Micro, setResponseHandler) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, toArray) { - zval *handler, handler_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(handler) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &handler); - zephir_update_property_zval(this_ptr, ZEND_STRL("responseHandler"), handler); - RETURN_THISW(); + RETURN_MEMBER(getThis(), "store"); } -static PHP_METHOD(Phalcon_Mvc_Micro, setService) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, getType) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool shared; - zval *serviceName_param = NULL, *definition, definition_sub, *shared_param = NULL, container, _0; - zval serviceName; + zval *value, value_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&serviceName); - ZVAL_UNDEF(&definition_sub); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(serviceName) - Z_PARAM_ZVAL(definition) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(shared) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &serviceName_param, &definition, &shared_param); - if (UNEXPECTED(Z_TYPE_P(serviceName_param) != IS_STRING && Z_TYPE_P(serviceName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'serviceName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(serviceName_param) == IS_STRING)) { - zephir_get_strval(&serviceName, serviceName_param); - } else { - ZEPHIR_INIT_VAR(&serviceName); - } - if (!shared_param) { - shared = 0; - } else { - shared = zephir_get_boolval(shared_param); - } + zephir_fetch_params_without_memory_grow(1, 0, &value); - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_INIT_NVAR(&container); - object_init_ex(&container, phalcon_di_factorydefault_ce); - ZEPHIR_CALL_METHOD(NULL, &container, "__construct", NULL, 411); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); + if (Z_TYPE_P(value) == IS_NULL) { + RETURN_LONG(0); } - if (shared) { - ZVAL_BOOL(&_0, 1); - } else { - ZVAL_BOOL(&_0, 0); + if (((Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE) == 1)) { + RETURN_LONG(5); } - ZEPHIR_RETURN_CALL_METHOD(&container, "set", NULL, 416, &serviceName, definition, &_0); - zephir_check_call_status(); - RETURN_MM(); + if (Z_TYPE_P(value) == IS_LONG) { + RETURN_LONG(1); + } + RETURN_LONG(2); } -static PHP_METHOD(Phalcon_Mvc_Micro, stop) +static PHP_METHOD(Phalcon_DataMapper_Query_Bind, inlineArray) { - zval __$true, __$false; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_5 = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *data_param = NULL, *type_param = NULL, key, value, *_0, _1, _11, _2$$3, _3$$3, _4$$3, _6$$3, _7$$4, _8$$4, _9$$4, _10$$4; + zval data, keys; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&keys); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_ARRAY(data) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &data_param, &type_param); + zephir_get_arrval(&data, data_param); + type = zephir_get_intval(type_param); - if (1) { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$true); + + ZEPHIR_INIT_VAR(&keys); + array_init(&keys); + zephir_is_iterable(&data, 0, "phalcon/DataMapper/Query/Bind.zep", 170); + if (Z_TYPE_P(&data) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&data), _0) + { + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_ZVAL_NREF(_3$$3); + ZVAL_LONG(&_3$$3, (zephir_get_numberval(&_2$$3) + 1)); + zephir_update_property_zval(this_ptr, ZEND_STRL("inlineCount"), &_3$$3); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&key); + ZEPHIR_CONCAT_SVS(&key, "__", &_3$$3, "__"); + ZVAL_LONG(&_4$$3, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", &_5, 0, &key, &value, &_4$$3); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6$$3); + ZEPHIR_CONCAT_SV(&_6$$3, ":", &key); + zephir_array_append(&keys, &_6$$3, PH_SEPARATE, "phalcon/DataMapper/Query/Bind.zep", 167); + } ZEND_HASH_FOREACH_END(); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("stopped"), &__$false); + ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &data, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_7$$4, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_ZVAL_NREF(_8$$4); + ZVAL_LONG(&_8$$4, (zephir_get_numberval(&_7$$4) + 1)); + zephir_update_property_zval(this_ptr, ZEND_STRL("inlineCount"), &_8$$4); + zephir_read_property(&_8$$4, this_ptr, ZEND_STRL("inlineCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&key); + ZEPHIR_CONCAT_SVS(&key, "__", &_8$$4, "__"); + ZVAL_LONG(&_9$$4, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvalue", &_5, 0, &key, &value, &_9$$4); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$4); + ZEPHIR_CONCAT_SV(&_10$$4, ":", &key); + zephir_array_append(&keys, &_10$$4, PH_SEPARATE, "phalcon/DataMapper/Query/Bind.zep", 167); + ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_VAR(&_11); + zephir_fast_join_str(&_11, SL(", "), &keys); + ZEPHIR_CONCAT_SVS(return_value, "(", &_11, ")"); + RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Mvc_Micro(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_DataMapper_Query_Bind(zend_class_entry *class_type) { - zval _0, _2, _4, _6, _8, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7; + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); ZEPHIR_MM_GROW(); @@ -38310,35 +38267,11 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Micro(zend_class_entry *class_ty { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("handlers"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("handlers"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("finishHandlers"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("finishHandlers"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("beforeHandlers"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("beforeHandlers"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("afterHandlers"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("afterHandlers"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("afterBindingHandlers"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("afterBindingHandlers"), &_9$$7); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("store"), &_1$$3); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -38355,7443 +38288,4160 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Micro(zend_class_entry *class_ty -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model) +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_Delete) { - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Model, phalcon, mvc_model, phalcon_di_abstractinjectionaware_ce, phalcon_mvc_model_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_long(phalcon_mvc_model_ce, SL("dirtyState"), 1, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("dirtyRelated"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("errorMessages"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("modelsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("modelsMetaData"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("related"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_mvc_model_ce, SL("operationMade"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("oldSnapshot"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_model_ce, SL("skipped"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("snapshot"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("transaction"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("uniqueKey"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("uniqueParams"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_ce, SL("uniqueTypes"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model; - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("DIRTY_STATE_DETACHED"), 2); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("DIRTY_STATE_PERSISTENT"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("DIRTY_STATE_TRANSIENT"), 1); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("OP_CREATE"), 1); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("OP_DELETE"), 3); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("OP_NONE"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_model_ce, SL("OP_UPDATE"), 2); - - zephir_declare_class_constant_string(phalcon_mvc_model_ce, SL("TRANSACTION_INDEX"), "transaction"); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Query, Delete, phalcon, datamapper_query_delete, phalcon_datamapper_query_abstractconditions_ce, phalcon_datamapper_query_delete_method_entry, 0); - zend_class_implements(phalcon_mvc_model_ce, 1, phalcon_mvc_entityinterface_ce); - zend_class_implements(phalcon_mvc_model_ce, 1, phalcon_mvc_modelinterface_ce); - zend_class_implements(phalcon_mvc_model_ce, 1, phalcon_mvc_model_resultinterface_ce); - zend_class_implements(phalcon_mvc_model_ce, 1, zend_ce_serializable); - zend_class_implements(phalcon_mvc_model_ce, 1, php_json_serializable_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model, getTransaction) +static PHP_METHOD(Phalcon_DataMapper_Query_Delete, __construct) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; + zval *connection, connection_sub, *bind, bind_sub, _1, _2, _3, _4; zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&bind_sub); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + Z_PARAM_OBJECT_OF_CLASS(bind, phalcon_datamapper_query_bind_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &connection, &bind); - RETURN_MEMBER(getThis(), "transaction"); + + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_delete_ce, getThis(), "__construct", &_0, 0, connection, bind); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, __construct) +static PHP_METHOD(Phalcon_DataMapper_Query_Delete, from) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *data = NULL, data_sub, *container = NULL, container_sub, *modelsManager = NULL, modelsManager_sub, __$null, _1$$5, _2$$5; + zval *table_param = NULL, _0; + zval table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&container_sub); - ZVAL_UNDEF(&modelsManager_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_1$$5); - ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(data) - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(container, phalcon_di_diinterface_ce) - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(modelsManager, phalcon_mvc_model_managerinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(table) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &data, &container, &modelsManager); - if (!data) { - data = &data_sub; - data = &__$null; - } - if (!container) { - container = &container_sub; - ZEPHIR_CPY_WRT(container, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(container); - } - if (!modelsManager) { - modelsManager = &modelsManager_sub; - ZEPHIR_CPY_WRT(modelsManager, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(modelsManager); - } + zephir_fetch_params(1, 1, 0, &table_param); + zephir_get_strval(&table, table_param); - if (Z_TYPE_P(container) != IS_OBJECT) { - ZEPHIR_CALL_CE_STATIC(container, phalcon_di_di_ce, "getdefault", &_0, 0); - zephir_check_call_status(); - } - if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ODM", "phalcon/Mvc/Model.zep", 183); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); - if (Z_TYPE_P(modelsManager) != IS_OBJECT) { - ZEPHIR_INIT_VAR(&_2$$5); - ZVAL_STRING(&_2$$5, "modelsManager"); - ZEPHIR_CALL_METHOD(&_1$$5, container, "getshared", NULL, 0, &_2$$5); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(modelsManager, &_1$$5); - if (UNEXPECTED(Z_TYPE_P(modelsManager) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The injected service 'modelsManager' is not valid", "phalcon/Mvc/Model.zep", 197); - return; - } - } - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsManager"), modelsManager); - ZEPHIR_CALL_METHOD(NULL, modelsManager, "initialize", NULL, 0, this_ptr); - zephir_check_call_status(); - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("onconstruct")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "onconstruct", NULL, 0, data); - zephir_check_call_status(); - } - if (Z_TYPE_P(data) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "assign", NULL, 0, data); - zephir_check_call_status(); - } - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "FROM"); + zephir_update_property_array(this_ptr, SL("store"), &_0, &table); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, __call) +static PHP_METHOD(Phalcon_DataMapper_Query_Delete, returning) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval arguments; - zval *method_param = NULL, *arguments_param = NULL, modelName, status, records, _1, _2, _3; - zval method; + zval *columns_param = NULL, _0, _1, _2, _3; + zval columns; zval *this_ptr = getThis(); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&status); - ZVAL_UNDEF(&records); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&arguments); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(method) - Z_PARAM_ARRAY(arguments) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(columns) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &method_param, &arguments_param); - zephir_get_strval(&method, method_param); - zephir_get_arrval(&arguments, arguments_param); + zephir_fetch_params(1, 1, 0, &columns_param); + zephir_get_arrval(&columns, columns_param); - ZEPHIR_CALL_SELF(&records, "invokefinder", &_0, 417, &method, &arguments); - zephir_check_call_status(); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&records)) { - RETURN_CCTOR(&records); - } - ZEPHIR_INIT_VAR(&modelName); - zephir_get_class(&modelName, this_ptr, 0); - ZEPHIR_CALL_METHOD(&records, this_ptr, "getrelatedrecords", NULL, 0, &modelName, &method, &arguments); - zephir_check_call_status(); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&records)) { - RETURN_CCTOR(&records); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&status, &_1, "missingmethod", NULL, 0, this_ptr, &method, &arguments); - zephir_check_call_status(); - if (Z_TYPE_P(&status) != IS_NULL) { - RETURN_CCTOR(&status); - } - ZEPHIR_INIT_VAR(&_2); - object_init_ex(&_2, phalcon_mvc_model_exception_ce); + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("RETURNING"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Delete.zep", 60); + zephir_fast_array_merge(&_0, &_2, &columns); ZEPHIR_INIT_VAR(&_3); - ZEPHIR_CONCAT_SVSVS(&_3, "The method '", &method, "' doesn't exist on model '", &modelName, "'"); - ZEPHIR_CALL_METHOD(NULL, &_2, "__construct", NULL, 29, &_3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_2, "phalcon/Mvc/Model.zep", 266); - ZEPHIR_MM_RESTORE(); - return; + ZVAL_STRING(&_3, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_3, &_0); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, __callStatic) +static PHP_METHOD(Phalcon_DataMapper_Query_Delete, getStatement) { + zval _0, _1, _2, _3, _4, _5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval arguments; - zval *method_param = NULL, *arguments_param = NULL, modelName, records, _1, _2; - zval method; zval *this_ptr = getThis(); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&records); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&arguments); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(method) - Z_PARAM_ARRAY(arguments) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &method_param, &arguments_param); - zephir_get_strval(&method, method_param); - zephir_get_arrval(&arguments, arguments_param); - - ZEPHIR_CALL_SELF(&records, "invokefinder", &_0, 417, &method, &arguments); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "buildflags", NULL, 0); zephir_check_call_status(); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&records)) { - RETURN_CCTOR(&records); - } - ZEPHIR_INIT_VAR(&modelName); - zephir_get_called_class(&modelName); - ZEPHIR_INIT_VAR(&_1); - object_init_ex(&_1, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_SVSVS(&_2, "The method '", &method, "' doesn't exist on model '", &modelName, "'"); - ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 29, &_2); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Delete.zep", 75); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "WHERE"); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "buildcondition", NULL, 0, &_4); zephir_check_call_status(); - zephir_throw_exception_debug(&_1, "phalcon/Mvc/Model.zep", 292); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_CALL_METHOD(&_5, this_ptr, "buildreturning", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVVV(return_value, "DELETE", &_0, " FROM ", &_2, &_3, &_5); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, __get) +static PHP_METHOD(Phalcon_DataMapper_Query_Delete, reset) { + zval _1, _2, _3, _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *property_param = NULL, modelName, manager, lowerProperty, relation, _0, _4, _5, _6, _1$$3, _2$$4, _3$$4; - zval property, method; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&property); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&lowerProperty); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(property) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &property_param); - if (UNEXPECTED(Z_TYPE_P(property_param) != IS_STRING && Z_TYPE_P(property_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'property' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(property_param) == IS_STRING)) { - zephir_get_strval(&property, property_param); - } else { - ZEPHIR_INIT_VAR(&property); - } - - ZEPHIR_INIT_VAR(&modelName); - zephir_get_class(&modelName, this_ptr, 0); - ZEPHIR_CALL_METHOD(&manager, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&lowerProperty); - zephir_fast_strtolower(&lowerProperty, &property); - ZEPHIR_CALL_METHOD(&_0, &manager, "getrelationbyalias", NULL, 0, &modelName, &lowerProperty); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_delete_ce, getThis(), "reset", &_0, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_0); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("dirtyRelated"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset(&_1$$3, &lowerProperty)) { - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("dirtyRelated"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_3$$4, &_2$$4, &lowerProperty, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 324); - RETURN_CTOR(&_3$$4); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getrelated", NULL, 0, &lowerProperty); - zephir_check_call_status(); - RETURN_MM(); - } + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); ZEPHIR_INIT_VAR(&_4); - zephir_camelize(&_4, &property, NULL ); - ZEPHIR_INIT_VAR(&_5); - ZEPHIR_CONCAT_SV(&_5, "get", &_4); - zephir_get_strval(&method, &_5); - if ((zephir_method_exists(this_ptr, &method) == SUCCESS)) { - ZEPHIR_RETURN_CALL_METHOD_ZVAL(this_ptr, &method, NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_INIT_VAR(&_6); - ZEPHIR_CONCAT_SVSV(&_6, "Access to undefined property ", &modelName, "::", &property); - ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", NULL, 7, &_6); - zephir_check_call_status(); - RETURN_MM_NULL(); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, __isset) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_Insert) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Query, Insert, phalcon, datamapper_query_insert, phalcon_datamapper_query_abstractquery_ce, phalcon_datamapper_query_insert_method_entry, 0); + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *property_param = NULL, manager, method, modelName, relation, result, _0, _1$$4; - zval property; + zephir_fcall_cache_entry *_0 = NULL; + zval *connection, connection_sub, *bind, bind_sub, _1, _2, _3, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&property); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&bind_sub); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(property) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + Z_PARAM_OBJECT_OF_CLASS(bind, phalcon_datamapper_query_bind_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &property_param); - if (UNEXPECTED(Z_TYPE_P(property_param) != IS_STRING && Z_TYPE_P(property_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'property' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(property_param) == IS_STRING)) { - zephir_get_strval(&property, property_param); - } else { - ZEPHIR_INIT_VAR(&property); - } + zephir_fetch_params(1, 2, 0, &connection, &bind); - ZEPHIR_INIT_VAR(&modelName); - zephir_get_class(&modelName, this_ptr, 0); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&_0, &manager, "getrelationbyalias", NULL, 0, &modelName, &property); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_insert_ce, getThis(), "__construct", &_0, 0, connection, bind); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_0); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&result); - ZVAL_BOOL(&result, 1); - } else { - ZEPHIR_INIT_VAR(&_1$$4); - zephir_camelize(&_1$$4, &property, NULL ); - ZEPHIR_INIT_VAR(&method); - ZEPHIR_CONCAT_SV(&method, "get", &_1$$4); - ZEPHIR_INIT_NVAR(&result); - ZVAL_BOOL(&result, (zephir_method_exists(this_ptr, &method) == SUCCESS)); - } - RETURN_CCTOR(&result); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, __serialize) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, column) { - zend_bool _2, _3; - zval attributes, manager, dirtyState, snapshot, _0, _1, _4, _5$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *column_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _1$$3, _2$$3; + zval column, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&dirtyState); - ZVAL_UNDEF(&snapshot); + ZVAL_UNDEF(&column); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(column) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - ZEPHIR_INIT_VAR(&snapshot); - ZVAL_NULL(&snapshot); - ZEPHIR_CALL_METHOD(&attributes, this_ptr, "toarray", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&dirtyState, &_0); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - ZEPHIR_CALL_METHOD(&_1, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); - zephir_check_call_status(); - _2 = zephir_is_true(&_1); - if (_2) { - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - _2 = Z_TYPE_P(&_0) != IS_NULL; + zephir_fetch_params(1, 1, 2, &column_param, &value, &type_param); + zephir_get_strval(&column, column_param); + if (!value) { + value = &value_sub; + value = &__$null; } - _3 = _2; - if (_3) { - zephir_read_property(&_4, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - _3 = !ZEPHIR_IS_EQUAL(&attributes, &_4); + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); } - if (_3) { - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&snapshot, &_5$$3); + + + ZEPHIR_INIT_VAR(&_0); + ZEPHIR_CONCAT_SV(&_0, ":", &column); + zephir_update_property_array_multi(this_ptr, SL("store"), &_0, SL("sz"), 3, SL("COLUMNS"), &column); + if (Z_TYPE_P(value) != IS_NULL) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_2$$3, type); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "setvalue", NULL, 0, &column, value, &_2$$3); + zephir_check_call_status(); } - zephir_create_array(return_value, 3, 0); - zephir_array_update_string(return_value, SL("attributes"), &attributes, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("snapshot"), &snapshot, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("dirtyState"), &dirtyState, PH_COPY | PH_SEPARATE); - RETURN_MM(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, __set) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, columns) { - zend_bool _0; - zval related; + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *property_param = NULL, *value, value_sub, lowerProperty, modelName, manager, relation, referencedModel, item, dirtyState, _14, _15, _1$$3, _2$$4, _3$$4, _4$$6, _5$$7, _6$$8, _7$$9, _8$$9, *_9$$10, _10$$10, _11$$10, _12$$17, _13$$18, _16$$20, _17$$21; - zval property, _18$$21; + zval *columns_param = NULL, column, value, *_0, _1; + zval columns; zval *this_ptr = getThis(); - ZVAL_UNDEF(&property); - ZVAL_UNDEF(&_18$$21); - ZVAL_UNDEF(&value_sub); - ZVAL_UNDEF(&lowerProperty); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&item); - ZVAL_UNDEF(&dirtyState); - ZVAL_UNDEF(&_14); - ZVAL_UNDEF(&_15); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$6); - ZVAL_UNDEF(&_5$$7); - ZVAL_UNDEF(&_6$$8); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_8$$9); - ZVAL_UNDEF(&_10$$10); - ZVAL_UNDEF(&_11$$10); - ZVAL_UNDEF(&_12$$17); - ZVAL_UNDEF(&_13$$18); - ZVAL_UNDEF(&_16$$20); - ZVAL_UNDEF(&_17$$21); - ZVAL_UNDEF(&related); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(property) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(columns) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &property_param, &value); - zephir_get_strval(&property, property_param); + zephir_fetch_params(1, 1, 0, &columns_param); + zephir_get_arrval(&columns, columns_param); - _0 = Z_TYPE_P(value) == IS_OBJECT; - if (_0) { - _0 = zephir_instance_of_ev(value, phalcon_mvc_modelinterface_ce); - } - if (_0) { - ZEPHIR_INIT_VAR(&lowerProperty); - zephir_fast_strtolower(&lowerProperty, &property); - ZEPHIR_INIT_VAR(&modelName); - zephir_get_class(&modelName, this_ptr, 0); - ZEPHIR_CALL_METHOD(&manager, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1$$3, &manager, "getrelationbyalias", NULL, 0, &modelName, &lowerProperty); + zephir_is_iterable(&columns, 0, "phalcon/DataMapper/Query/Insert.zep", 76); + if (Z_TYPE_P(&columns) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&columns), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&column); + if (_3 != NULL) { + ZVAL_STR_COPY(&column, _3); + } else { + ZVAL_LONG(&column, _2); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + if (Z_TYPE_P(&column) == IS_LONG) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &value); + zephir_check_call_status(); + } else { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &column, &value); + zephir_check_call_status(); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_1$$3); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&dirtyState, &_2$$4); - ZEPHIR_CALL_METHOD(&_3$$4, value, "getdirtystate", NULL, 0); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &columns, "valid", NULL, 0); zephir_check_call_status(); - if (!ZEPHIR_IS_EQUAL(&_3$$4, &dirtyState)) { - ZEPHIR_INIT_NVAR(&dirtyState); - ZVAL_LONG(&dirtyState, 1); + if (!zend_is_true(&_1)) { + break; } - zephir_unset_property_array(this_ptr, ZEND_STRL("related"), &lowerProperty); - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_2$$4, &lowerProperty, PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("dirtyRelated"), &lowerProperty, value); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &dirtyState); - RETVAL_ZVAL(value, 1, 0); - RETURN_MM(); - } - } else if (Z_TYPE_P(value) == IS_ARRAY) { - ZEPHIR_INIT_NVAR(&lowerProperty); - zephir_fast_strtolower(&lowerProperty, &property); - ZEPHIR_INIT_NVAR(&modelName); - zephir_get_class(&modelName, this_ptr, 0); - ZEPHIR_CALL_METHOD(&manager, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4$$6, &manager, "getrelationbyalias", NULL, 0, &modelName, &lowerProperty); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_4$$6); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&_5$$7, &relation, "gettype", NULL, 0); + ZEPHIR_CALL_METHOD(&column, &columns, "key", NULL, 0); zephir_check_call_status(); - do { - if (ZEPHIR_IS_LONG(&_5$$7, 0) || ZEPHIR_IS_LONG(&_5$$7, 1)) { - ZEPHIR_CALL_METHOD(&_6$$8, &relation, "getreferencedmodel", NULL, 0); + ZEPHIR_CALL_METHOD(&value, &columns, "current", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&column) == IS_LONG) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &value); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, &manager, "load", NULL, 0, &_6$$8); + } else { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &column, &value); zephir_check_call_status(); - if (Z_TYPE_P(&referencedModel) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(NULL, &referencedModel, "assign", NULL, 0, value); - zephir_check_call_status(); - zephir_unset_property_array(this_ptr, ZEND_STRL("related"), &lowerProperty); - zephir_read_property(&_7$$9, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_7$$9, &lowerProperty, PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("dirtyRelated"), &lowerProperty, &referencedModel); - ZEPHIR_INIT_ZVAL_NREF(_8$$9); - ZVAL_LONG(&_8$$9, 1); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_8$$9); - RETVAL_ZVAL(value, 1, 0); - RETURN_MM(); - } - break; - } - if (ZEPHIR_IS_LONG(&_5$$7, 2) || ZEPHIR_IS_LONG(&_5$$7, 4)) { - ZEPHIR_INIT_VAR(&related); - array_init(&related); - zephir_is_iterable(value, 0, "phalcon/Mvc/Model.zep", 495); - if (Z_TYPE_P(value) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(value), _9$$10) - { - ZEPHIR_INIT_NVAR(&item); - ZVAL_COPY(&item, _9$$10); - if (Z_TYPE_P(&item) == IS_OBJECT) { - if (zephir_instance_of_ev(&item, phalcon_mvc_modelinterface_ce)) { - zephir_array_append(&related, &item, PH_SEPARATE, "phalcon/Mvc/Model.zep", 490); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, value, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_10$$10, value, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_10$$10)) { - break; - } - ZEPHIR_CALL_METHOD(&item, value, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&item) == IS_OBJECT) { - if (zephir_instance_of_ev(&item, phalcon_mvc_modelinterface_ce)) { - zephir_array_append(&related, &item, PH_SEPARATE, "phalcon/Mvc/Model.zep", 490); - } - } - ZEPHIR_CALL_METHOD(NULL, value, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&item); - zephir_unset_property_array(this_ptr, ZEND_STRL("related"), &lowerProperty); - zephir_read_property(&_11$$10, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_11$$10, &lowerProperty, PH_SEPARATE); - if (zephir_fast_count_int(&related) > 0) { - zephir_update_property_array(this_ptr, SL("dirtyRelated"), &lowerProperty, &related); - ZEPHIR_INIT_ZVAL_NREF(_12$$17); - ZVAL_LONG(&_12$$17, 1); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_12$$17); - } else { - zephir_unset_property_array(this_ptr, ZEND_STRL("dirtyRelated"), &lowerProperty); - zephir_read_property(&_13$$18, this_ptr, ZEND_STRL("dirtyRelated"), PH_NOISY_CC | PH_READONLY); - zephir_array_unset(&_13$$18, &lowerProperty, PH_SEPARATE); - } - RETVAL_ZVAL(value, 1, 0); - RETURN_MM(); } - } while(0); - - } - } - ZEPHIR_CALL_METHOD(&_14, this_ptr, "possiblesetter", NULL, 418, &property, value); - zephir_check_call_status(); - if (zephir_is_true(&_14)) { - RETVAL_ZVAL(value, 1, 0); - RETURN_MM(); - } - ZEPHIR_CALL_FUNCTION(&_15, "property_exists", NULL, 287, this_ptr, &property); - zephir_check_call_status(); - if (zephir_is_true(&_15)) { - ZEPHIR_CALL_METHOD(&manager, this_ptr, "getmodelsmanager", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_16$$20, &manager, "isvisiblemodelproperty", NULL, 0, this_ptr, &property); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_16$$20))) { - ZEPHIR_INIT_VAR(&_17$$21); - object_init_ex(&_17$$21, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_18$$21); - ZEPHIR_CONCAT_SVS(&_18$$21, "Cannot access property '", &property, "' (not public)."); - ZEPHIR_CALL_METHOD(NULL, &_17$$21, "__construct", NULL, 29, &_18$$21); + ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$21, "phalcon/Mvc/Model.zep", 524); - ZEPHIR_MM_RESTORE(); - return; } } - zephir_update_property_zval_zval(this_ptr, &property, value); - RETVAL_ZVAL(value, 1, 0); - RETURN_MM(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&column); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, __unserialize) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, into) { - zend_string *_7$$6; - zend_ulong _6$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_1 = NULL; - zval *data_param = NULL, container, manager, key, value, snapshot, properties, dirtyState, _2, _3, _0$$3, *_4$$6, _5$$6; - zval data; + zval *table_param = NULL, _0; + zval table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&properties); - ZVAL_UNDEF(&dirtyState); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(data) + Z_PARAM_STR(table) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &data_param); - zephir_get_arrval(&data, data_param); + zephir_fetch_params(1, 1, 0, &table_param); + zephir_get_strval(&table, table_param); - if (!(zephir_array_isset_string(&data, SL("attributes")))) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - zephir_array_update_string(&_0$$3, SL("attributes"), &data, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&data, &_0$$3); - } - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_1, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&container) == IS_NULL) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ODM", "phalcon/Mvc/Model.zep", 553); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "modelsManager"); - ZEPHIR_CALL_METHOD(&_2, &container, "getshared", NULL, 0, &_3); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_2); - if (Z_TYPE_P(&manager) == IS_NULL) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The injected service 'modelsManager' is not valid", "phalcon/Mvc/Model.zep", 568); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsManager"), &manager); - ZEPHIR_CALL_METHOD(NULL, &manager, "initialize", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&properties); - if (zephir_array_isset_string_fetch(&properties, &data, SL("attributes"), 0)) { - zephir_is_iterable(&properties, 0, "phalcon/Mvc/Model.zep", 591); - if (Z_TYPE_P(&properties) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&properties), _6$$6, _7$$6, _4$$6) - { - ZEPHIR_INIT_NVAR(&key); - if (_7$$6 != NULL) { - ZVAL_STR_COPY(&key, _7$$6); - } else { - ZVAL_LONG(&key, _6$$6); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _4$$6); - zephir_update_property_zval_zval(this_ptr, &key, &value); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &properties, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$6, &properties, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$6)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &properties, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &properties, "current", NULL, 0); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &key, &value); - ZEPHIR_CALL_METHOD(NULL, &properties, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - } else { - ZEPHIR_INIT_NVAR(&properties); - array_init(&properties); - } - ZEPHIR_OBS_VAR(&dirtyState); - if (zephir_array_isset_string_fetch(&dirtyState, &data, SL("dirtyState"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &dirtyState); - } - ZEPHIR_CALL_METHOD(&_2, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); - zephir_check_call_status(); - if (zephir_is_true(&_2)) { - if (zephir_array_isset_string_fetch(&snapshot, &data, SL("snapshot"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &snapshot); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &properties); - } - } - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "FROM"); + zephir_update_property_array(this_ptr, SL("store"), &_0, &table); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, addBehavior) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, getLastInsertId) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *behavior, behavior_sub, _0; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&behavior_sub); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(behavior, phalcon_mvc_model_behaviorinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &behavior); + zephir_fetch_params(1, 0, 1, &name_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); + } else { + zephir_get_strval(&name, name_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "addbehavior", NULL, 0, this_ptr, behavior); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "lastinsertid", NULL, 0, &name); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, appendMessage) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, getStatement) { - zval *message, message_sub; + zval _0, _1, _2, _3, _4; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&message_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "buildflags", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Insert.zep", 113); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "buildcolumns", NULL, 201); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4, this_ptr, "buildreturning", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVVV(return_value, "INSERT", &_0, " INTO ", &_2, &_3, &_4); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, returning) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *columns_param = NULL, _0, _1, _2, _3; + zval columns; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(message, phalcon_messages_messageinterface_ce) + Z_PARAM_ARRAY(columns) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &message); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &columns_param); + zephir_get_arrval(&columns, columns_param); - zephir_update_property_array_append(this_ptr, SL("errorMessages"), message); - RETURN_THISW(); + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("RETURNING"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Insert.zep", 127); + zephir_fast_array_merge(&_0, &_2, &columns); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_3, &_0); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, assign) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, reset) { - zend_bool _7$$12, _13$$18, _16$$22, _20$$28; - zend_string *_3$$3; - zend_ulong _2$$3; + zval _1, _2, _3, _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_9 = NULL, *_12 = NULL, *_15 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *data_param = NULL, *whiteList = NULL, whiteList_sub, *dataColumnMap = NULL, dataColumnMap_sub, __$null, key, keyMapped, value, attribute, attributeField, metaData, columnMap, disableAssignSetters, _4, *_5, _6, *_0$$3, _1$$3, _8$$13, _10$$16, _11$$16, _14$$18, _17$$23, _18$$26, _19$$26, _21$$28; - zval data, dataMapped; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&dataMapped); - ZVAL_UNDEF(&whiteList_sub); - ZVAL_UNDEF(&dataColumnMap_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&keyMapped); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&disableAssignSetters); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_8$$13); - ZVAL_UNDEF(&_10$$16); - ZVAL_UNDEF(&_11$$16); - ZVAL_UNDEF(&_14$$18); - ZVAL_UNDEF(&_17$$23); - ZVAL_UNDEF(&_18$$26); - ZVAL_UNDEF(&_19$$26); - ZVAL_UNDEF(&_21$$28); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_ARRAY(data) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(whiteList) - Z_PARAM_ZVAL_OR_NULL(dataColumnMap) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &data_param, &whiteList, &dataColumnMap); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!whiteList) { - whiteList = &whiteList_sub; - whiteList = &__$null; - } - if (!dataColumnMap) { - dataColumnMap = &dataColumnMap_sub; - dataColumnMap = &__$null; - } - - ZEPHIR_INIT_VAR(&disableAssignSetters); - ZVAL_BOOL(&disableAssignSetters, ZEPHIR_GLOBAL(orm).disable_assign_setters); - if (Z_TYPE_P(dataColumnMap) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&dataMapped); - array_init(&dataMapped); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model.zep", 751); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _2$$3, _3$$3, _0$$3) - { - ZEPHIR_INIT_NVAR(&key); - if (_3$$3 != NULL) { - ZVAL_STR_COPY(&key, _3$$3); - } else { - ZVAL_LONG(&key, _2$$3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0$$3); - ZEPHIR_OBS_NVAR(&keyMapped); - if (zephir_array_isset_fetch(&keyMapped, dataColumnMap, &key, 0)) { - zephir_array_update_zval(&dataMapped, &keyMapped, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1$$3, &data, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&keyMapped); - if (zephir_array_isset_fetch(&keyMapped, dataColumnMap, &key, 0)) { - zephir_array_update_zval(&dataMapped, &keyMapped, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - } else { - ZEPHIR_CPY_WRT(&dataMapped, &data); - } - if (zephir_fast_count_int(&dataMapped) == 0) { - RETURN_THIS(); - } - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - ZEPHIR_CALL_METHOD(&_4, &metaData, "getattributes", NULL, 0, this_ptr); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_insert_ce, getThis(), "reset", &_0, 0); zephir_check_call_status(); - zephir_is_iterable(&_4, 0, "phalcon/Mvc/Model.zep", 808); - if (Z_TYPE_P(&_4) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_4), _5) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _5); - _7$$12 = !(zephir_array_isset(&columnMap, &attribute)); - if (_7$$12) { - _7$$12 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_7$$12) { - ZEPHIR_CALL_SELF(&_8$$13, "caseinsensitivecolumnmap", &_9, 419, &columnMap, &attribute); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&attribute, &_8$$13); - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (!(zephir_array_isset_fetch(&attributeField, &columnMap, &attribute, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_10$$16); - object_init_ex(&_10$$16, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_11$$16); - ZEPHIR_CONCAT_SVS(&_11$$16, "Column '", &attribute, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_10$$16, "__construct", &_12, 29, &_11$$16); - zephir_check_call_status(); - zephir_throw_exception_debug(&_10$$16, "phalcon/Mvc/Model.zep", 782); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &attribute); - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_array_isset_fetch(&value, &dataMapped, &attributeField, 0)) { - if (Z_TYPE_P(whiteList) == IS_ARRAY) { - if (!(zephir_fast_in_array(&attributeField, whiteList))) { - continue; - } - } - _13$$18 = zephir_is_true(&disableAssignSetters); - if (!(_13$$18)) { - ZEPHIR_CALL_METHOD(&_14$$18, this_ptr, "possiblesetter", &_15, 418, &attributeField, &value); - zephir_check_call_status(); - _13$$18 = !zephir_is_true(&_14$$18); - } - if (_13$$18) { - zephir_update_property_zval_zval(this_ptr, &attributeField, &value); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_4, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_6, &_4, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_6)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &_4, "current", NULL, 0); - zephir_check_call_status(); - _16$$22 = !(zephir_array_isset(&columnMap, &attribute)); - if (_16$$22) { - _16$$22 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_16$$22) { - ZEPHIR_CALL_SELF(&_17$$23, "caseinsensitivecolumnmap", &_9, 419, &columnMap, &attribute); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&attribute, &_17$$23); - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (!(zephir_array_isset_fetch(&attributeField, &columnMap, &attribute, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_18$$26); - object_init_ex(&_18$$26, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_19$$26); - ZEPHIR_CONCAT_SVS(&_19$$26, "Column '", &attribute, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_18$$26, "__construct", &_12, 29, &_19$$26); - zephir_check_call_status(); - zephir_throw_exception_debug(&_18$$26, "phalcon/Mvc/Model.zep", 782); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &attribute); - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_array_isset_fetch(&value, &dataMapped, &attributeField, 0)) { - if (Z_TYPE_P(whiteList) == IS_ARRAY) { - if (!(zephir_fast_in_array(&attributeField, whiteList))) { - continue; - } - } - _20$$28 = zephir_is_true(&disableAssignSetters); - if (!(_20$$28)) { - ZEPHIR_CALL_METHOD(&_21$$28, this_ptr, "possiblesetter", &_15, 418, &attributeField, &value); - zephir_check_call_status(); - _20$$28 = !zephir_is_true(&_21$$28); - } - if (_20$$28) { - zephir_update_property_zval_zval(this_ptr, &attributeField, &value); - } - } - ZEPHIR_CALL_METHOD(NULL, &_4, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - RETURN_THIS(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, average) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, set) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *parameters_param = NULL, result, _0, _1; - zval parameters; + zval *column_param = NULL, *value = NULL, value_sub, __$null, _0; + zval column; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters); - ZVAL_UNDEF(&result); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(column) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(parameters) + Z_PARAM_ZVAL_OR_NULL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters_param); - if (!parameters_param) { - ZEPHIR_INIT_VAR(¶meters); - array_init(¶meters); + zephir_fetch_params(1, 1, 1, &column_param, &value); + zephir_get_strval(&column, column_param); + if (!value) { + value = &value_sub; + ZEPHIR_CPY_WRT(value, &__$null); } else { - zephir_get_arrval(¶meters, parameters_param); + ZEPHIR_SEPARATE_PARAM(value); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "AVG"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "average"); - ZEPHIR_CALL_SELF(&result, "groupresult", NULL, 0, &_0, &_1, ¶meters); - zephir_check_call_status(); - if (Z_TYPE_P(&result) == IS_STRING) { - RETURN_MM_DOUBLE(zephir_get_doubleval(&result)); + if (Z_TYPE_P(value) == IS_NULL) { + ZEPHIR_INIT_NVAR(value); + ZVAL_STRING(value, "NULL"); } - RETURN_CCTOR(&result); + zephir_update_property_array_multi(this_ptr, SL("store"), value, SL("sz"), 3, SL("COLUMNS"), &column); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_0, "remove", NULL, 0, &column); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, cloneResult) +static PHP_METHOD(Phalcon_DataMapper_Query_Insert, buildColumns) { - zend_string *_4; - zend_ulong _3; + zend_string *_6; + zend_ulong _5; + zval columns; + zval column, _0, _1, _2, *_3, _4, _10, _11, _12, _13, _14, _15, _16, _17, _7$$3, _9$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long dirtyState, ZEPHIR_LAST_CALL_STATUS; - zval data; - zval *base, base_sub, *data_param = NULL, *dirtyState_param = NULL, instance, key, value, _0, *_1, _2, _5; + zephir_fcall_cache_entry *_8 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&base_sub); - ZVAL_UNDEF(&instance); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&column); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&data); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_OBJECT_OF_CLASS(base, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(data) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(dirtyState) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&_15); + ZVAL_UNDEF(&_16); + ZVAL_UNDEF(&_17); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&columns); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &base, &data_param, &dirtyState_param); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!dirtyState_param) { - dirtyState = 0; - } else { - dirtyState = zephir_get_intval(dirtyState_param); - } - - ZEPHIR_INIT_VAR(&instance); - if (zephir_clone(&instance, base) == FAILURE) { - RETURN_MM(); - } - ZVAL_LONG(&_0, dirtyState); - ZEPHIR_CALL_METHOD(NULL, &instance, "setdirtystate", NULL, 0, &_0); - zephir_check_call_status(); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model.zep", 898); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _3, _4, _1) + ZEPHIR_INIT_VAR(&columns); + array_init(&columns); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Insert.zep", 176); + ZEPHIR_INIT_VAR(&_2); + zephir_is_iterable(&_1, 0, "phalcon/DataMapper/Query/Insert.zep", 180); + if (Z_TYPE_P(&_1) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_1), _5, _6, _3) { - ZEPHIR_INIT_NVAR(&key); - if (_4 != NULL) { - ZVAL_STR_COPY(&key, _4); + ZEPHIR_INIT_NVAR(&column); + if (_6 != NULL) { + ZVAL_STR_COPY(&column, _6); } else { - ZVAL_LONG(&key, _3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _1); - if (UNEXPECTED(Z_TYPE_P(&key) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid key in array data provided to dumpResult()", "phalcon/Mvc/Model.zep", 888); - return; + ZVAL_LONG(&column, _5); } - zephir_update_property_zval_zval(&instance, &key, &value); + ZEPHIR_INIT_NVAR(&_2); + ZVAL_COPY(&_2, _3); + ZEPHIR_CALL_METHOD(&_7$$3, this_ptr, "quoteidentifier", &_8, 0, &column); + zephir_check_call_status(); + zephir_array_append(&columns, &_7$$3, PH_SEPARATE, "phalcon/DataMapper/Query/Insert.zep", 177); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &_1, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_2, &data, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_4, &_1, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (!zend_is_true(&_4)) { break; } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); + ZEPHIR_CALL_METHOD(&column, &_1, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, &_1, "current", NULL, 0); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&key) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid key in array data provided to dumpResult()", "phalcon/Mvc/Model.zep", 888); - return; - } - zephir_update_property_zval_zval(&instance, &key, &value); - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "quoteidentifier", &_8, 0, &column); + zephir_check_call_status(); + zephir_array_append(&columns, &_9$$4, PH_SEPARATE, "phalcon/DataMapper/Query/Insert.zep", 177); + ZEPHIR_CALL_METHOD(NULL, &_1, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - ZEPHIR_INIT_VAR(&_5); - ZVAL_STRING(&_5, "afterFetch"); - ZEPHIR_CALL_METHOD(NULL, &instance, "fireevent", NULL, 0, &_5); + ZEPHIR_INIT_NVAR(&_2); + ZEPHIR_INIT_NVAR(&column); + ZEPHIR_INIT_VAR(&_10); + ZEPHIR_INIT_VAR(&_12); + ZVAL_STRING(&_12, ","); + ZEPHIR_CALL_METHOD(&_11, this_ptr, "indent", NULL, 0, &columns, &_12); zephir_check_call_status(); - RETURN_CCTOR(&instance); -} - -static PHP_METHOD(Phalcon_Mvc_Model, cloneResultMap) -{ - zend_string *_4; - zend_ulong _3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL, *_14 = NULL; - zend_bool keepSnapshots, _5$$6, _11$$3, _16$$24, _21$$21; - zend_long dirtyState, ZEPHIR_LAST_CALL_STATUS; - zval data; - zval *base, base_sub, *data_param = NULL, *columnMap, columnMap_sub, *dirtyState_param = NULL, *keepSnapshots_param = NULL, instance, attribute, key, value, castValue, attributeName, metaData, reverseMap, _0, *_1, _2, _6$$9, _7$$9, _9$$11, _10$$11, _12$$13, _13$$14, _15$$18, _17$$27, _18$$27, _19$$29, _20$$29, _22$$31, _23$$32, _24$$36, _25$$40; - zval *this_ptr = getThis(); + zephir_fast_trim(&_10, &_11, NULL , ZEPHIR_TRIM_LEFT); + ZEPHIR_INIT_NVAR(&_12); + zephir_read_property(&_14, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_15, &_14, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Insert.zep", 183); + ZEPHIR_CALL_FUNCTION(&_16, "array_values", NULL, 14, &_15); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_17); + ZVAL_STRING(&_17, ","); + ZEPHIR_CALL_METHOD(&_13, this_ptr, "indent", NULL, 0, &_16, &_17); + zephir_check_call_status(); + zephir_fast_trim(&_12, &_13, NULL , ZEPHIR_TRIM_LEFT); + ZEPHIR_CONCAT_SVSVS(return_value, " (", &_10, ") VALUES (", &_12, ")"); + RETURN_MM(); +} - ZVAL_UNDEF(&base_sub); - ZVAL_UNDEF(&columnMap_sub); - ZVAL_UNDEF(&instance); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&castValue); - ZVAL_UNDEF(&attributeName); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&reverseMap); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_9$$11); - ZVAL_UNDEF(&_10$$11); - ZVAL_UNDEF(&_12$$13); - ZVAL_UNDEF(&_13$$14); - ZVAL_UNDEF(&_15$$18); - ZVAL_UNDEF(&_17$$27); - ZVAL_UNDEF(&_18$$27); - ZVAL_UNDEF(&_19$$29); - ZVAL_UNDEF(&_20$$29); - ZVAL_UNDEF(&_22$$31); - ZVAL_UNDEF(&_23$$32); - ZVAL_UNDEF(&_24$$36); - ZVAL_UNDEF(&_25$$40); - ZVAL_UNDEF(&data); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 5) - Z_PARAM_ZVAL(base) - Z_PARAM_ARRAY(data) - Z_PARAM_ZVAL(columnMap) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(dirtyState) - Z_PARAM_BOOL_OR_NULL(keepSnapshots, is_null_true) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 2, &base, &data_param, &columnMap, &dirtyState_param, &keepSnapshots_param); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!dirtyState_param) { - dirtyState = 0; - } else { - dirtyState = zephir_get_intval(dirtyState_param); - } - if (!keepSnapshots_param) { - keepSnapshots = 0; - } else { - keepSnapshots = zephir_get_boolval(keepSnapshots_param); - } +#ifdef HAVE_CONFIG_H +#endif - ZEPHIR_INIT_VAR(&instance); - if (zephir_clone(&instance, base) == FAILURE) { - RETURN_MM(); - } - ZVAL_LONG(&_0, dirtyState); - ZEPHIR_CALL_METHOD(NULL, &instance, "setdirtystate", NULL, 0, &_0); - zephir_check_call_status(); - zephir_is_iterable(&data, 1, "phalcon/Mvc/Model.zep", 1031); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _3, _4, _1) - { - ZEPHIR_INIT_NVAR(&key); - if (_4 != NULL) { - ZVAL_STR_COPY(&key, _4); - } else { - ZVAL_LONG(&key, _3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _1); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - if (Z_TYPE_P(columnMap) != IS_ARRAY) { - zephir_update_property_zval_zval(&instance, &key, &value); - continue; - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - _5$$6 = Z_TYPE_P(columnMap) == IS_ARRAY; - if (_5$$6) { - _5$$6 = !(ZEPHIR_IS_EMPTY(columnMap)); - } - if (_5$$6) { - ZEPHIR_CALL_METHOD(&metaData, &instance, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&reverseMap, &metaData, "getreversecolumnmap", NULL, 0, &instance); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, &reverseMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_6$$9); - object_init_ex(&_6$$9, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_7$$9); - ZEPHIR_CONCAT_SVS(&_7$$9, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_6$$9, "__construct", &_8, 29, &_7$$9); - zephir_check_call_status(); - zephir_throw_exception_debug(&_6$$9, "phalcon/Mvc/Model.zep", 958); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_9$$11); - object_init_ex(&_9$$11, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_10$$11); - ZEPHIR_CONCAT_SVS(&_10$$11, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_9$$11, "__construct", &_8, 29, &_10$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_9$$11, "phalcon/Mvc/Model.zep", 967); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - if (Z_TYPE_P(&attribute) != IS_ARRAY) { - zephir_update_property_zval_zval(&instance, &attribute, &value); - continue; - } - _11$$3 = !ZEPHIR_IS_STRING(&value, ""); - if (_11$$3) { - _11$$3 = Z_TYPE_P(&value) != IS_NULL; - } - if (_11$$3) { - zephir_array_fetch_long(&_12$$13, &attribute, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 981); - do { - if (ZEPHIR_IS_LONG(&_12$$13, 0) || ZEPHIR_IS_LONG(&_12$$13, 21) || ZEPHIR_IS_LONG(&_12$$13, 22) || ZEPHIR_IS_LONG(&_12$$13, 26)) { - ZVAL_LONG(&_13$$14, 10); - ZEPHIR_CALL_FUNCTION(&castValue, "intval", &_14, 38, &value, &_13$$14); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_12$$13, 3) || ZEPHIR_IS_LONG(&_12$$13, 9) || ZEPHIR_IS_LONG(&_12$$13, 7)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_DOUBLE(&castValue, zephir_get_doubleval(&value)); - break; - } - if (ZEPHIR_IS_LONG(&_12$$13, 8)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_BOOL(&castValue, zephir_get_boolval(&value)); - break; - } - ZEPHIR_CPY_WRT(&castValue, &value); - break; - } while(0); - } else { - zephir_array_fetch_long(&_15$$18, &attribute, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 1004); - do { - if (ZEPHIR_IS_LONG(&_15$$18, 14) || ZEPHIR_IS_LONG(&_15$$18, 8) || ZEPHIR_IS_LONG(&_15$$18, 3) || ZEPHIR_IS_LONG(&_15$$18, 9) || ZEPHIR_IS_LONG(&_15$$18, 7) || ZEPHIR_IS_LONG(&_15$$18, 0) || ZEPHIR_IS_LONG(&_15$$18, 21) || ZEPHIR_IS_LONG(&_15$$18, 22) || ZEPHIR_IS_LONG(&_15$$18, 26)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_NULL(&castValue); - break; - } - ZEPHIR_CPY_WRT(&castValue, &value); - break; - } while(0); - } - ZEPHIR_OBS_NVAR(&attributeName); - zephir_array_fetch_long(&attributeName, &attribute, 0, PH_NOISY, "phalcon/Mvc/Model.zep", 1023); - zephir_update_property_zval_zval(&instance, &attributeName, &castValue); - zephir_array_update_zval(&data, &key, &castValue, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &data, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - if (Z_TYPE_P(columnMap) != IS_ARRAY) { - zephir_update_property_zval_zval(&instance, &key, &value); - continue; - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - _16$$24 = Z_TYPE_P(columnMap) == IS_ARRAY; - if (_16$$24) { - _16$$24 = !(ZEPHIR_IS_EMPTY(columnMap)); - } - if (_16$$24) { - ZEPHIR_CALL_METHOD(&metaData, &instance, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&reverseMap, &metaData, "getreversecolumnmap", NULL, 0, &instance); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, &reverseMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_17$$27); - object_init_ex(&_17$$27, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_18$$27); - ZEPHIR_CONCAT_SVS(&_18$$27, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_17$$27, "__construct", &_8, 29, &_18$$27); - zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$27, "phalcon/Mvc/Model.zep", 958); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_19$$29); - object_init_ex(&_19$$29, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_20$$29); - ZEPHIR_CONCAT_SVS(&_20$$29, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_19$$29, "__construct", &_8, 29, &_20$$29); - zephir_check_call_status(); - zephir_throw_exception_debug(&_19$$29, "phalcon/Mvc/Model.zep", 967); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - if (Z_TYPE_P(&attribute) != IS_ARRAY) { - zephir_update_property_zval_zval(&instance, &attribute, &value); - continue; - } - _21$$21 = !ZEPHIR_IS_STRING(&value, ""); - if (_21$$21) { - _21$$21 = Z_TYPE_P(&value) != IS_NULL; - } - if (_21$$21) { - zephir_array_fetch_long(&_22$$31, &attribute, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 981); - do { - if (ZEPHIR_IS_LONG(&_22$$31, 0) || ZEPHIR_IS_LONG(&_22$$31, 21) || ZEPHIR_IS_LONG(&_22$$31, 22) || ZEPHIR_IS_LONG(&_22$$31, 26)) { - ZVAL_LONG(&_23$$32, 10); - ZEPHIR_CALL_FUNCTION(&castValue, "intval", &_14, 38, &value, &_23$$32); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_22$$31, 3) || ZEPHIR_IS_LONG(&_22$$31, 9) || ZEPHIR_IS_LONG(&_22$$31, 7)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_DOUBLE(&castValue, zephir_get_doubleval(&value)); - break; - } - if (ZEPHIR_IS_LONG(&_22$$31, 8)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_BOOL(&castValue, zephir_get_boolval(&value)); - break; - } - ZEPHIR_CPY_WRT(&castValue, &value); - break; - } while(0); - } else { - zephir_array_fetch_long(&_24$$36, &attribute, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 1004); - do { - if (ZEPHIR_IS_LONG(&_24$$36, 14) || ZEPHIR_IS_LONG(&_24$$36, 8) || ZEPHIR_IS_LONG(&_24$$36, 3) || ZEPHIR_IS_LONG(&_24$$36, 9) || ZEPHIR_IS_LONG(&_24$$36, 7) || ZEPHIR_IS_LONG(&_24$$36, 0) || ZEPHIR_IS_LONG(&_24$$36, 21) || ZEPHIR_IS_LONG(&_24$$36, 22) || ZEPHIR_IS_LONG(&_24$$36, 26)) { - ZEPHIR_INIT_NVAR(&castValue); - ZVAL_NULL(&castValue); - break; - } - ZEPHIR_CPY_WRT(&castValue, &value); - break; - } while(0); - } - ZEPHIR_OBS_NVAR(&attributeName); - zephir_array_fetch_long(&attributeName, &attribute, 0, PH_NOISY, "phalcon/Mvc/Model.zep", 1023); - zephir_update_property_zval_zval(&instance, &attributeName, &castValue); - zephir_array_update_zval(&data, &key, &castValue, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - if (keepSnapshots) { - ZEPHIR_CALL_METHOD(NULL, &instance, "setsnapshotdata", NULL, 0, &data, columnMap); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &instance, "setoldsnapshotdata", NULL, 0, &data, columnMap); - zephir_check_call_status(); - } - if ((zephir_method_exists_ex(&instance, ZEND_STRL("fireevent")) == SUCCESS)) { - ZEPHIR_INIT_VAR(&_25$$40); - ZVAL_STRING(&_25$$40, "afterFetch"); - ZEPHIR_CALL_METHOD(NULL, &instance, "fireevent", NULL, 0, &_25$$40); - zephir_check_call_status(); - } - RETURN_CCTOR(&instance); +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_QueryFactory) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Query, QueryFactory, phalcon, datamapper_query_queryfactory, phalcon_datamapper_query_queryfactory_method_entry, 0); + + zend_declare_property_string(phalcon_datamapper_query_queryfactory_ce, SL("selectClass"), "", ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model, cloneResultMapHydrate) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, __construct) { - zend_bool _4$$7, _10$$16; - zend_string *_3; - zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL, *_9 = NULL; - zend_long hydrationMode, ZEPHIR_LAST_CALL_STATUS; - zval *data_param = NULL, *columnMap, columnMap_sub, *hydrationMode_param = NULL, key, value, attribute, attributeName, *_0, _1, _5$$8, _7$$10, _8$$10, _11$$17, _12$$19, _13$$19; - zval data, hydrateArray; + zval *selectClass_param = NULL; + zval selectClass; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&hydrateArray); - ZVAL_UNDEF(&columnMap_sub); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&attributeName); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_5$$8); - ZVAL_UNDEF(&_7$$10); - ZVAL_UNDEF(&_8$$10); - ZVAL_UNDEF(&_11$$17); - ZVAL_UNDEF(&_12$$19); - ZVAL_UNDEF(&_13$$19); + ZVAL_UNDEF(&selectClass); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_ARRAY(data) - Z_PARAM_ZVAL(columnMap) - Z_PARAM_LONG(hydrationMode) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(selectClass) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &data_param, &columnMap, &hydrationMode_param); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - hydrationMode = zephir_get_intval(hydrationMode_param); - - - if (Z_TYPE_P(columnMap) != IS_ARRAY) { - if (hydrationMode == 1) { - RETURN_CTOR(&data); - } - } - ZEPHIR_INIT_VAR(&hydrateArray); - array_init(&hydrateArray); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model.zep", 1115); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _2, _3, _0) - { - ZEPHIR_INIT_NVAR(&key); - if (_3 != NULL) { - ZVAL_STR_COPY(&key, _3); - } else { - ZVAL_LONG(&key, _2); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - if (Z_TYPE_P(columnMap) == IS_ARRAY) { - _4$$7 = !(zephir_array_isset(columnMap, &key)); - if (_4$$7) { - _4$$7 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_4$$7) { - ZEPHIR_CALL_SELF(&_5$$8, "caseinsensitivecolumnmap", &_6, 419, columnMap, &key); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&key, &_5$$8); - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_7$$10); - object_init_ex(&_7$$10, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_8$$10); - ZEPHIR_CONCAT_SVS(&_8$$10, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_7$$10, "__construct", &_9, 29, &_8$$10); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$10, "phalcon/Mvc/Model.zep", 1094); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeName); - zephir_array_fetch_long(&attributeName, &attribute, 0, PH_NOISY, "phalcon/Mvc/Model.zep", 1104); - } else { - ZEPHIR_CPY_WRT(&attributeName, &attribute); - } - zephir_array_update_zval(&hydrateArray, &attributeName, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&hydrateArray, &key, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); + zephir_fetch_params(1, 0, 1, &selectClass_param); + if (!selectClass_param) { + ZEPHIR_INIT_VAR(&selectClass); + ZVAL_STRING(&selectClass, ""); } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &data, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - if (Z_TYPE_P(columnMap) == IS_ARRAY) { - _10$$16 = !(zephir_array_isset(columnMap, &key)); - if (_10$$16) { - _10$$16 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_10$$16) { - ZEPHIR_CALL_SELF(&_11$$17, "caseinsensitivecolumnmap", &_6, 419, columnMap, &key); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&key, &_11$$17); - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_12$$19); - object_init_ex(&_12$$19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_13$$19); - ZEPHIR_CONCAT_SVS(&_13$$19, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_12$$19, "__construct", &_9, 29, &_13$$19); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$19, "phalcon/Mvc/Model.zep", 1094); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeName); - zephir_array_fetch_long(&attributeName, &attribute, 0, PH_NOISY, "phalcon/Mvc/Model.zep", 1104); - } else { - ZEPHIR_CPY_WRT(&attributeName, &attribute); - } - zephir_array_update_zval(&hydrateArray, &attributeName, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&hydrateArray, &key, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_get_strval(&selectClass, selectClass_param); } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - if (hydrationMode != 1) { - zephir_convert_to_object(&hydrateArray); - RETURN_CTOR(&hydrateArray); + + + if (ZEPHIR_IS_EMPTY(&selectClass)) { + ZEPHIR_INIT_NVAR(&selectClass); + ZVAL_STRING(&selectClass, "Phalcon\\DataMapper\\Query\\Select"); } - RETURN_CTOR(&hydrateArray); + zephir_update_property_zval(this_ptr, ZEND_STRL("selectClass"), &selectClass); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, collectRelatedToSave) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, newBind) { - zend_bool _6$$3, _8$$6; - zend_string *_5; - zend_ulong _4; - zval related, dirtyRelated; - zval name, record, _0, _1, *_2, _3, _7$$3, _9$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&record); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_9$$6); - ZVAL_UNDEF(&related); - ZVAL_UNDEF(&dirtyRelated); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&related, &_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("dirtyRelated"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&dirtyRelated, &_1); - zephir_is_iterable(&related, 0, "phalcon/Mvc/Model.zep", 1156); - if (Z_TYPE_P(&related) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&related), _4, _5, _2) - { - ZEPHIR_INIT_NVAR(&name); - if (_5 != NULL) { - ZVAL_STR_COPY(&name, _5); - } else { - ZVAL_LONG(&name, _4); - } - ZEPHIR_INIT_NVAR(&record); - ZVAL_COPY(&record, _2); - if (zephir_array_isset(&dirtyRelated, &name)) { - continue; - } - _6$$3 = Z_TYPE_P(&record) != IS_OBJECT; - if (!(_6$$3)) { - _6$$3 = !((zephir_instance_of_ev(&record, phalcon_mvc_modelinterface_ce))); - } - if (_6$$3) { - continue; - } - ZVAL_LONG(&_7$$3, 1); - ZEPHIR_CALL_METHOD(NULL, &record, "setdirtystate", NULL, 0, &_7$$3); - zephir_check_call_status(); - zephir_array_update_zval(&dirtyRelated, &name, &record, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &related, "rewind", NULL, 0); + object_init_ex(return_value, phalcon_datamapper_query_bind_ce); + if (zephir_has_constructor(return_value)) { + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &related, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&name, &related, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&record, &related, "current", NULL, 0); - zephir_check_call_status(); - if (zephir_array_isset(&dirtyRelated, &name)) { - continue; - } - _8$$6 = Z_TYPE_P(&record) != IS_OBJECT; - if (!(_8$$6)) { - _8$$6 = !((zephir_instance_of_ev(&record, phalcon_mvc_modelinterface_ce))); - } - if (_8$$6) { - continue; - } - ZVAL_LONG(&_9$$6, 1); - ZEPHIR_CALL_METHOD(NULL, &record, "setdirtystate", NULL, 0, &_9$$6); - zephir_check_call_status(); - zephir_array_update_zval(&dirtyRelated, &name, &record, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &related, "next", NULL, 0); - zephir_check_call_status(); - } } - ZEPHIR_INIT_NVAR(&record); - ZEPHIR_INIT_NVAR(&name); - RETURN_CTOR(&dirtyRelated); + + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, count) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, newDelete) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *parameters = NULL, parameters_sub, __$null, result, _0, _1; + zval *connection, connection_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&result); + ZVAL_UNDEF(&connection_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "COUNT"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "rowcount"); - ZEPHIR_CALL_SELF(&result, "groupresult", NULL, 0, &_0, &_1, parameters); + object_init_ex(return_value, phalcon_datamapper_query_delete_ce); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "newbind", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(&result) == IS_STRING) { - RETURN_MM_LONG(zephir_get_intval(&result)); - } - RETURN_CCTOR(&result); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 202, connection, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, create) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, newInsert) { - zval _2$$3; - zval metaData, _0, _1, _3$$3, _4$$3, _5$$3, _6$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData); + ZVAL_UNDEF(&connection_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_2$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getwriteconnection", NULL, 420); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "has", NULL, 0, &metaData, &_1); + + object_init_ex(return_value, phalcon_datamapper_query_insert_ce); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "newbind", NULL, 0); zephir_check_call_status(); - if (zephir_is_true(&_0)) { - ZEPHIR_INIT_VAR(&_2$$3); - zephir_create_array(&_2$$3, 1, 0); - ZEPHIR_INIT_VAR(&_3$$3); - object_init_ex(&_3$$3, phalcon_messages_message_ce); - ZEPHIR_INIT_VAR(&_4$$3); - ZVAL_STRING(&_4$$3, "Record cannot be created because it already exists"); - ZVAL_NULL(&_5$$3); - ZEPHIR_INIT_VAR(&_6$$3); - ZVAL_STRING(&_6$$3, "InvalidCreateAttempt"); - ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 6, &_4$$3, &_5$$3, &_6$$3); - zephir_check_call_status(); - zephir_array_fast_append(&_2$$3, &_3$$3); - zephir_update_property_zval(this_ptr, ZEND_STRL("errorMessages"), &_2$$3); - RETURN_MM_BOOL(0); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "save", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 203, connection, &_0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, delete) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, newSelect) { - zval values, bindTypes, conditions; + zend_class_entry *_2; + zval selectClass; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$true, __$false, metaData, writeConnection, primaryKeys, bindDataTypes, columnMap, attributeField, primaryKey, bindType, value, schema, source, table, success, _0, _1, *_3, _4, _27, _2$$3, _5$$9, _6$$9, _8$$11, _9$$11, _10$$13, _11$$13, _12$$8, _14$$8, _15$$15, _16$$15, _17$$17, _18$$17, _19$$19, _20$$19, _21$$14, _23$$14, _24$$20, _25$$20, _26$$20, _28$$25, _29$$28; - zephir_fcall_cache_entry *_7 = NULL, *_13 = NULL, *_22 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, _0, _1, _3; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&writeConnection); - ZVAL_UNDEF(&primaryKeys); - ZVAL_UNDEF(&bindDataTypes); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&primaryKey); - ZVAL_UNDEF(&bindType); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&table); - ZVAL_UNDEF(&success); + ZVAL_UNDEF(&connection_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_27); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_5$$9); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_8$$11); - ZVAL_UNDEF(&_9$$11); - ZVAL_UNDEF(&_10$$13); - ZVAL_UNDEF(&_11$$13); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_14$$8); - ZVAL_UNDEF(&_15$$15); - ZVAL_UNDEF(&_16$$15); - ZVAL_UNDEF(&_17$$17); - ZVAL_UNDEF(&_18$$17); - ZVAL_UNDEF(&_19$$19); - ZVAL_UNDEF(&_20$$19); - ZVAL_UNDEF(&_21$$14); - ZVAL_UNDEF(&_23$$14); - ZVAL_UNDEF(&_24$$20); - ZVAL_UNDEF(&_25$$20); - ZVAL_UNDEF(&_26$$20); - ZVAL_UNDEF(&_28$$25); - ZVAL_UNDEF(&_29$$28); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&conditions); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&selectClass); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&writeConnection, this_ptr, "getwriteconnection", NULL, 420); - zephir_check_call_status(); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 3); - zephir_update_property_zval(this_ptr, ZEND_STRL("operationMade"), &_0); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("errorMessages"), &_1); - if (ZEPHIR_GLOBAL(orm).virtual_foreign_keys) { - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "checkforeignkeysreverserestrict", NULL, 421); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_2$$3)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_INIT_VAR(&values); - array_init(&values); - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); - ZEPHIR_INIT_VAR(&conditions); - array_init(&conditions); - ZEPHIR_CALL_METHOD(&primaryKeys, &metaData, "getprimarykeyattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&bindDataTypes, &metaData, "getbindtypes", NULL, 0, this_ptr); - zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - if (UNEXPECTED(!(zephir_fast_count_int(&primaryKeys)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A primary key must be defined in the model in order to perform the operation", "phalcon/Mvc/Model.zep", 1309); - return; - } - zephir_is_iterable(&primaryKeys, 0, "phalcon/Mvc/Model.zep", 1357); - if (Z_TYPE_P(&primaryKeys) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&primaryKeys), _3) - { - ZEPHIR_INIT_NVAR(&primaryKey); - ZVAL_COPY(&primaryKey, _3); - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &primaryKey, 0)))) { - ZEPHIR_INIT_NVAR(&_5$$9); - object_init_ex(&_5$$9, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_6$$9); - ZEPHIR_CONCAT_SVS(&_6$$9, "Column '", &primaryKey, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_5$$9, "__construct", &_7, 29, &_6$$9); - zephir_check_call_status(); - zephir_throw_exception_debug(&_5$$9, "phalcon/Mvc/Model.zep", 1323); - ZEPHIR_MM_RESTORE(); - return; - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &primaryKey, 0)))) { - ZEPHIR_INIT_NVAR(&_8$$11); - object_init_ex(&_8$$11, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_9$$11); - ZEPHIR_CONCAT_SVS(&_9$$11, "Column '", &primaryKey, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_8$$11, "__construct", &_7, 29, &_9$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_8$$11, "phalcon/Mvc/Model.zep", 1333); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &primaryKey); - } - ZEPHIR_OBS_NVAR(&value); - if (UNEXPECTED(!(zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)))) { - ZEPHIR_INIT_NVAR(&_10$$13); - object_init_ex(&_10$$13, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_11$$13); - ZEPHIR_CONCAT_SVS(&_11$$13, "Cannot delete the record because the primary key attribute: '", &attributeField, "' was not set"); - ZEPHIR_CALL_METHOD(NULL, &_10$$13, "__construct", &_7, 29, &_11$$13); - zephir_check_call_status(); - zephir_throw_exception_debug(&_10$$13, "phalcon/Mvc/Model.zep", 1346); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1352); - ZEPHIR_CALL_METHOD(&_12$$8, &writeConnection, "escapeidentifier", &_13, 0, &primaryKey); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_14$$8); - ZEPHIR_CONCAT_VS(&_14$$8, &_12$$8, " = ?"); - zephir_array_append(&conditions, &_14$$8, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1353); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1354); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_4, &primaryKeys, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_4)) { - break; - } - ZEPHIR_CALL_METHOD(&primaryKey, &primaryKeys, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &primaryKey, 0)))) { - ZEPHIR_INIT_NVAR(&_15$$15); - object_init_ex(&_15$$15, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_16$$15); - ZEPHIR_CONCAT_SVS(&_16$$15, "Column '", &primaryKey, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_15$$15, "__construct", &_7, 29, &_16$$15); - zephir_check_call_status(); - zephir_throw_exception_debug(&_15$$15, "phalcon/Mvc/Model.zep", 1323); - ZEPHIR_MM_RESTORE(); - return; - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &primaryKey, 0)))) { - ZEPHIR_INIT_NVAR(&_17$$17); - object_init_ex(&_17$$17, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_18$$17); - ZEPHIR_CONCAT_SVS(&_18$$17, "Column '", &primaryKey, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_17$$17, "__construct", &_7, 29, &_18$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$17, "phalcon/Mvc/Model.zep", 1333); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &primaryKey); - } - ZEPHIR_OBS_NVAR(&value); - if (UNEXPECTED(!(zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)))) { - ZEPHIR_INIT_NVAR(&_19$$19); - object_init_ex(&_19$$19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_20$$19); - ZEPHIR_CONCAT_SVS(&_20$$19, "Cannot delete the record because the primary key attribute: '", &attributeField, "' was not set"); - ZEPHIR_CALL_METHOD(NULL, &_19$$19, "__construct", &_7, 29, &_20$$19); - zephir_check_call_status(); - zephir_throw_exception_debug(&_19$$19, "phalcon/Mvc/Model.zep", 1346); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1352); - ZEPHIR_CALL_METHOD(&_21$$14, &writeConnection, "escapeidentifier", &_22, 0, &primaryKey); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_23$$14); - ZEPHIR_CONCAT_VS(&_23$$14, &_21$$14, " = ?"); - zephir_array_append(&conditions, &_23$$14, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1353); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1354); - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "next", NULL, 0); - zephir_check_call_status(); - } + + zephir_read_property(&_0, this_ptr, ZEND_STRL("selectClass"), PH_NOISY_CC | PH_READONLY); + zephir_get_strval(&selectClass, &_0); + zephir_fetch_safe_class(&_1, &selectClass); + _2 = zephir_fetch_class_str_ex(Z_STRVAL_P(&_1), Z_STRLEN_P(&_1), ZEND_FETCH_CLASS_AUTO); + if(!_2) { + RETURN_MM_NULL(); } - ZEPHIR_INIT_NVAR(&primaryKey); - if (ZEPHIR_GLOBAL(orm).events) { - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$false); - } - ZEPHIR_INIT_VAR(&_25$$20); - ZVAL_STRING(&_25$$20, "beforeDelete"); - ZEPHIR_CALL_METHOD(&_24$$20, this_ptr, "fireeventcancel", NULL, 0, &_25$$20); + object_init_ex(return_value, _2); + if (zephir_has_constructor(return_value)) { + ZEPHIR_CALL_METHOD(&_3, this_ptr, "newbind", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_24$$20)) { - RETURN_MM_BOOL(0); - } - zephir_read_property(&_26$$20, this_ptr, ZEND_STRL("skipped"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_26$$20)) { - RETURN_MM_BOOL(1); - } - } - ZEPHIR_CALL_METHOD(&schema, this_ptr, "getschema", NULL, 422); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, this_ptr, "getsource", NULL, 423); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_VAR(&table); - zephir_create_array(&table, 2, 0); - zephir_array_fast_append(&table, &schema); - zephir_array_fast_append(&table, &source); - } else { - ZEPHIR_CPY_WRT(&table, &source); - } - ZEPHIR_INIT_VAR(&_27); - zephir_fast_join_str(&_27, SL(" AND "), &conditions); - ZEPHIR_CALL_METHOD(&success, &writeConnection, "delete", NULL, 0, &table, &_27, &values, &bindTypes); - zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).virtual_foreign_keys) { - ZEPHIR_CALL_METHOD(&_28$$25, this_ptr, "checkforeignkeysreversecascade", NULL, 424); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0, connection, &_3); zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_28$$25)) { - RETURN_MM_BOOL(0); - } - } - if (ZEPHIR_GLOBAL(orm).events) { - if (zephir_is_true(&success)) { - ZEPHIR_INIT_VAR(&_29$$28); - ZVAL_STRING(&_29$$28, "afterDelete"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_29$$28); - zephir_check_call_status(); - } } - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 2); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_0); - RETURN_CCTOR(&success); + + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, dump) +static PHP_METHOD(Phalcon_DataMapper_Query_QueryFactory, newUpdate) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *connection, connection_sub, _0; zval *this_ptr = getThis(); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &connection); - ZEPHIR_RETURN_CALL_FUNCTION("get_object_vars", NULL, 425, this_ptr); + + object_init_ex(return_value, phalcon_datamapper_query_update_ce); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "newbind", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 204, connection, &_0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, find) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_Select) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Query, Select, phalcon, datamapper_query_select, phalcon_datamapper_query_abstractconditions_ce, phalcon_datamapper_query_select_method_entry, 0); + + zend_declare_property_string(phalcon_datamapper_query_select_ce, SL("asAlias"), "", ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_datamapper_query_select_ce, SL("forUpdate"), 0, ZEND_ACC_PROTECTED); + zephir_declare_class_constant_string(phalcon_datamapper_query_select_ce, SL("JOIN_INNER"), "INNER"); + + zephir_declare_class_constant_string(phalcon_datamapper_query_select_ce, SL("JOIN_LEFT"), "LEFT"); + + zephir_declare_class_constant_string(phalcon_datamapper_query_select_ce, SL("JOIN_NATURAL"), "NATURAL"); + + zephir_declare_class_constant_string(phalcon_datamapper_query_select_ce, SL("JOIN_RIGHT"), "RIGHT"); + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Query_Select, __call) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *parameters = NULL, parameters_sub, __$null, params, query, resultset, hydration; + zval params, proxied, _0$$3, _3$$3; + zval *method_param = NULL, *params_param = NULL, __$true, _5, _1$$3, _2$$3, _4$$3; + zval method, _6; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&_6); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_4$$3); ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&query); - ZVAL_UNDEF(&resultset); - ZVAL_UNDEF(&hydration); + ZVAL_UNDEF(&proxied); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_3$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(method) + Z_PARAM_ARRAY(params) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } - + zephir_fetch_params(1, 2, 0, &method_param, ¶ms_param); + zephir_get_strval(&method, method_param); + zephir_get_arrval(¶ms, params_param); - if (Z_TYPE_P(parameters) != IS_ARRAY) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - if (Z_TYPE_P(parameters) != IS_NULL) { - zephir_array_append(¶ms, parameters, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1618); - } - } else { - ZEPHIR_CPY_WRT(¶ms, parameters); - } - ZEPHIR_CALL_STATIC(&query, "getpreparedquery", &_0, 426, ¶ms); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&resultset, &query, "execute", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&resultset) == IS_OBJECT) { - ZEPHIR_OBS_VAR(&hydration); - if (zephir_array_isset_string_fetch(&hydration, ¶ms, SL("hydration"), 0)) { - ZEPHIR_CALL_METHOD(NULL, &resultset, "sethydratemode", NULL, 0, &hydration); - zephir_check_call_status(); - } - } - RETURN_CCTOR(&resultset); -} -static PHP_METHOD(Phalcon_Mvc_Model, findFirst) + ZEPHIR_INIT_VAR(&proxied); + zephir_create_array(&proxied, 10, 0); + zephir_array_update_string(&proxied, SL("fetchAffected"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchAll"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchAssoc"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchCol"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchGroup"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchObject"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchObjects"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchOne"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchPairs"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&proxied, SL("fetchValue"), &__$true, PH_COPY | PH_SEPARATE); + if (EXPECTED(zephir_array_isset(&proxied, &method))) { + ZEPHIR_INIT_VAR(&_0$$3); + zephir_create_array(&_0$$3, 2, 0); + ZEPHIR_OBS_VAR(&_1$$3); + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC); + zephir_array_fast_append(&_0$$3, &_1$$3); + zephir_array_fast_append(&_0$$3, &method); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_INIT_VAR(&_3$$3); + zephir_create_array(&_3$$3, 2, 0); + ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "getstatement", NULL, 0); + zephir_check_call_status(); + zephir_array_fast_append(&_3$$3, &_4$$3); + ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "getbindvalues", NULL, 0); + zephir_check_call_status(); + zephir_array_fast_append(&_3$$3, &_4$$3); + zephir_fast_array_merge(&_2$$3, &_3$$3, ¶ms); + ZEPHIR_CALL_USER_FUNC_ARRAY(return_value, &_0$$3, &_2$$3); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&_5); + object_init_ex(&_5, spl_ce_BadMethodCallException); + ZEPHIR_INIT_VAR(&_6); + ZEPHIR_CONCAT_SVS(&_6, "Unknown method: [", &method, "]"); + ZEPHIR_CALL_METHOD(NULL, &_5, "__construct", NULL, 72, &_6); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5, "phalcon/DataMapper/Query/Select.zep", 97); + ZEPHIR_MM_RESTORE(); + return; +} + +static PHP_METHOD(Phalcon_DataMapper_Query_Select, andHaving) { - zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_2 = NULL; - zval *parameters = NULL, parameters_sub, __$null, params, query, _3, _1$$5; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&query); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } - - - _0 = Z_TYPE_P(parameters) == IS_STRING; - if (!(_0)) { - _0 = zephir_is_numeric(parameters); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - if (Z_TYPE_P(parameters) == IS_NULL) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - } else if (Z_TYPE_P(parameters) == IS_ARRAY) { - ZEPHIR_CPY_WRT(¶ms, parameters); - } else if (_0) { - ZEPHIR_INIT_VAR(&_1$$5); - zephir_create_array(&_1$$5, 1, 0); - zephir_array_fast_append(&_1$$5, parameters); - ZEPHIR_CPY_WRT(¶ms, &_1$$5); + if (!type_param) { + type = -1; } else { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Parameters passed must be of type array, string, numeric or null", "phalcon/Mvc/Model.zep", 1742); - return; + type = zephir_get_intval(type_param); } - ZVAL_LONG(&_3, 1); - ZEPHIR_CALL_STATIC(&query, "getpreparedquery", &_2, 426, ¶ms, &_3); - zephir_check_call_status(); - ZVAL_BOOL(&_3, 1); - ZEPHIR_CALL_METHOD(NULL, &query, "setuniquerow", NULL, 0, &_3); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&query, "execute", NULL, 0); + + + ZVAL_LONG(&_0, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "having", NULL, 0, &condition, value, &_0); zephir_check_call_status(); - RETURN_MM(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, fireEvent) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, asAlias) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *eventName_param = NULL, _0; - zval eventName; + zval *asAlias_param = NULL; + zval asAlias; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventName); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&asAlias); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(eventName) + Z_PARAM_STR(asAlias) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &eventName_param); - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); - } else { - ZEPHIR_INIT_VAR(&eventName); - } + zephir_fetch_params(1, 1, 0, &asAlias_param); + zephir_get_strval(&asAlias, asAlias_param); - if ((zephir_method_exists(this_ptr, &eventName) == SUCCESS)) { - ZEPHIR_CALL_METHOD_ZVAL(NULL, this_ptr, &eventName, NULL, 0); - zephir_check_call_status(); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "notifyevent", NULL, 0, &eventName, this_ptr); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("asAlias"), &asAlias); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, fireEventCancel) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, appendHaving) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *eventName_param = NULL, _0$$3, _1; - zval eventName; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventName); - ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(eventName) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &eventName_param); - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); + if (!type_param) { + type = -1; } else { - ZEPHIR_INIT_VAR(&eventName); + type = zephir_get_intval(type_param); } - if ((zephir_method_exists(this_ptr, &eventName) == SUCCESS)) { - ZEPHIR_CALL_METHOD_ZVAL(&_0$$3, this_ptr, &eventName, NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_0$$3)) { - RETURN_MM_BOOL(0); - } - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_1, "notifyevent", NULL, 0, &eventName, this_ptr); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "HAVING"); + ZVAL_LONG(&_1, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendcondition", NULL, 0, &_0, &condition, value, &_1); zephir_check_call_status(); - RETURN_MM(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getChangedFields) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, appendJoin) { - zend_string *_5; - zend_ulong _4; - zval changed; - zval metaData, name, snapshot, columnMap, allAttributes, value, _0, _1, *_2, _3, _6$$6, _7$$10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, end, key, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _0$$3, _1$$3, _2$$3; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&allAttributes); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&end); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_6$$6); - ZVAL_UNDEF(&_7$$10); - ZVAL_UNDEF(&changed); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&snapshot, &_0); - if (UNEXPECTED(Z_TYPE_P(&snapshot) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The 'keepSnapshots' option must be enabled to track changes", "phalcon/Mvc/Model.zep", 1828); - return; + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; } - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getreversecolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) != IS_ARRAY) { - ZEPHIR_CALL_METHOD(&allAttributes, &metaData, "getdatatypes", NULL, 0, this_ptr); - zephir_check_call_status(); + if (!type_param) { + type = -1; } else { - ZEPHIR_CPY_WRT(&allAttributes, &columnMap); + type = zephir_get_intval(type_param); } - ZEPHIR_INIT_VAR(&changed); - array_init(&changed); - ZEPHIR_INIT_VAR(&_1); - zephir_is_iterable(&allAttributes, 0, "phalcon/Mvc/Model.zep", 1886); - if (Z_TYPE_P(&allAttributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&allAttributes), _4, _5, _2) - { - ZEPHIR_INIT_NVAR(&name); - if (_5 != NULL) { - ZVAL_STR_COPY(&name, _5); - } else { - ZVAL_LONG(&name, _4); - } - ZEPHIR_INIT_NVAR(&_1); - ZVAL_COPY(&_1, _2); - if (!(zephir_array_isset(&snapshot, &name))) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1861); - continue; - } - ZEPHIR_OBS_NVAR(&value); - if (!(zephir_fetch_property_zval(&value, this_ptr, &name, PH_SILENT_CC))) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1871); - continue; - } - zephir_array_fetch(&_6$$6, &snapshot, &name, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 1879); - if (!ZEPHIR_IS_IDENTICAL(&value, &_6$$6)) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1880); - continue; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &allAttributes, "rewind", NULL, 0); + + + if (!(ZEPHIR_IS_EMPTY(value))) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_2$$3, type); + ZEPHIR_CALL_METHOD(&_1$$3, &_0$$3, "bindinline", NULL, 0, value, &_2$$3); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &allAttributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&name, &allAttributes, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, &allAttributes, "current", NULL, 0); - zephir_check_call_status(); - if (!(zephir_array_isset(&snapshot, &name))) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1861); - continue; - } - ZEPHIR_OBS_NVAR(&value); - if (!(zephir_fetch_property_zval(&value, this_ptr, &name, PH_SILENT_CC))) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1871); - continue; - } - zephir_array_fetch(&_7$$10, &snapshot, &name, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 1879); - if (!ZEPHIR_IS_IDENTICAL(&value, &_7$$10)) { - zephir_array_append(&changed, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1880); - continue; - } - ZEPHIR_CALL_METHOD(NULL, &allAttributes, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_concat_self(&condition, &_1$$3); } - ZEPHIR_INIT_NVAR(&_1); - ZEPHIR_INIT_NVAR(&name); - RETURN_CTOR(&changed); + zephir_read_property(&_3, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_4, &_3, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 172); + ZEPHIR_CALL_FUNCTION(&end, "array_key_last", NULL, 36, &_4); + zephir_check_call_status(); + zephir_read_property(&_5, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_6, &_5, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 173); + zephir_array_fetch(&_7, &_6, &end, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 173); + ZEPHIR_CALL_FUNCTION(&key, "array_key_last", NULL, 36, &_7); + zephir_check_call_status(); + zephir_read_property(&_8, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_9, &_8, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 175); + zephir_array_fetch(&_10, &_9, &end, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 175); + zephir_array_fetch(&_11, &_10, &key, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 175); + ZEPHIR_INIT_VAR(&_12); + ZEPHIR_CONCAT_VV(&_12, &_11, &condition); + zephir_update_property_array_multi(this_ptr, SL("store"), &_12, SL("szz"), 4, SL("FROM"), &end, &key); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getDirtyState) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, columns) { + zval _0, _1, _2, _3, _4; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); - RETURN_MEMBER(getThis(), "dirtyState"); + ZEPHIR_MM_GROW(); + + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 191); + ZEPHIR_INIT_VAR(&_3); + zephir_get_args(&_3); + zephir_fast_array_merge(&_0, &_2, &_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "COLUMNS"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_0); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getEventsManager) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, distinct) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *enable_param = NULL, _0, _1; + zend_bool enable; zval *this_ptr = getThis(); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(enable) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &enable_param); + if (!enable_param) { + enable = 1; + } else { + enable = zephir_get_boolval(enable_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getcustomeventsmanager", NULL, 0, this_ptr); + + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "DISTINCT"); + if (enable) { + ZVAL_BOOL(&_1, 1); + } else { + ZVAL_BOOL(&_1, 0); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setflag", NULL, 0, &_0, &_1); zephir_check_call_status(); - RETURN_MM(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getMessages) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, from) { - zend_bool _0; - zval filtered; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *filter = NULL, filter_sub, __$null, message, _1$$3, *_2$$3, _3$$3, _4$$4, _5$$6; + zval *table_param = NULL; + zval table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&filter_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&message); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&filtered); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(filter) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(table) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &filter); - if (!filter) { - filter = &filter_sub; - filter = &__$null; - } + zephir_fetch_params(1, 1, 0, &table_param); + zephir_get_strval(&table, table_param); - _0 = Z_TYPE_P(filter) == IS_STRING; - if (_0) { - _0 = !(ZEPHIR_IS_EMPTY(filter)); - } - if (_0) { - ZEPHIR_INIT_VAR(&filtered); - array_init(&filtered); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("errorMessages"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_1$$3, 0, "phalcon/Mvc/Model.zep", 1943); - if (Z_TYPE_P(&_1$$3) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_1$$3), _2$$3) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _2$$3); - ZEPHIR_CALL_METHOD(&_4$$4, &message, "getfield", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_EQUAL(&_4$$4, filter)) { - zephir_array_append(&filtered, &message, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1939); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$3, &_1$$3, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_1$$3, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_5$$6, &message, "getfield", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_EQUAL(&_5$$6, filter)) { - zephir_array_append(&filtered, &message, PH_SEPARATE, "phalcon/Mvc/Model.zep", 1939); - } - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - RETURN_CTOR(&filtered); - } - RETURN_MM_MEMBER(getThis(), "errorMessages"); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + zephir_array_fast_append(&_0, &table); + zephir_update_property_array_multi(this_ptr, SL("store"), &_0, SL("sa"), 3, SL("FROM")); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getModelsManager) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, forUpdate) { + zval *enable_param = NULL, __$true, __$false; + zend_bool enable; zval *this_ptr = getThis(); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(enable) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "modelsManager"); + zephir_fetch_params_without_memory_grow(0, 1, &enable_param); + if (!enable_param) { + enable = 1; + } else { + enable = zephir_get_boolval(enable_param); + } + + + if (enable) { + zephir_update_property_zval(this_ptr, ZEND_STRL("forUpdate"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("forUpdate"), &__$false); + } + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Model, getModelsMetaData) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, getStatement) { - zval metaData, container, _0$$3, _1$$3, _2$$3; + zval _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); ZEPHIR_MM_GROW(); - ZEPHIR_OBS_VAR(&metaData); - zephir_read_property(&metaData, this_ptr, ZEND_STRL("modelsMetaData"), PH_NOISY_CC); - if (Z_TYPE_P(&metaData) != IS_OBJECT) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0$$3); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "modelsMetadata"); - ZEPHIR_CALL_METHOD(&_1$$3, &container, "getshared", NULL, 0, &_2$$3); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&metaData, &_1$$3); - if (UNEXPECTED(Z_TYPE_P(&metaData) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The injected service 'modelsMetadata' is not valid", "phalcon/Mvc/Model.zep", 1977); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsMetaData"), &metaData); - } - RETURN_CCTOR(&metaData); + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("UNION"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 245); + zephir_fast_join_str(&_0, SL(""), &_2); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getcurrentstatement", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_VV(return_value, &_0, &_3); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, getOperationMade) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, groupBy) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *groupBy, groupBy_sub, _0; zval *this_ptr = getThis(); + ZVAL_UNDEF(&groupBy_sub); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(groupBy) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "operationMade"); -} - -static PHP_METHOD(Phalcon_Mvc_Model, getOldSnapshotData) -{ - zval *this_ptr = getThis(); - + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &groupBy); - RETURN_MEMBER(getThis(), "oldSnapshot"); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "GROUP"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "processvalue", NULL, 0, &_0, groupBy); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getReadConnection) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, hasColumns) { - zval transaction, _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&transaction); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("transaction"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&transaction, &_0); - if (Z_TYPE_P(&transaction) == IS_OBJECT) { - ZEPHIR_RETURN_CALL_METHOD(&transaction, "getconnection", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getreadconnection", NULL, 0, this_ptr); - zephir_check_call_status(); - RETURN_MM(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 269); + RETURN_BOOL(zephir_fast_count_int(&_1) > 0); } -static PHP_METHOD(Phalcon_Mvc_Model, getReadConnectionService) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, having) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1, _2; + zval condition; zval *this_ptr = getThis(); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getreadconnectionservice", NULL, 0, this_ptr); + + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "HAVING"); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "AND "); + ZVAL_LONG(&_2, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addcondition", NULL, 0, &_0, &_1, &condition, value, &_2); zephir_check_call_status(); - RETURN_MM(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getRelated) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, join) { + zend_bool _5, _10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *alias_param = NULL, *arguments = NULL, arguments_sub, __$null, relation, className, manager, result, lowerAlias, _0, _1, _2$$3, _3$$3; - zval alias; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *join_param = NULL, *table_param = NULL, *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, key, _0, _1, _2, _3, _4, _6, _7, _8, _9, _11, _12, _13, _14, _19, _20, _16$$5, _17$$5, _18$$5; + zval join, table, condition, _21, _15$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&arguments_sub); + ZVAL_UNDEF(&join); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&_21); + ZVAL_UNDEF(&_15$$4); + ZVAL_UNDEF(&value_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&lowerAlias); + ZVAL_UNDEF(&key); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&_19); + ZVAL_UNDEF(&_20); + ZVAL_UNDEF(&_16$$5); + ZVAL_UNDEF(&_17$$5); + ZVAL_UNDEF(&_18$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(alias) + ZEND_PARSE_PARAMETERS_START(3, 5) + Z_PARAM_STR(join) + Z_PARAM_STR(table) + Z_PARAM_STR(condition) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(arguments) + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &alias_param, &arguments); - zephir_get_strval(&alias, alias_param); - if (!arguments) { - arguments = &arguments_sub; - arguments = &__$null; + zephir_fetch_params(1, 3, 2, &join_param, &table_param, &condition_param, &value, &type_param); + zephir_get_strval(&join, join_param); + zephir_get_strval(&table, table_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); } - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, this_ptr, 0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); - ZEPHIR_CALL_METHOD(&_1, &manager, "getrelationbyalias", NULL, 0, &className, &lowerAlias); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_1); - if (UNEXPECTED(Z_TYPE_P(&relation) != IS_OBJECT)) { - ZEPHIR_INIT_VAR(&_2$$3); - object_init_ex(&_2$$3, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_3$$3); - ZEPHIR_CONCAT_SVSVS(&_3$$3, "There is no defined relations for the model '", &className, "' using alias '", &alias, "'"); - ZEPHIR_CALL_METHOD(NULL, &_2$$3, "__construct", NULL, 29, &_3$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_2$$3, "phalcon/Mvc/Model.zep", 2056); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_INIT_VAR(&_0); + zephir_fast_trim(&_0, &join, NULL , ZEPHIR_TRIM_BOTH); + ZEPHIR_INIT_NVAR(&join); + zephir_fast_strtoupper(&join, &_0); + ZVAL_LONG(&_1, -4); + ZEPHIR_INIT_VAR(&_2); + zephir_substr(&_2, &join, -4 , 0, ZEPHIR_SUBSTR_NO_LENGTH); + if (!ZEPHIR_IS_STRING_IDENTICAL(&_2, "JOIN")) { + zephir_concat_self_str(&join, " JOIN", sizeof(" JOIN") - 1); } - if (Z_TYPE_P(arguments) == IS_NULL) { - ZEPHIR_CALL_METHOD(&result, &manager, "getrelationrecords", NULL, 0, &relation, this_ptr, arguments); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("related"), &lowerAlias, &result); - } else { - ZEPHIR_CALL_METHOD(&result, &manager, "getrelationrecords", NULL, 0, &relation, this_ptr, arguments); + ZEPHIR_INIT_VAR(&_3); + zephir_fast_trim(&_3, &condition, NULL , ZEPHIR_TRIM_LEFT); + zephir_get_strval(&condition, &_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, ""); + _5 = !ZEPHIR_IS_IDENTICAL(&_4, &condition); + if (_5) { + ZEPHIR_INIT_VAR(&_6); + ZVAL_LONG(&_7, 0); + ZVAL_LONG(&_8, 3); + ZEPHIR_INIT_VAR(&_9); + zephir_substr(&_9, &condition, 0 , 3 , 0); + zephir_fast_strtoupper(&_6, &_9); + _5 = !ZEPHIR_IS_STRING_IDENTICAL(&_6, "ON "); + } + _10 = _5; + if (_10) { + ZEPHIR_INIT_VAR(&_11); + ZVAL_LONG(&_12, 0); + ZVAL_LONG(&_13, 6); + ZEPHIR_INIT_VAR(&_14); + zephir_substr(&_14, &condition, 0 , 6 , 0); + zephir_fast_strtoupper(&_11, &_14); + _10 = !ZEPHIR_IS_STRING_IDENTICAL(&_11, "USING "); + } + if (_10) { + ZEPHIR_INIT_VAR(&_15$$4); + ZEPHIR_CONCAT_SV(&_15$$4, "ON ", &condition); + ZEPHIR_CPY_WRT(&condition, &_15$$4); + } + if (!(ZEPHIR_IS_EMPTY(value))) { + zephir_read_property(&_16$$5, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_18$$5, type); + ZEPHIR_CALL_METHOD(&_17$$5, &_16$$5, "bindinline", NULL, 0, value, &_18$$5); zephir_check_call_status(); + zephir_concat_self(&condition, &_17$$5); } - RETURN_CCTOR(&result); + zephir_read_property(&_19, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_20, &_19, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 330); + ZEPHIR_CALL_FUNCTION(&key, "array_key_last", NULL, 36, &_20); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_21); + ZEPHIR_CONCAT_VSVSV(&_21, &join, " ", &table, " ", &condition); + zephir_update_property_array_multi(this_ptr, SL("store"), &_21, SL("sza"), 4, SL("FROM"), &key); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, isRelationshipLoaded) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, orHaving) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *relationshipAlias_param = NULL, _0, _1; - zval relationshipAlias; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *condition_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _0, _1, _2; + zval condition; zval *this_ptr = getThis(); - ZVAL_UNDEF(&relationshipAlias); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(relationshipAlias) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(condition) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &relationshipAlias_param); - zephir_get_strval(&relationshipAlias, relationshipAlias_param); + zephir_fetch_params(1, 1, 2, &condition_param, &value, &type_param); + zephir_get_strval(&condition, condition_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; + } else { + type = zephir_get_intval(type_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "HAVING"); ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &relationshipAlias); - RETURN_MM_BOOL(zephir_array_isset(&_0, &_1)); + ZVAL_STRING(&_1, "OR "); + ZVAL_LONG(&_2, type); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "addcondition", NULL, 0, &_0, &_1, &condition, value, &_2); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getSchema) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, reset) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval __$true, __$false, _1; zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getmodelschema", NULL, 0, this_ptr); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_select_ce, getThis(), "reset", &_0, 0); zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Model, getSnapshotData) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "snapshot"); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, ""); + zephir_update_property_zval(this_ptr, ZEND_STRL("asAlias"), &_1); + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("forUpdate"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("forUpdate"), &__$false); + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getSource) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, subSelect) { - zval _0; + zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getmodelsource", NULL, 0, this_ptr); + object_init_ex(return_value, phalcon_datamapper_query_select_ce); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 205, &_0, &_1); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, getUpdatedFields) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, union) { - zend_bool _5$$6, _7$$8; - zend_string *_4; - zend_ulong _3; - zval updated; - zval name, snapshot, oldSnapshot, value, _0, *_1, _2, _6$$6, _8$$8; + zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&oldSnapshot); - ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_6$$6); - ZVAL_UNDEF(&_8$$8); - ZVAL_UNDEF(&updated); + ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&snapshot, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("oldSnapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&oldSnapshot, &_0); - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).update_snapshot_on_save))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The 'updateSnapshotOnSave' option must be enabled for this method to work properly", "phalcon/Mvc/Model.zep", 2180); - return; - } - if (UNEXPECTED(Z_TYPE_P(&snapshot) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The 'keepSnapshots' option must be enabled to track changes", "phalcon/Mvc/Model.zep", 2186); - return; - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!ZEPHIR_IS_LONG(&_0, 0))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Change checking cannot be performed because the object has not been persisted or is deleted", "phalcon/Mvc/Model.zep", 2195); - return; - } - ZEPHIR_INIT_VAR(&updated); - array_init(&updated); - zephir_is_iterable(&snapshot, 0, "phalcon/Mvc/Model.zep", 2210); - if (Z_TYPE_P(&snapshot) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&snapshot), _3, _4, _1) - { - ZEPHIR_INIT_NVAR(&name); - if (_4 != NULL) { - ZVAL_STR_COPY(&name, _4); - } else { - ZVAL_LONG(&name, _3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _1); - _5$$6 = !(zephir_array_isset(&oldSnapshot, &name)); - if (!(_5$$6)) { - zephir_array_fetch(&_6$$6, &oldSnapshot, &name, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 2205); - _5$$6 = !ZEPHIR_IS_IDENTICAL(&value, &_6$$6); - } - if (_5$$6) { - zephir_array_append(&updated, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 2206); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &snapshot, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &snapshot, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&name, &snapshot, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &snapshot, "current", NULL, 0); - zephir_check_call_status(); - _7$$8 = !(zephir_array_isset(&oldSnapshot, &name)); - if (!(_7$$8)) { - zephir_array_fetch(&_8$$8, &oldSnapshot, &name, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 2205); - _7$$8 = !ZEPHIR_IS_IDENTICAL(&value, &_8$$8); - } - if (_7$$8) { - zephir_array_append(&updated, &name, PH_SEPARATE, "phalcon/Mvc/Model.zep", 2206); - } - ZEPHIR_CALL_METHOD(NULL, &snapshot, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&name); - RETURN_CTOR(&updated); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, " UNION "); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getcurrentstatement", NULL, 0, &_1); + zephir_check_call_status(); + zephir_update_property_array_multi(this_ptr, SL("store"), &_0, SL("sa"), 3, SL("UNION")); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "reset", NULL, 0); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getWriteConnection) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, unionAll) { - zval transaction, _0; + zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&transaction); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("transaction"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&transaction, &_0); - if (Z_TYPE_P(&transaction) == IS_OBJECT) { - ZEPHIR_RETURN_CALL_METHOD(&transaction, "getconnection", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getwriteconnection", NULL, 0, this_ptr); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, " UNION ALL "); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getcurrentstatement", NULL, 0, &_1); zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array_multi(this_ptr, SL("store"), &_0, SL("sa"), 3, SL("UNION")); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "reset", NULL, 0); + zephir_check_call_status(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, getWriteConnectionService) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, getCurrentStatement) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *suffix_param = NULL, statement, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13$$4, _14$$4; + zval suffix, forUpdate; zval *this_ptr = getThis(); + ZVAL_UNDEF(&suffix); + ZVAL_UNDEF(&forUpdate); + ZVAL_UNDEF(&statement); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13$$4); + ZVAL_UNDEF(&_14$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(suffix) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &suffix_param); + if (!suffix_param) { + ZEPHIR_INIT_VAR(&suffix); + ZVAL_STRING(&suffix, ""); + } else { + zephir_get_strval(&suffix, suffix_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "getwriteconnectionservice", NULL, 0, this_ptr); + + ZEPHIR_INIT_VAR(&forUpdate); + zephir_read_property(&_0, this_ptr, ZEND_STRL("forUpdate"), PH_NOISY_CC | PH_READONLY); + if (zephir_is_true(&_0)) { + ZEPHIR_INIT_NVAR(&forUpdate); + ZVAL_STRING(&forUpdate, " FOR UPDATE"); + } + ZEPHIR_CALL_METHOD(&_1, this_ptr, "buildflags", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "buildlimitearly", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "buildcolumns", NULL, 206); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4, this_ptr, "buildfrom", NULL, 207); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6); + ZVAL_STRING(&_6, "WHERE"); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "buildcondition", NULL, 0, &_6); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6); + ZVAL_STRING(&_6, "GROUP"); + ZEPHIR_CALL_METHOD(&_7, this_ptr, "buildby", NULL, 0, &_6); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6); + ZVAL_STRING(&_6, "HAVING"); + ZEPHIR_CALL_METHOD(&_8, this_ptr, "buildcondition", NULL, 0, &_6); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6); + ZVAL_STRING(&_6, "ORDER"); + ZEPHIR_CALL_METHOD(&_9, this_ptr, "buildby", NULL, 0, &_6); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_10, this_ptr, "buildlimit", NULL, 0); zephir_check_call_status(); + ZEPHIR_INIT_VAR(&statement); + ZEPHIR_CONCAT_SVVVVVVVVVV(&statement, "SELECT", &_1, &_2, &_3, &_4, &_5, &_7, &_8, &_9, &_10, &forUpdate); + zephir_read_property(&_11, this_ptr, ZEND_STRL("asAlias"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_12); + ZVAL_STRING(&_12, ""); + if (UNEXPECTED(!ZEPHIR_IS_IDENTICAL(&_12, &_11))) { + zephir_read_property(&_13$$4, this_ptr, ZEND_STRL("asAlias"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_14$$4); + ZEPHIR_CONCAT_SVSV(&_14$$4, "(", &statement, ") AS ", &_13$$4); + ZEPHIR_CPY_WRT(&statement, &_14$$4); + } + ZEPHIR_CONCAT_VV(return_value, &statement, &suffix); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, hasChanged) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, buildColumns) { + zval columns, _0, _3, _1$$3, _2$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool allFields; - zval *fieldName = NULL, fieldName_sub, *allFields_param = NULL, __$null, changedFields, intersect; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fieldName_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&changedFields); - ZVAL_UNDEF(&intersect); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(fieldName) - Z_PARAM_BOOL(allFields) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &fieldName, &allFields_param); - if (!fieldName) { - fieldName = &fieldName_sub; - fieldName = &__$null; - } - if (!allFields_param) { - allFields = 0; - } else { - allFields = zephir_get_boolval(allFields_param); - } - - ZEPHIR_CALL_METHOD(&changedFields, this_ptr, "getchangedfields", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "hascolumns", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(fieldName) == IS_STRING) { - RETURN_MM_BOOL(zephir_fast_in_array(fieldName, &changedFields)); - } - if (Z_TYPE_P(fieldName) == IS_ARRAY) { - ZEPHIR_CALL_FUNCTION(&intersect, "array_intersect", NULL, 427, fieldName, &changedFields); - zephir_check_call_status(); - if (allFields) { - RETURN_MM_BOOL(ZEPHIR_IS_EQUAL(&intersect, fieldName)); - } - RETURN_MM_BOOL(zephir_fast_count_int(&intersect) > 0); + if (!(zephir_is_true(&_0))) { + ZEPHIR_INIT_VAR(&columns); + zephir_create_array(&columns, 1, 0); + ZEPHIR_INIT_VAR(&_1$$3); + ZVAL_STRING(&_1$$3, "*"); + zephir_array_fast_append(&columns, &_1$$3); + } else { + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_2$$4, SL("COLUMNS"), PH_NOISY, "phalcon/DataMapper/Query/Select.zep", 456); } - RETURN_MM_BOOL(zephir_fast_count_int(&changedFields) > 0); -} - -static PHP_METHOD(Phalcon_Mvc_Model, hasSnapshotData) -{ - zval _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - RETURN_BOOL(!(ZEPHIR_IS_EMPTY(&_0))); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, ","); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "indent", NULL, 0, &columns, &_3); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, hasUpdated) +static PHP_METHOD(Phalcon_DataMapper_Query_Select, buildFrom) { + zval from; + zval table, _0, _1, _2, _3, *_4, _5, _14, _15, _6$$4, _8$$4, _10$$4, _11$$5, _12$$5, _13$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_7 = NULL, *_9 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool allFields; - zval *fieldName = NULL, fieldName_sub, *allFields_param = NULL, __$null, updatedFields, intersect; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fieldName_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&updatedFields); - ZVAL_UNDEF(&intersect); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(fieldName) - Z_PARAM_BOOL(allFields) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&_15); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_10$$4); + ZVAL_UNDEF(&_11$$5); + ZVAL_UNDEF(&_12$$5); + ZVAL_UNDEF(&_13$$5); + ZVAL_UNDEF(&from); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &fieldName, &allFields_param); - if (!fieldName) { - fieldName = &fieldName_sub; - fieldName = &__$null; - } - if (!allFields_param) { - allFields = 0; - } else { - allFields = zephir_get_boolval(allFields_param); - } - - ZEPHIR_CALL_METHOD(&updatedFields, this_ptr, "getupdatedfields", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(fieldName) == IS_STRING) { - RETURN_MM_BOOL(zephir_fast_in_array(fieldName, &updatedFields)); + ZEPHIR_INIT_VAR(&from); + array_init(&from); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 472); + if (ZEPHIR_IS_EMPTY(&_1)) { + RETURN_MM_STRING(""); } - if (Z_TYPE_P(fieldName) == IS_ARRAY) { - ZEPHIR_CALL_FUNCTION(&intersect, "array_intersect", NULL, 427, fieldName, &updatedFields); + zephir_read_property(&_2, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_3, &_2, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Select.zep", 476); + zephir_is_iterable(&_3, 0, "phalcon/DataMapper/Query/Select.zep", 480); + if (Z_TYPE_P(&_3) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_3), _4) + { + ZEPHIR_INIT_NVAR(&table); + ZVAL_COPY(&table, _4); + ZEPHIR_MAKE_REF(&table); + ZEPHIR_CALL_FUNCTION(&_6$$4, "array_shift", &_7, 21, &table); + ZEPHIR_UNREF(&table); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_8$$4, this_ptr, "indent", &_9, 0, &table); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$4); + ZEPHIR_CONCAT_VV(&_10$$4, &_6$$4, &_8$$4); + zephir_array_append(&from, &_10$$4, PH_SEPARATE, "phalcon/DataMapper/Query/Select.zep", 477); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_3, "rewind", NULL, 0); zephir_check_call_status(); - if (allFields) { - RETURN_MM_BOOL(ZEPHIR_IS_EQUAL(&intersect, fieldName)); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_3, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&table, &_3, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MAKE_REF(&table); + ZEPHIR_CALL_FUNCTION(&_11$$5, "array_shift", &_7, 21, &table); + ZEPHIR_UNREF(&table); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_12$$5, this_ptr, "indent", &_9, 0, &table); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_13$$5); + ZEPHIR_CONCAT_VV(&_13$$5, &_11$$5, &_12$$5); + zephir_array_append(&from, &_13$$5, PH_SEPARATE, "phalcon/DataMapper/Query/Select.zep", 477); + ZEPHIR_CALL_METHOD(NULL, &_3, "next", NULL, 0); + zephir_check_call_status(); } - RETURN_MM_BOOL(zephir_fast_count_int(&intersect) > 0); } - RETURN_MM_BOOL(zephir_fast_count_int(&updatedFields) > 0); + ZEPHIR_INIT_NVAR(&table); + ZEPHIR_INIT_VAR(&_15); + ZVAL_STRING(&_15, ","); + ZEPHIR_CALL_METHOD(&_14, this_ptr, "indent", &_9, 0, &from, &_15); + zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, " FROM", &_14); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, jsonSerialize) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZEPHIR_MM_GROW(); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "toarray", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Mvc_Model, maximum) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *parameters = NULL, parameters_sub, __$null, _0, _1; - zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Query_Update) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Query, Update, phalcon, datamapper_query_update, phalcon_datamapper_query_abstractconditions_ce, phalcon_datamapper_query_update_method_entry, 0); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "MAX"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "maximum"); - ZEPHIR_RETURN_CALL_SELF("groupresult", NULL, 0, &_0, &_1, parameters); - zephir_check_call_status(); - RETURN_MM(); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model, minimum) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *parameters = NULL, parameters_sub, __$null, _0, _1; + zephir_fcall_cache_entry *_0 = NULL; + zval *connection, connection_sub, *bind, bind_sub, _1, _2, _3, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&bind_sub); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_datamapper_pdo_connection_ce) + Z_PARAM_OBJECT_OF_CLASS(bind, phalcon_datamapper_query_bind_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } + zephir_fetch_params(1, 2, 0, &connection, &bind); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "MIN"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "minimum"); - ZEPHIR_RETURN_CALL_SELF("groupresult", NULL, 0, &_0, &_1, parameters); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_update_ce, getThis(), "__construct", &_0, 0, connection, bind); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, query) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, column) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *container = NULL, container_sub, __$null, criteria, _3, _1$$4, _2$$4; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *column_param = NULL, *value = NULL, value_sub, *type_param = NULL, __$null, _1$$3, _2$$3; + zval column, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&criteria); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(column) Z_PARAM_OPTIONAL - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(container, phalcon_di_diinterface_ce) + Z_PARAM_ZVAL_OR_NULL(value) + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &container); - if (!container) { - container = &container_sub; - ZEPHIR_CPY_WRT(container, &__$null); + zephir_fetch_params(1, 1, 2, &column_param, &value, &type_param); + zephir_get_strval(&column, column_param); + if (!value) { + value = &value_sub; + value = &__$null; + } + if (!type_param) { + type = -1; } else { - ZEPHIR_SEPARATE_PARAM(container); + type = zephir_get_intval(type_param); } - if (Z_TYPE_P(container) != IS_OBJECT) { - ZEPHIR_CALL_CE_STATIC(container, phalcon_di_di_ce, "getdefault", &_0, 0); - zephir_check_call_status(); - } - ZEPHIR_INIT_VAR(&criteria); - if (zephir_instance_of_ev(container, phalcon_di_diinterface_ce)) { - ZEPHIR_INIT_VAR(&_2$$4); - ZVAL_STRING(&_2$$4, "Phalcon\\Mvc\\Model\\Criteria"); - ZEPHIR_CALL_METHOD(&_1$$4, container, "get", NULL, 0, &_2$$4); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&criteria, &_1$$4); - } else { - object_init_ex(&criteria, phalcon_mvc_model_criteria_ce); - if (zephir_has_constructor(&criteria)) { - ZEPHIR_CALL_METHOD(NULL, &criteria, "__construct", NULL, 0); - zephir_check_call_status(); - } - - ZEPHIR_CALL_METHOD(NULL, &criteria, "setdi", NULL, 428, container); + ZEPHIR_INIT_VAR(&_0); + ZEPHIR_CONCAT_SV(&_0, ":", &column); + zephir_update_property_array_multi(this_ptr, SL("store"), &_0, SL("sz"), 3, SL("COLUMNS"), &column); + if (Z_TYPE_P(value) != IS_NULL) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_2$$3, type); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "setvalue", NULL, 0, &column, value, &_2$$3); zephir_check_call_status(); } - ZEPHIR_INIT_VAR(&_3); - zephir_get_called_class(&_3); - ZEPHIR_CALL_METHOD(NULL, &criteria, "setmodelname", NULL, 429, &_3); - zephir_check_call_status(); - RETURN_CCTOR(&criteria); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, readAttribute) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, columns) { + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attribute_param = NULL, _0; - zval attribute; + zephir_fcall_cache_entry *_4 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *columns_param = NULL, column, value, *_0, _1; + zval columns; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(attribute) + Z_PARAM_ARRAY(columns) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attribute_param); - if (UNEXPECTED(Z_TYPE_P(attribute_param) != IS_STRING && Z_TYPE_P(attribute_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'attribute' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(attribute_param) == IS_STRING)) { - zephir_get_strval(&attribute, attribute_param); - } else { - ZEPHIR_INIT_VAR(&attribute); - } - - - if (!(zephir_isset_property_zval(this_ptr, &attribute))) { - RETURN_MM_NULL(); - } - ZEPHIR_OBS_VAR(&_0); - zephir_read_property_zval(&_0, this_ptr, &attribute, PH_NOISY_CC); - RETURN_CCTOR(&_0); -} - -static PHP_METHOD(Phalcon_Mvc_Model, refresh) -{ - zval fields, _9, _7$$9, _8$$10; - zval metaData, readConnection, schema, source, table, uniqueKey, tables, uniqueParams, dialect, row, attribute, manager, columnMap, _0, _1, _4, *_5, _6, _10, _11, _14, _2$$6, _3$$6, _12$$11, _13$$11; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&readConnection); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&table); - ZVAL_UNDEF(&uniqueKey); - ZVAL_UNDEF(&tables); - ZVAL_UNDEF(&uniqueParams); - ZVAL_UNDEF(&dialect); - ZVAL_UNDEF(&row); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_11); - ZVAL_UNDEF(&_14); - ZVAL_UNDEF(&_2$$6); - ZVAL_UNDEF(&_3$$6); - ZVAL_UNDEF(&_12$$11); - ZVAL_UNDEF(&_13$$11); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_8$$10); - + zephir_fetch_params(1, 1, 0, &columns_param); + zephir_get_arrval(&columns, columns_param); - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!ZEPHIR_IS_LONG(&_0, 0))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The record cannot be refreshed because it does not exist or is deleted", "phalcon/Mvc/Model.zep", 2465); - return; - } - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&readConnection, this_ptr, "getreadconnection", NULL, 430); - zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_1); - ZEPHIR_CALL_METHOD(&schema, this_ptr, "getschema", NULL, 422); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, this_ptr, "getsource", NULL, 423); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_VAR(&table); - zephir_create_array(&table, 2, 0); - zephir_array_fast_append(&table, &schema); - zephir_array_fast_append(&table, &source); - } else { - ZEPHIR_CPY_WRT(&table, &source); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("uniqueKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueKey, &_1); - if (!(zephir_is_true(&uniqueKey))) { - ZEPHIR_CALL_METHOD(&_2$$6, this_ptr, "has", NULL, 0, &metaData, &readConnection); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_2$$6))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The record cannot be refreshed because it does not exist or is deleted", "phalcon/Mvc/Model.zep", 2490); - return; - } - zephir_read_property(&_3$$6, this_ptr, ZEND_STRL("uniqueKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueKey, &_3$$6); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("uniqueParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueParams, &_1); - if (UNEXPECTED(Z_TYPE_P(&uniqueParams) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The record cannot be refreshed because it does not exist or is deleted", "phalcon/Mvc/Model.zep", 2501); - return; - } - ZEPHIR_INIT_VAR(&fields); - array_init(&fields); - ZEPHIR_CALL_METHOD(&_4, &metaData, "getattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - zephir_is_iterable(&_4, 0, "phalcon/Mvc/Model.zep", 2516); - if (Z_TYPE_P(&_4) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_4), _5) + zephir_is_iterable(&columns, 0, "phalcon/DataMapper/Query/Update.zep", 76); + if (Z_TYPE_P(&columns) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&columns), _2, _3, _0) { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _5); - ZEPHIR_INIT_NVAR(&_7$$9); - zephir_create_array(&_7$$9, 1, 0); - zephir_array_fast_append(&_7$$9, &attribute); - zephir_array_append(&fields, &_7$$9, PH_SEPARATE, "phalcon/Mvc/Model.zep", 2510); + ZEPHIR_INIT_NVAR(&column); + if (_3 != NULL) { + ZVAL_STR_COPY(&column, _3); + } else { + ZVAL_LONG(&column, _2); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + if (Z_TYPE_P(&column) == IS_LONG) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &value); + zephir_check_call_status(); + } else { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &column, &value); + zephir_check_call_status(); + } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_4, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_6, &_4, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_1, &columns, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_6)) { + if (!zend_is_true(&_1)) { break; } - ZEPHIR_CALL_METHOD(&attribute, &_4, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_8$$10); - zephir_create_array(&_8$$10, 1, 0); - zephir_array_fast_append(&_8$$10, &attribute); - zephir_array_append(&fields, &_8$$10, PH_SEPARATE, "phalcon/Mvc/Model.zep", 2510); - ZEPHIR_CALL_METHOD(NULL, &_4, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&column, &columns, "key", NULL, 0); zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - ZEPHIR_CALL_METHOD(&dialect, &readConnection, "getdialect", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_9); - zephir_create_array(&_9, 3, 0); - zephir_array_update_string(&_9, SL("columns"), &fields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_10, &readConnection, "escapeidentifier", NULL, 0, &table); - zephir_check_call_status(); - zephir_array_update_string(&_9, SL("tables"), &_10, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_9, SL("where"), &uniqueKey, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&tables, &dialect, "select", NULL, 0, &_9); - zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("uniqueTypes"), PH_NOISY_CC | PH_READONLY); - ZVAL_LONG(&_11, 2); - ZEPHIR_CALL_METHOD(&row, &readConnection, "fetchone", NULL, 0, &tables, &_11, &uniqueParams, &_1); - zephir_check_call_status(); - if (Z_TYPE_P(&row) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - ZVAL_NULL(&_12$$11); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "assign", NULL, 0, &row, &_12$$11, &columnMap); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_13$$11, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); - zephir_check_call_status(); - if (zephir_is_true(&_13$$11)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setsnapshotdata", NULL, 0, &row, &columnMap); + ZEPHIR_CALL_METHOD(&value, &columns, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setoldsnapshotdata", NULL, 0, &row, &columnMap); + if (Z_TYPE_P(&column) == IS_LONG) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &value); + zephir_check_call_status(); + } else { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "column", &_4, 0, &column, &value); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_VAR(&_14); - ZVAL_STRING(&_14, "afterFetch"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_14); - zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&column); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, save) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, from) { - zend_bool hasRelatedToSave = 0; - zval metaData, schema, writeConnection, readConnection, source, table, identityField, exists, success, relatedToSave, _0, _4, _1$$3, _2$$7, _3$$8, _5$$10, _6$$11, _7$$11, _8$$14, _9$$16, _10$$18, _11$$21, _12$$20; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, _0; + zval table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&writeConnection); - ZVAL_UNDEF(&readConnection); - ZVAL_UNDEF(&source); ZVAL_UNDEF(&table); - ZVAL_UNDEF(&identityField); - ZVAL_UNDEF(&exists); - ZVAL_UNDEF(&success); - ZVAL_UNDEF(&relatedToSave); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$7); - ZVAL_UNDEF(&_3$$8); - ZVAL_UNDEF(&_5$$10); - ZVAL_UNDEF(&_6$$11); - ZVAL_UNDEF(&_7$$11); - ZVAL_UNDEF(&_8$$14); - ZVAL_UNDEF(&_9$$16); - ZVAL_UNDEF(&_10$$18); - ZVAL_UNDEF(&_11$$21); - ZVAL_UNDEF(&_12$$20); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(table) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &table_param); + zephir_get_strval(&table, table_param); + - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&writeConnection, this_ptr, "getwriteconnection", NULL, 420); - zephir_check_call_status(); ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "prepareSave"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relatedToSave, this_ptr, "collectrelatedtosave", NULL, 0); - zephir_check_call_status(); - hasRelatedToSave = zephir_fast_count_int(&relatedToSave) > 0; - if (hasRelatedToSave) { - ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "presaverelatedrecords", NULL, 0, &writeConnection, &relatedToSave); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$3)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(&schema, this_ptr, "getschema", NULL, 422); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, this_ptr, "getsource", NULL, 423); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_VAR(&table); - zephir_create_array(&table, 2, 0); - zephir_array_fast_append(&table, &schema); - zephir_array_fast_append(&table, &source); - } else { - ZEPHIR_CPY_WRT(&table, &source); - } - ZEPHIR_CALL_METHOD(&readConnection, this_ptr, "getreadconnection", NULL, 430); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&exists, this_ptr, "has", NULL, 0, &metaData, &readConnection); - zephir_check_call_status(); - if (zephir_is_true(&exists)) { - ZEPHIR_INIT_ZVAL_NREF(_2$$7); - ZVAL_LONG(&_2$$7, 2); - zephir_update_property_zval(this_ptr, ZEND_STRL("operationMade"), &_2$$7); - } else { - ZEPHIR_INIT_ZVAL_NREF(_3$$8); - ZVAL_LONG(&_3$$8, 1); - zephir_update_property_zval(this_ptr, ZEND_STRL("operationMade"), &_3$$8); - } - ZEPHIR_INIT_NVAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("errorMessages"), &_0); - ZEPHIR_CALL_METHOD(&identityField, &metaData, "getidentityfield", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4, this_ptr, "presave", NULL, 0, &metaData, &exists, &identityField); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_4)) { - if (hasRelatedToSave) { - ZVAL_BOOL(&_5$$10, 0); - ZEPHIR_CALL_METHOD(NULL, &writeConnection, "rollback", NULL, 0, &_5$$10); - zephir_check_call_status(); - } - if (UNEXPECTED(ZEPHIR_GLOBAL(orm).exception_on_failed_save)) { - ZEPHIR_INIT_VAR(&_6$$11); - object_init_ex(&_6$$11, phalcon_mvc_model_validationfailed_ce); - ZEPHIR_CALL_METHOD(&_7$$11, this_ptr, "getmessages", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_6$$11, "__construct", NULL, 431, this_ptr, &_7$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_6$$11, "phalcon/Mvc/Model.zep", 2667); - ZEPHIR_MM_RESTORE(); - return; - } - RETURN_MM_BOOL(0); - } - if (zephir_is_true(&exists)) { - ZEPHIR_CALL_METHOD(&success, this_ptr, "dolowupdate", NULL, 0, &metaData, &writeConnection, &table); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&success, this_ptr, "dolowinsert", NULL, 0, &metaData, &writeConnection, &table, &identityField); - zephir_check_call_status(); - } - if (zephir_is_true(&success)) { - ZEPHIR_INIT_ZVAL_NREF(_8$$14); - ZVAL_LONG(&_8$$14, 0); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_8$$14); - } - if (hasRelatedToSave) { - if (ZEPHIR_IS_FALSE_IDENTICAL(&success)) { - ZVAL_BOOL(&_9$$16, 0); - ZEPHIR_CALL_METHOD(NULL, &writeConnection, "rollback", NULL, 0, &_9$$16); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&success, this_ptr, "postsaverelatedrecords", NULL, 0, &writeConnection, &relatedToSave); - zephir_check_call_status(); - } - } - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_CALL_METHOD(&_10$$18, this_ptr, "postsave", NULL, 0, &success, &exists); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&success, &_10$$18); - } - if (ZEPHIR_IS_FALSE_IDENTICAL(&success)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "canceloperation", NULL, 0); - zephir_check_call_status(); - } else { - if (hasRelatedToSave) { - ZEPHIR_INIT_VAR(&_11$$21); - array_init(&_11$$21); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyRelated"), &_11$$21); - } - ZEPHIR_INIT_VAR(&_12$$20); - ZVAL_STRING(&_12$$20, "afterSave"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_12$$20); - zephir_check_call_status(); - } - RETURN_CCTOR(&success); + ZVAL_STRING(&_0, "FROM"); + zephir_update_property_array(this_ptr, SL("store"), &_0, &table); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, serialize) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, getStatement) { - zval _6; - zend_bool _2, _3; - zval attributes, manager, dirtyState, snapshot, _0, _1, _4, _5$$3; + zval _0, _1, _2, _3, _4, _5, _6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&dirtyState); - ZVAL_UNDEF(&snapshot); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_5); ZVAL_UNDEF(&_6); ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&snapshot); - ZVAL_NULL(&snapshot); - ZEPHIR_CALL_METHOD(&attributes, this_ptr, "toarray", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "buildflags", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&dirtyState, &_0); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getmodelsmanager", NULL, 0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("FROM"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Update.zep", 101); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "buildcolumns", NULL, 208); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - ZEPHIR_CALL_METHOD(&_1, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, "WHERE"); + ZEPHIR_CALL_METHOD(&_4, this_ptr, "buildcondition", NULL, 0, &_5); zephir_check_call_status(); - _2 = zephir_is_true(&_1); - if (_2) { - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - _2 = Z_TYPE_P(&_0) != IS_NULL; - } - _3 = _2; - if (_3) { - zephir_read_property(&_4, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - _3 = !ZEPHIR_IS_EQUAL(&attributes, &_4); - } - if (_3) { - zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&snapshot, &_5$$3); - } - ZEPHIR_INIT_VAR(&_6); - zephir_create_array(&_6, 3, 0); - zephir_array_update_string(&_6, SL("attributes"), &attributes, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_6, SL("snapshot"), &snapshot, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_6, SL("dirtyState"), &dirtyState, PH_COPY | PH_SEPARATE); - ZEPHIR_RETURN_CALL_FUNCTION("serialize", NULL, 15, &_6); + ZEPHIR_CALL_METHOD(&_6, this_ptr, "buildreturning", NULL, 0); zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVVVV(return_value, "UPDATE", &_0, " ", &_2, &_3, &_4, &_6); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, unserialize) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, hasColumns) { - zend_string *_7$$7; - zend_ulong _6$$7; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_1 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *data, data_sub, attributes, container, manager, key, value, snapshot, properties, dirtyState, _0$$4, _2$$3, _3$$3, *_4$$7, _5$$7; + zval _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&properties); - ZVAL_UNDEF(&dirtyState); - ZVAL_UNDEF(&_0$$4); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_5$$7); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(data) - ZEND_PARSE_PARAMETERS_END(); -#endif - + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &data); - ZEPHIR_CALL_FUNCTION(&attributes, "unserialize", NULL, 16, data); - zephir_check_call_status(); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - if (!(zephir_array_isset_string(&attributes, SL("attributes")))) { - ZEPHIR_INIT_VAR(&_0$$4); - zephir_create_array(&_0$$4, 1, 0); - zephir_array_update_string(&_0$$4, SL("attributes"), &attributes, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&attributes, &_0$$4); - } - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_1, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ODM", "phalcon/Mvc/Model.zep", 2787); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), &container); - ZEPHIR_INIT_VAR(&_3$$3); - ZVAL_STRING(&_3$$3, "modelsManager"); - ZEPHIR_CALL_METHOD(&_2$$3, &container, "getshared", NULL, 0, &_3$$3); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_2$$3); - if (UNEXPECTED(Z_TYPE_P(&manager) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The injected service 'modelsManager' is not valid", "phalcon/Mvc/Model.zep", 2803); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsManager"), &manager); - ZEPHIR_CALL_METHOD(NULL, &manager, "initialize", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&properties); - if (zephir_array_isset_string_fetch(&properties, &attributes, SL("attributes"), 0)) { - zephir_is_iterable(&properties, 0, "phalcon/Mvc/Model.zep", 2826); - if (Z_TYPE_P(&properties) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&properties), _6$$7, _7$$7, _4$$7) - { - ZEPHIR_INIT_NVAR(&key); - if (_7$$7 != NULL) { - ZVAL_STR_COPY(&key, _7$$7); - } else { - ZVAL_LONG(&key, _6$$7); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _4$$7); - zephir_update_property_zval_zval(this_ptr, &key, &value); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &properties, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$7, &properties, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$7)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &properties, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &properties, "current", NULL, 0); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &key, &value); - ZEPHIR_CALL_METHOD(NULL, &properties, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - } else { - ZEPHIR_INIT_NVAR(&properties); - array_init(&properties); - } - ZEPHIR_OBS_VAR(&dirtyState); - if (zephir_array_isset_string_fetch(&dirtyState, &attributes, SL("dirtyState"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &dirtyState); - } - ZEPHIR_CALL_METHOD(&_2$$3, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); - zephir_check_call_status(); - if (zephir_is_true(&_2$$3)) { - if (zephir_array_isset_string_fetch(&snapshot, &attributes, SL("snapshot"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &snapshot); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &properties); - } - } - } - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Update.zep", 113); + RETURN_BOOL(zephir_fast_count_int(&_1) > 0); } -static PHP_METHOD(Phalcon_Mvc_Model, setConnectionService) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, returning) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *connectionService_param = NULL, _0; - zval connectionService; + zval *columns_param = NULL, _0, _1, _2, _3; + zval columns; zval *this_ptr = getThis(); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&columns); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(connectionService) + Z_PARAM_ARRAY(columns) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); - } else { - ZEPHIR_INIT_VAR(&connectionService); - } + zephir_fetch_params(1, 1, 0, &columns_param); + zephir_get_arrval(&columns, columns_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setconnectionservice", NULL, 0, this_ptr, &connectionService); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&_0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_2, &_1, SL("RETURNING"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Update.zep", 126); + zephir_fast_array_merge(&_0, &_2, &columns); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_3, &_0); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, setDirtyState) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, reset) { - zval *dirtyState_param = NULL, _0; - zend_long dirtyState; + zval _1, _2, _3, _4; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_0 = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(dirtyState) - ZEND_PARSE_PARAMETERS_END(); -#endif - + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); - zephir_fetch_params_without_memory_grow(1, 0, &dirtyState_param); - dirtyState = zephir_get_intval(dirtyState_param); + ZEPHIR_MM_GROW(); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, dirtyState); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_0); - RETURN_THISW(); + ZEPHIR_CALL_PARENT(NULL, phalcon_datamapper_query_update_ce, getThis(), "reset", &_0, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "FROM"); + ZEPHIR_INIT_VAR(&_2); + ZVAL_STRING(&_2, ""); + zephir_update_property_array(this_ptr, SL("store"), &_1, &_2); + ZEPHIR_INIT_VAR(&_3); + array_init(&_3); + ZEPHIR_INIT_VAR(&_4); + ZVAL_STRING(&_4, "RETURNING"); + zephir_update_property_array(this_ptr, SL("store"), &_4, &_3); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, setEventsManager) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, set) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *eventsManager, eventsManager_sub, _0; + zval *column_param = NULL, *value = NULL, value_sub, __$null, _0; + zval column; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventsManager_sub); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&value_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(column) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &eventsManager); + zephir_fetch_params(1, 1, 1, &column_param, &value); + zephir_get_strval(&column, column_param); + if (!value) { + value = &value_sub; + ZEPHIR_CPY_WRT(value, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(value); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setcustomeventsmanager", NULL, 0, this_ptr, eventsManager); + if (Z_TYPE_P(value) == IS_NULL) { + ZEPHIR_INIT_NVAR(value); + ZVAL_STRING(value, "NULL"); + } + zephir_update_property_array_multi(this_ptr, SL("store"), value, SL("sz"), 3, SL("COLUMNS"), &column); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bind"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_0, "remove", NULL, 0, &column); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, setReadConnectionService) +static PHP_METHOD(Phalcon_DataMapper_Query_Update, buildColumns) { + zend_string *_5; + zend_ulong _4; + zval assignments; + zval column, value, _0, _1, *_2, _3, _11, _12, _6$$3, _8$$3, _9$$4, _10$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_7 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *connectionService_param = NULL, _0; - zval connectionService; zval *this_ptr = getThis(); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(connectionService) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); + ZVAL_UNDEF(&assignments); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); + + ZEPHIR_INIT_VAR(&assignments); + array_init(&assignments); + zephir_read_property(&_0, this_ptr, ZEND_STRL("store"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_1, &_0, SL("COLUMNS"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Query/Update.zep", 175); + zephir_is_iterable(&_1, 0, "phalcon/DataMapper/Query/Update.zep", 179); + if (Z_TYPE_P(&_1) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_1), _4, _5, _2) + { + ZEPHIR_INIT_NVAR(&column); + if (_5 != NULL) { + ZVAL_STR_COPY(&column, _5); + } else { + ZVAL_LONG(&column, _4); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _2); + ZEPHIR_CALL_METHOD(&_6$$3, this_ptr, "quoteidentifier", &_7, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_8$$3); + ZEPHIR_CONCAT_VSV(&_8$$3, &_6$$3, " = ", &value); + zephir_array_append(&assignments, &_8$$3, PH_SEPARATE, "phalcon/DataMapper/Query/Update.zep", 176); + } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_INIT_VAR(&connectionService); + ZEPHIR_CALL_METHOD(NULL, &_1, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &_1, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&column, &_1, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &_1, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "quoteidentifier", &_7, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$4); + ZEPHIR_CONCAT_VSV(&_10$$4, &_9$$4, " = ", &value); + zephir_array_append(&assignments, &_10$$4, PH_SEPARATE, "phalcon/DataMapper/Query/Update.zep", 176); + ZEPHIR_CALL_METHOD(NULL, &_1, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&column); + ZEPHIR_INIT_VAR(&_12); + ZVAL_STRING(&_12, ","); + ZEPHIR_CALL_METHOD(&_11, this_ptr, "indent", NULL, 0, &assignments, &_12); + zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, " SET", &_11); + RETURN_MM(); +} - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setreadconnectionservice", NULL, 0, this_ptr, &connectionService); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Connection) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Pdo, Connection, phalcon, datamapper_pdo_connection, phalcon_datamapper_pdo_connection_abstractconnection_ce, phalcon_datamapper_pdo_connection_method_entry, 0); + + zend_declare_property_null(phalcon_datamapper_pdo_connection_ce, SL("arguments"), ZEND_ACC_PROTECTED); + phalcon_datamapper_pdo_connection_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Pdo_Connection; + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model, setOldSnapshotData) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection, __construct) { - zend_string *_3$$3; - zend_ulong _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *data_param = NULL, *columnMap = NULL, columnMap_sub, __$null, key, value, attribute, *_0$$3, _1$$3, _4$$7, _5$$7, _7$$10, _8$$10, _9$$14, _10$$14, _11$$17, _12$$17; - zval data, snapshot; + zval options, queries, available, _5; + zval *dsn_param = NULL, *username_param = NULL, *password_param = NULL, *options_param = NULL, *queries_param = NULL, *profiler = NULL, profiler_sub, __$true, __$null, parts, _0, _1$$3, _2$$3, _3$$3, _4$$4; + zval dsn, username, password; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&columnMap_sub); + ZVAL_UNDEF(&dsn); + ZVAL_UNDEF(&username); + ZVAL_UNDEF(&password); + ZVAL_UNDEF(&profiler_sub); + ZVAL_BOOL(&__$true, 1); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&parts); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_4$$7); - ZVAL_UNDEF(&_5$$7); - ZVAL_UNDEF(&_7$$10); - ZVAL_UNDEF(&_8$$10); - ZVAL_UNDEF(&_9$$14); - ZVAL_UNDEF(&_10$$14); - ZVAL_UNDEF(&_11$$17); - ZVAL_UNDEF(&_12$$17); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&queries); + ZVAL_UNDEF(&available); + ZVAL_UNDEF(&_5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(data) + ZEND_PARSE_PARAMETERS_START(1, 6) + Z_PARAM_STR(dsn) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(columnMap) + Z_PARAM_STR_OR_NULL(username) + Z_PARAM_STR_OR_NULL(password) + Z_PARAM_ARRAY(options) + Z_PARAM_ARRAY(queries) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(profiler, phalcon_datamapper_pdo_profiler_profilerinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &data_param, &columnMap); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!columnMap) { - columnMap = &columnMap_sub; - columnMap = &__$null; + zephir_fetch_params(1, 1, 5, &dsn_param, &username_param, &password_param, &options_param, &queries_param, &profiler); + zephir_get_strval(&dsn, dsn_param); + if (!username_param) { + ZEPHIR_INIT_VAR(&username); + } else { + zephir_get_strval(&username, username_param); + } + if (!password_param) { + ZEPHIR_INIT_VAR(&password); + } else { + zephir_get_strval(&password, password_param); + } + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + zephir_get_arrval(&options, options_param); + } + if (!queries_param) { + ZEPHIR_INIT_VAR(&queries); + array_init(&queries); + } else { + zephir_get_arrval(&queries, queries_param); + } + if (!profiler) { + profiler = &profiler_sub; + ZEPHIR_CPY_WRT(profiler, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(profiler); } - if (Z_TYPE_P(columnMap) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&snapshot); - array_init(&snapshot); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model.zep", 2944); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _2$$3, _3$$3, _0$$3) + ZEPHIR_INIT_VAR(&parts); + zephir_fast_explode_str(&parts, SL(":"), &dsn, LONG_MAX); + ZEPHIR_INIT_VAR(&available); + zephir_create_array(&available, 4, 0); + zephir_array_update_string(&available, SL("mysql"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&available, SL("pgsql"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&available, SL("sqlite"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&available, SL("mssql"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_0, &parts, 0, PH_READONLY, "phalcon/DataMapper/Pdo/Connection.zep", 69); + if (!(zephir_array_isset(&available, &_0))) { + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, spl_ce_InvalidArgumentException); + zephir_array_fetch_long(&_2$$3, &parts, 0, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection.zep", 71); + ZEPHIR_INIT_VAR(&_3$$3); + ZEPHIR_CONCAT_SVS(&_3$$3, "Driver not supported [", &_2$$3, "]"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 192, &_3$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/DataMapper/Pdo/Connection.zep", 72); + ZEPHIR_MM_RESTORE(); + return; + } + if (!(zephir_array_isset_long(&options, 3))) { + ZEPHIR_INIT_VAR(&_4$$4); + ZVAL_LONG(&_4$$4, 2); + zephir_array_update_long(&options, 3, &_4$$4, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + } + ZEPHIR_INIT_VAR(&_5); + zephir_create_array(&_5, 5, 0); + zephir_array_fast_append(&_5, &dsn); + zephir_array_fast_append(&_5, &username); + zephir_array_fast_append(&_5, &password); + zephir_array_fast_append(&_5, &options); + zephir_array_fast_append(&_5, &queries); + zephir_update_property_zval(this_ptr, ZEND_STRL("arguments"), &_5); + if (Z_TYPE_P(profiler) == IS_NULL) { + ZEPHIR_INIT_NVAR(profiler); + object_init_ex(profiler, phalcon_datamapper_pdo_profiler_profiler_ce); + ZEPHIR_CALL_METHOD(NULL, profiler, "__construct", NULL, 196); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setprofiler", NULL, 0, profiler); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection, __debugInfo) +{ + zval _1, _2, _3, _4, _5; + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + + + ZEPHIR_MM_GROW(); + + zephir_create_array(return_value, 1, 0); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 5, 0); + zephir_read_property(&_1, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&_2); + zephir_array_fetch_long(&_2, &_1, 0, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 106); + zephir_array_fast_append(&_0, &_2); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "****"); + zephir_array_fast_append(&_0, &_3); + ZEPHIR_INIT_NVAR(&_3); + ZVAL_STRING(&_3, "****"); + zephir_array_fast_append(&_0, &_3); + zephir_read_property(&_4, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_NVAR(&_2); + zephir_array_fetch_long(&_2, &_4, 3, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 109); + zephir_array_fast_append(&_0, &_2); + zephir_read_property(&_5, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_NVAR(&_2); + zephir_array_fetch_long(&_2, &_5, 4, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 111); + zephir_array_fast_append(&_0, &_2); + zephir_array_update_string(return_value, SL("arguments"), &_0, PH_COPY | PH_SEPARATE); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection, connect) +{ + zval dsn, options, password, query, queries, username, _0, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6$$3, _7$$3, _8$$3, *_9$$3, _10$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_11 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&dsn); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&password); + ZVAL_UNDEF(&query); + ZVAL_UNDEF(&queries); + ZVAL_UNDEF(&username); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_10$$3); + + + ZEPHIR_MM_GROW(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + if (!(zephir_is_true(&_0))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "connect"); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "start", NULL, 0, &_2$$3); + zephir_check_call_status(); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&dsn); + zephir_array_fetch_long(&dsn, &_3$$3, 0, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 126); + zephir_read_property(&_4$$3, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&username); + zephir_array_fetch_long(&username, &_4$$3, 1, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 127); + zephir_read_property(&_5$$3, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&password); + zephir_array_fetch_long(&password, &_5$$3, 2, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 128); + zephir_read_property(&_6$$3, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&options); + zephir_array_fetch_long(&options, &_6$$3, 3, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 129); + zephir_read_property(&_7$$3, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_OBS_VAR(&queries); + zephir_array_fetch_long(&queries, &_7$$3, 4, PH_NOISY, "phalcon/DataMapper/Pdo/Connection.zep", 130); + ZEPHIR_INIT_NVAR(&_2$$3); + object_init_ex(&_2$$3, php_pdo_get_dbh_ce()); + ZEPHIR_CALL_METHOD(NULL, &_2$$3, "__construct", NULL, 0, &dsn, &username, &password, &options); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdo"), &_2$$3); + zephir_read_property(&_8$$3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_8$$3, "finish", NULL, 0); + zephir_check_call_status(); + zephir_is_iterable(&queries, 0, "phalcon/DataMapper/Pdo/Connection.zep", 140); + if (Z_TYPE_P(&queries) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&queries), _9$$3) { - ZEPHIR_INIT_NVAR(&key); - if (_3$$3 != NULL) { - ZVAL_STR_COPY(&key, _3$$3); - } else { - ZVAL_LONG(&key, _2$$3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0$$3); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_4$$7); - object_init_ex(&_4$$7, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_5$$7); - ZEPHIR_CONCAT_SVS(&_5$$7, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_4$$7, "__construct", &_6, 29, &_5$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_4$$7, "phalcon/Mvc/Model.zep", 2924); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_long_fetch(&attribute, &attribute, 0, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_7$$10); - object_init_ex(&_7$$10, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_8$$10); - ZEPHIR_CONCAT_SVS(&_8$$10, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_7$$10, "__construct", &_6, 29, &_8$$10); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$10, "phalcon/Mvc/Model.zep", 2935); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - zephir_array_update_zval(&snapshot, &attribute, &value, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&query); + ZVAL_COPY(&query, _9$$3); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "exec", &_11, 0, &query); + zephir_check_call_status(); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &queries, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_1$$3, &data, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_10$$3, &queries, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_1$$3)) { + if (!zend_is_true(&_10$$3)) { break; } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&query, &queries, "current", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_9$$14); - object_init_ex(&_9$$14, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_10$$14); - ZEPHIR_CONCAT_SVS(&_10$$14, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_9$$14, "__construct", &_6, 29, &_10$$14); - zephir_check_call_status(); - zephir_throw_exception_debug(&_9$$14, "phalcon/Mvc/Model.zep", 2924); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_long_fetch(&attribute, &attribute, 0, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_11$$17); - object_init_ex(&_11$$17, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_12$$17); - ZEPHIR_CONCAT_SVS(&_12$$17, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_11$$17, "__construct", &_6, 29, &_12$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_11$$17, "phalcon/Mvc/Model.zep", 2935); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - zephir_array_update_zval(&snapshot, &attribute, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "exec", &_11, 0, &query); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &queries, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - } else { - ZEPHIR_CPY_WRT(&snapshot, &data); + ZEPHIR_INIT_NVAR(&query); } - zephir_update_property_zval(this_ptr, ZEND_STRL("oldSnapshot"), &snapshot); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, setSnapshotData) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection, disconnect) { - zend_bool _4$$4, _12$$12; - zend_string *_3$$3; - zend_ulong _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL, *_9 = NULL; + zval __$null, _0, _1, _2; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *data_param = NULL, *columnMap = NULL, columnMap_sub, __$null, key, value, attribute, *_0$$3, _1$$3, _5$$6, _7$$8, _8$$8, _10$$11, _11$$11, _13$$14, _14$$16, _15$$16, _16$$19, _17$$19; - zval data, snapshot; zval *this_ptr = getThis(); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&columnMap_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + + + ZEPHIR_MM_GROW(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "disconnect"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdo"), &__$null); + zephir_read_property(&_2, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_2, "finish", NULL, 0); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); +} + +zend_object *zephir_init_properties_Phalcon_DataMapper_Pdo_Connection(zend_class_entry *class_type) +{ + zval _0, _1$$3; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_7$$8); - ZVAL_UNDEF(&_8$$8); - ZVAL_UNDEF(&_10$$11); - ZVAL_UNDEF(&_11$$11); - ZVAL_UNDEF(&_13$$14); - ZVAL_UNDEF(&_14$$16); - ZVAL_UNDEF(&_15$$16); - ZVAL_UNDEF(&_16$$19); - ZVAL_UNDEF(&_17$$19); + + + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("arguments"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("arguments"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_ConnectionLocator) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Pdo, ConnectionLocator, phalcon, datamapper_pdo_connectionlocator, phalcon_datamapper_pdo_connectionlocator_method_entry, 0); + + zend_declare_property_null(phalcon_datamapper_pdo_connectionlocator_ce, SL("master"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_connectionlocator_ce, SL("read"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_connectionlocator_ce, SL("write"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_connectionlocator_ce, SL("instances"), ZEND_ACC_PRIVATE); + phalcon_datamapper_pdo_connectionlocator_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Pdo_ConnectionLocator; + + zend_class_implements(phalcon_datamapper_pdo_connectionlocator_ce, 1, phalcon_datamapper_pdo_connectionlocatorinterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, __construct) +{ + zend_string *_3, *_8; + zend_ulong _2, _7; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL, *_9 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval read, write; + zval *master, master_sub, *read_param = NULL, *write_param = NULL, name, callableObject, *_0, _1, *_5, _6; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&master_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&callableObject); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&read); + ZVAL_UNDEF(&write); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(data) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_OBJECT_OF_CLASS(master, phalcon_datamapper_pdo_connection_connectioninterface_ce) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(columnMap) + Z_PARAM_ARRAY(read) + Z_PARAM_ARRAY(write) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &data_param, &columnMap); - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!columnMap) { - columnMap = &columnMap_sub; - columnMap = &__$null; + zephir_fetch_params(1, 1, 2, &master, &read_param, &write_param); + if (!read_param) { + ZEPHIR_INIT_VAR(&read); + array_init(&read); + } else { + zephir_get_arrval(&read, read_param); + } + if (!write_param) { + ZEPHIR_INIT_VAR(&write); + array_init(&write); + } else { + zephir_get_arrval(&write, write_param); } - if (Z_TYPE_P(columnMap) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&snapshot); - array_init(&snapshot); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model.zep", 3009); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _2$$3, _3$$3, _0$$3) - { - ZEPHIR_INIT_NVAR(&key); - if (_3$$3 != NULL) { - ZVAL_STR_COPY(&key, _3$$3); - } else { - ZVAL_LONG(&key, _2$$3); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0$$3); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - _4$$4 = !(zephir_array_isset(columnMap, &key)); - if (_4$$4) { - _4$$4 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_4$$4) { - ZEPHIR_CALL_SELF(&_5$$6, "caseinsensitivecolumnmap", &_6, 419, columnMap, &key); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&key, &_5$$6); - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_7$$8); - object_init_ex(&_7$$8, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_8$$8); - ZEPHIR_CONCAT_SVS(&_8$$8, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_7$$8, "__construct", &_9, 29, &_8$$8); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$8, "phalcon/Mvc/Model.zep", 2989); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_long_fetch(&attribute, &attribute, 0, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_10$$11); - object_init_ex(&_10$$11, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_11$$11); - ZEPHIR_CONCAT_SVS(&_11$$11, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_10$$11, "__construct", &_9, 29, &_11$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_10$$11, "phalcon/Mvc/Model.zep", 3000); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - zephir_array_update_zval(&snapshot, &attribute, &value, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setmaster", NULL, 0, master); + zephir_check_call_status(); + zephir_is_iterable(&read, 0, "phalcon/DataMapper/Pdo/ConnectionLocator.zep", 78); + if (Z_TYPE_P(&read) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&read), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&name); + if (_3 != NULL) { + ZVAL_STR_COPY(&name, _3); + } else { + ZVAL_LONG(&name, _2); + } + ZEPHIR_INIT_NVAR(&callableObject); + ZVAL_COPY(&callableObject, _0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setread", &_4, 0, &name, &callableObject); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1$$3, &data, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&key, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&key) != IS_STRING) { - continue; - } - _12$$12 = !(zephir_array_isset(columnMap, &key)); - if (_12$$12) { - _12$$12 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_12$$12) { - ZEPHIR_CALL_SELF(&_13$$14, "caseinsensitivecolumnmap", &_6, 419, columnMap, &key); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&key, &_13$$14); - } - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_fetch(&attribute, columnMap, &key, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_14$$16); - object_init_ex(&_14$$16, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_15$$16); - ZEPHIR_CONCAT_SVS(&_15$$16, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_14$$16, "__construct", &_9, 29, &_15$$16); - zephir_check_call_status(); - zephir_throw_exception_debug(&_14$$16, "phalcon/Mvc/Model.zep", 2989); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - if (Z_TYPE_P(&attribute) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attribute); - if (!(zephir_array_isset_long_fetch(&attribute, &attribute, 0, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_16$$19); - object_init_ex(&_16$$19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_17$$19); - ZEPHIR_CONCAT_SVS(&_17$$19, "Column '", &key, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_16$$19, "__construct", &_9, 29, &_17$$19); - zephir_check_call_status(); - zephir_throw_exception_debug(&_16$$19, "phalcon/Mvc/Model.zep", 3000); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } - zephir_array_update_zval(&snapshot, &attribute, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); - zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &read, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &read, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; } + ZEPHIR_CALL_METHOD(&name, &read, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&callableObject, &read, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setread", &_4, 0, &name, &callableObject); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &read, "next", NULL, 0); + zephir_check_call_status(); } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); + } + ZEPHIR_INIT_NVAR(&callableObject); + ZEPHIR_INIT_NVAR(&name); + zephir_is_iterable(&write, 0, "phalcon/DataMapper/Pdo/ConnectionLocator.zep", 81); + if (Z_TYPE_P(&write) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&write), _7, _8, _5) + { + ZEPHIR_INIT_NVAR(&name); + if (_8 != NULL) { + ZVAL_STR_COPY(&name, _8); + } else { + ZVAL_LONG(&name, _7); + } + ZEPHIR_INIT_NVAR(&callableObject); + ZVAL_COPY(&callableObject, _5); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setwrite", &_9, 0, &name, &callableObject); + zephir_check_call_status(); + } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CPY_WRT(&snapshot, &data); + ZEPHIR_CALL_METHOD(NULL, &write, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_6, &write, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_6)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &write, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&callableObject, &write, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setwrite", &_9, 0, &name, &callableObject); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &write, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &snapshot); + ZEPHIR_INIT_NVAR(&callableObject); + ZEPHIR_INIT_NVAR(&name); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, setTransaction) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, getMaster) { - zval *transaction, transaction_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&transaction_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(transaction, phalcon_mvc_model_transactioninterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &transaction); - zephir_update_property_zval(this_ptr, ZEND_STRL("transaction"), transaction); - RETURN_THISW(); + RETURN_MEMBER(getThis(), "master"); } -static PHP_METHOD(Phalcon_Mvc_Model, setup) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, getRead) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL, disableEvents, columnRenaming, notNullValidations, exceptionOnFailedSave, exceptionOnFailedMetaDataSave, phqlLiterals, virtualForeignKeys, lateStateBinding, castOnHydrate, ignoreUnknownColumns, updateSnapshotOnSave, disableAssignSetters, caseInsensitiveColumnMap, prefetchRecords, lastInsertId; - zval options; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); - ZVAL_UNDEF(&disableEvents); - ZVAL_UNDEF(&columnRenaming); - ZVAL_UNDEF(¬NullValidations); - ZVAL_UNDEF(&exceptionOnFailedSave); - ZVAL_UNDEF(&exceptionOnFailedMetaDataSave); - ZVAL_UNDEF(&phqlLiterals); - ZVAL_UNDEF(&virtualForeignKeys); - ZVAL_UNDEF(&lateStateBinding); - ZVAL_UNDEF(&castOnHydrate); - ZVAL_UNDEF(&ignoreUnknownColumns); - ZVAL_UNDEF(&updateSnapshotOnSave); - ZVAL_UNDEF(&disableAssignSetters); - ZVAL_UNDEF(&caseInsensitiveColumnMap); - ZVAL_UNDEF(&prefetchRecords); - ZVAL_UNDEF(&lastInsertId); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &options_param); - ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); + zephir_fetch_params(1, 0, 1, &name_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); + ZVAL_STRING(&name, ""); + } else { + zephir_get_strval(&name, name_param); + } - ZEPHIR_OBS_VAR(&disableEvents); - if (zephir_array_isset_string_fetch(&disableEvents, &options, SL("events"), 0)) { - ZEPHIR_GLOBAL(orm).events = zend_is_true(&disableEvents); - } - ZEPHIR_OBS_VAR(&virtualForeignKeys); - if (zephir_array_isset_string_fetch(&virtualForeignKeys, &options, SL("virtualForeignKeys"), 0)) { - ZEPHIR_GLOBAL(orm).virtual_foreign_keys = zend_is_true(&virtualForeignKeys); - } - ZEPHIR_OBS_VAR(&columnRenaming); - if (zephir_array_isset_string_fetch(&columnRenaming, &options, SL("columnRenaming"), 0)) { - ZEPHIR_GLOBAL(orm).column_renaming = zend_is_true(&columnRenaming); - } - ZEPHIR_OBS_VAR(¬NullValidations); - if (zephir_array_isset_string_fetch(¬NullValidations, &options, SL("notNullValidations"), 0)) { - ZEPHIR_GLOBAL(orm).not_null_validations = zend_is_true(¬NullValidations); - } - ZEPHIR_OBS_VAR(&exceptionOnFailedSave); - if (zephir_array_isset_string_fetch(&exceptionOnFailedSave, &options, SL("exceptionOnFailedSave"), 0)) { - ZEPHIR_GLOBAL(orm).exception_on_failed_save = zend_is_true(&exceptionOnFailedSave); - } - ZEPHIR_OBS_VAR(&exceptionOnFailedMetaDataSave); - if (zephir_array_isset_string_fetch(&exceptionOnFailedMetaDataSave, &options, SL("exceptionOnFailedMetaDataSave"), 0)) { - ZEPHIR_GLOBAL(orm).exception_on_failed_metadata_save = zend_is_true(&exceptionOnFailedMetaDataSave); - } - ZEPHIR_OBS_VAR(&phqlLiterals); - if (zephir_array_isset_string_fetch(&phqlLiterals, &options, SL("phqlLiterals"), 0)) { - ZEPHIR_GLOBAL(orm).enable_literals = zend_is_true(&phqlLiterals); - } - ZEPHIR_OBS_VAR(&lateStateBinding); - if (zephir_array_isset_string_fetch(&lateStateBinding, &options, SL("lateStateBinding"), 0)) { - ZEPHIR_GLOBAL(orm).late_state_binding = zend_is_true(&lateStateBinding); - } - ZEPHIR_OBS_VAR(&castOnHydrate); - if (zephir_array_isset_string_fetch(&castOnHydrate, &options, SL("castOnHydrate"), 0)) { - ZEPHIR_GLOBAL(orm).cast_on_hydrate = zend_is_true(&castOnHydrate); - } - ZEPHIR_OBS_VAR(&ignoreUnknownColumns); - if (zephir_array_isset_string_fetch(&ignoreUnknownColumns, &options, SL("ignoreUnknownColumns"), 0)) { - ZEPHIR_GLOBAL(orm).ignore_unknown_columns = zend_is_true(&ignoreUnknownColumns); - } - ZEPHIR_OBS_VAR(&caseInsensitiveColumnMap); - if (zephir_array_isset_string_fetch(&caseInsensitiveColumnMap, &options, SL("caseInsensitiveColumnMap"), 0)) { - ZEPHIR_GLOBAL(orm).case_insensitive_column_map = zend_is_true(&caseInsensitiveColumnMap); - } - ZEPHIR_OBS_VAR(&updateSnapshotOnSave); - if (zephir_array_isset_string_fetch(&updateSnapshotOnSave, &options, SL("updateSnapshotOnSave"), 0)) { - ZEPHIR_GLOBAL(orm).update_snapshot_on_save = zend_is_true(&updateSnapshotOnSave); - } - ZEPHIR_OBS_VAR(&disableAssignSetters); - if (zephir_array_isset_string_fetch(&disableAssignSetters, &options, SL("disableAssignSetters"), 0)) { - ZEPHIR_GLOBAL(orm).disable_assign_setters = zend_is_true(&disableAssignSetters); - } - ZEPHIR_OBS_VAR(&prefetchRecords); - if (zephir_array_isset_string_fetch(&prefetchRecords, &options, SL("prefetchRecords"), 0)) { - ZEPHIR_GLOBAL(orm).resultset_prefetch_records = ZSTR_VAL(zval_get_string(&prefetchRecords)); - } - ZEPHIR_OBS_VAR(&lastInsertId); - if (zephir_array_isset_string_fetch(&lastInsertId, &options, SL("castLastInsertIdToInt"), 0)) { - ZEPHIR_GLOBAL(orm).cast_last_insert_id_to_int = zend_is_true(&lastInsertId); - } - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "read"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnection", NULL, 0, &_0, &name); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, setWriteConnectionService) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, getWrite) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *connectionService_param = NULL, _0; - zval connectionService; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(connectionService) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); + zephir_fetch_params(1, 0, 1, &name_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); + ZVAL_STRING(&name, ""); } else { - ZEPHIR_INIT_VAR(&connectionService); + zephir_get_strval(&name, name_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setwriteconnectionservice", NULL, 0, this_ptr, &connectionService); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "write"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnection", NULL, 0, &_0, &name); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, skipOperation) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, setMaster) { - zval *skip_param = NULL, __$true, __$false; - zend_bool skip; + zval *callableObject, callableObject_sub; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&callableObject_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(skip) + Z_PARAM_OBJECT_OF_CLASS(callableObject, phalcon_datamapper_pdo_connection_connectioninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &skip_param); - skip = zephir_get_boolval(skip_param); + zephir_fetch_params_without_memory_grow(1, 0, &callableObject); - if (skip) { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$false); - } + zephir_update_property_zval(this_ptr, ZEND_STRL("master"), callableObject); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Model, sum) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, setRead) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *parameters = NULL, parameters_sub, __$null, _0, _1; + zval *name_param = NULL, *callableObject, callableObject_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&callableObject_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(callableObject) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶meters); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } + zephir_fetch_params(1, 2, 0, &name_param, &callableObject); + zephir_get_strval(&name, name_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "SUM"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "sumatory"); - ZEPHIR_RETURN_CALL_SELF("groupresult", NULL, 0, &_0, &_1, parameters); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_array(this_ptr, SL("read"), &name, callableObject); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, toArray) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, setWrite) { - zend_bool _3$$4, _9$$14; - zval data; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_8 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *columns = NULL, columns_sub, __$null, metaData, columnMap, attribute, attributeField, value, _0, *_1, _2, _4$$5, _6$$7, _7$$7, _10$$15, _11$$17, _12$$17; + zval *name_param = NULL, *callableObject, callableObject_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&columns_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_6$$7); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_10$$15); - ZVAL_UNDEF(&_11$$17); - ZVAL_UNDEF(&_12$$17); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&callableObject_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(columns) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(callableObject) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &columns); - if (!columns) { - columns = &columns_sub; - columns = &__$null; - } + zephir_fetch_params(1, 2, 0, &name_param, &callableObject); + zephir_get_strval(&name, name_param); - ZEPHIR_INIT_VAR(&data); - array_init(&data); - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, &metaData, "getattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - zephir_is_iterable(&_0, 0, "phalcon/Mvc/Model.zep", 3281); - if (Z_TYPE_P(&_0) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _1); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - _3$$4 = !(zephir_array_isset(&columnMap, &attribute)); - if (_3$$4) { - _3$$4 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_3$$4) { - ZEPHIR_CALL_SELF(&_4$$5, "caseinsensitivecolumnmap", &_5, 419, &columnMap, &attribute); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&attribute, &_4$$5); - } - ZEPHIR_OBS_NVAR(&attributeField); - if (!(zephir_array_isset_fetch(&attributeField, &columnMap, &attribute, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_6$$7); - object_init_ex(&_6$$7, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_7$$7); - ZEPHIR_CONCAT_SVS(&_7$$7, "Column '", &attribute, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_6$$7, "__construct", &_8, 29, &_7$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_6$$7, "phalcon/Mvc/Model.zep", 3259); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &attribute); - } - if (Z_TYPE_P(columns) == IS_ARRAY) { - if (!(zephir_fast_in_array(&attributeField, columns))) { - continue; - } - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - zephir_array_update_zval(&data, &attributeField, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&data, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &_0, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - _9$$14 = !(zephir_array_isset(&columnMap, &attribute)); - if (_9$$14) { - _9$$14 = ZEPHIR_GLOBAL(orm).case_insensitive_column_map; - } - if (_9$$14) { - ZEPHIR_CALL_SELF(&_10$$15, "caseinsensitivecolumnmap", &_5, 419, &columnMap, &attribute); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&attribute, &_10$$15); - } - ZEPHIR_OBS_NVAR(&attributeField); - if (!(zephir_array_isset_fetch(&attributeField, &columnMap, &attribute, 0))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_11$$17); - object_init_ex(&_11$$17, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_12$$17); - ZEPHIR_CONCAT_SVS(&_12$$17, "Column '", &attribute, "' doesn't make part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_11$$17, "__construct", &_8, 29, &_12$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_11$$17, "phalcon/Mvc/Model.zep", 3259); - ZEPHIR_MM_RESTORE(); - return; - } - continue; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &attribute); - } - if (Z_TYPE_P(columns) == IS_ARRAY) { - if (!(zephir_fast_in_array(&attributeField, columns))) { - continue; - } - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - zephir_array_update_zval(&data, &attributeField, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&data, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - RETURN_CTOR(&data); + zephir_update_property_array(this_ptr, SL("write"), &name, callableObject); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model, update) +static PHP_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocator, getConnection) { - zval _3$$4; - zval metaData, _0, _1$$3, _2$$3, _4$$4, _5$$4, _6$$4, _7$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *type_param = NULL, *name_param = NULL, collection, instanceName, instances, requested, _0, _1, _6, _2$$5, _3$$5, _4$$6, _5$$6; + zval type, name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&collection); + ZVAL_UNDEF(&instanceName); + ZVAL_UNDEF(&instances); + ZVAL_UNDEF(&requested); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_4$$6); + ZVAL_UNDEF(&_5$$6); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(type) + Z_PARAM_OPTIONAL + Z_PARAM_STR(name) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &type_param, &name_param); + zephir_get_strval(&type, type_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); + ZVAL_STRING(&name, ""); + } else { + zephir_get_strval(&name, name_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_0)) { - ZEPHIR_CALL_METHOD(&metaData, this_ptr, "getmodelsmetadata", NULL, 0); + + ZEPHIR_OBS_VAR(&collection); + zephir_read_property_zval(&collection, this_ptr, &type, PH_NOISY_CC); + ZEPHIR_CPY_WRT(&requested, &name); + zephir_read_property(&_0, this_ptr, ZEND_STRL("instances"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&instances, &_0); + if (ZEPHIR_IS_EMPTY(&collection)) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getmaster", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "getreadconnection", NULL, 430); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, ""); + if (ZEPHIR_IS_IDENTICAL(&_1, &requested)) { + ZEPHIR_CALL_FUNCTION(&requested, "array_rand", NULL, 197, &collection); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "has", NULL, 0, &metaData, &_2$$3); + } + if (!(zephir_array_isset(&collection, &requested))) { + ZEPHIR_INIT_VAR(&_2$$5); + object_init_ex(&_2$$5, phalcon_datamapper_pdo_exception_connectionnotfound_ce); + ZEPHIR_INIT_VAR(&_3$$5); + ZEPHIR_CONCAT_SVSV(&_3$$5, "Connection not found: ", &type, ":", &requested); + ZEPHIR_CALL_METHOD(NULL, &_2$$5, "__construct", NULL, 29, &_3$$5); zephir_check_call_status(); - if (!(zephir_is_true(&_1$$3))) { + zephir_throw_exception_debug(&_2$$5, "phalcon/DataMapper/Pdo/ConnectionLocator.zep", 210); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_INIT_VAR(&instanceName); + ZEPHIR_CONCAT_VSV(&instanceName, &type, "-", &requested); + if (!(zephir_array_isset(&instances, &instanceName))) { + ZEPHIR_INIT_VAR(&_4$$6); + zephir_array_fetch(&_5$$6, &collection, &requested, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/ConnectionLocator.zep", 221); + ZEPHIR_CALL_USER_FUNC(&_4$$6, &_5$$6); + zephir_check_call_status(); + zephir_array_update_zval(&instances, &instanceName, &_4$$6, PH_COPY | PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("instances"), &instances); + } + zephir_array_fetch(&_6, &instances, &instanceName, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/ConnectionLocator.zep", 225); + RETURN_CTOR(&_6); +} + +zend_object *zephir_init_properties_Phalcon_DataMapper_Pdo_ConnectionLocator(zend_class_entry *class_type) +{ + zval _0, _2, _4, _1$$3, _3$$4, _5$$5; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); + + + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("instances"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("instances"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("write"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { ZEPHIR_INIT_VAR(&_3$$4); - zephir_create_array(&_3$$4, 1, 0); - ZEPHIR_INIT_VAR(&_4$$4); - object_init_ex(&_4$$4, phalcon_messages_message_ce); - ZEPHIR_INIT_VAR(&_5$$4); - ZVAL_STRING(&_5$$4, "Record cannot be updated because it does not exist"); - ZVAL_NULL(&_6$$4); - ZEPHIR_INIT_VAR(&_7$$4); - ZVAL_STRING(&_7$$4, "InvalidUpdateAttempt"); - ZEPHIR_CALL_METHOD(NULL, &_4$$4, "__construct", NULL, 6, &_5$$4, &_6$$4, &_7$$4); - zephir_check_call_status(); - zephir_array_fast_append(&_3$$4, &_4$$4); - zephir_update_property_zval(this_ptr, ZEND_STRL("errorMessages"), &_3$$4); - RETURN_MM_BOOL(0); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("write"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("read"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("read"), &_5$$5); } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "save", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, writeAttribute) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\DataMapper\\Pdo, ConnectionLocatorInterface, phalcon, datamapper_pdo_connectionlocatorinterface, phalcon_datamapper_pdo_connectionlocatorinterface_method_entry); + + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, getMaster); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, getRead); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, getWrite); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, setMaster); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, setRead); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_ConnectionLocatorInterface, setWrite); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Connection_AbstractConnection) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Pdo\\Connection, AbstractConnection, phalcon, datamapper_pdo_connection_abstractconnection, phalcon_datamapper_pdo_connection_abstractconnection_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_datamapper_pdo_connection_abstractconnection_ce, SL("pdo"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_connection_abstractconnection_ce, SL("profiler"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_datamapper_pdo_connection_abstractconnection_ce, 1, phalcon_datamapper_pdo_connection_connectioninterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, __call) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *attribute_param = NULL, *value, value_sub; - zval attribute; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval arguments, _2; + zval *name, name_sub, *arguments_param = NULL, className, message, _0, _3, _1$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&name_sub); + ZVAL_UNDEF(&className); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(attribute) - Z_PARAM_ZVAL(value) + Z_PARAM_ZVAL(name) + Z_PARAM_ARRAY(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &attribute_param, &value); - if (UNEXPECTED(Z_TYPE_P(attribute_param) != IS_STRING && Z_TYPE_P(attribute_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'attribute' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(attribute_param) == IS_STRING)) { - zephir_get_strval(&attribute, attribute_param); - } else { - ZEPHIR_INIT_VAR(&attribute); - } + zephir_fetch_params(1, 2, 0, &name, &arguments_param); + zephir_get_arrval(&arguments, arguments_param); - zephir_update_property_zval_zval(this_ptr, &attribute, value); - ZEPHIR_MM_RESTORE(); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + if (!((zephir_method_exists(&_0, name) == SUCCESS))) { + ZEPHIR_INIT_VAR(&className); + zephir_get_class(&className, this_ptr, 0); + ZEPHIR_INIT_VAR(&message); + ZEPHIR_CONCAT_SVSVS(&message, "Class '", &className, "' does not have a method '", name, "'"); + ZEPHIR_INIT_VAR(&_1$$3); + object_init_ex(&_1$$3, spl_ce_BadMethodCallException); + ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 72, &message); + zephir_check_call_status(); + zephir_throw_exception_debug(&_1$$3, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 62); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_INIT_VAR(&_2); + zephir_create_array(&_2, 2, 0); + ZEPHIR_OBS_VAR(&_3); + zephir_read_property(&_3, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC); + zephir_array_fast_append(&_2, &_3); + zephir_array_fast_append(&_2, name); + ZEPHIR_CALL_USER_FUNC_ARRAY(return_value, &_2, &arguments); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, checkForeignKeysRestrict) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, beginTransaction) { - zend_string *_9$$7, *_30$$26; - zend_ulong _8$$7, _29$$26; - zend_bool error = 0, validateWithNulls = 0, _15$$3, _36$$22; - zval conditions, _17$$3, _38$$22; - zval manager, belongsTo, foreignKey, relation, position, bindParams, extraConditions, message, fields, referencedFields, field, referencedModel, value, allowNulls, _0, *_1, _2, _3$$5, _4$$3, _16$$3, _18$$3, *_6$$7, _7$$7, _10$$8, _11$$8, _12$$10, _13$$10, _14$$12, _19$$20, _20$$18, _21$$18, _24$$24, _25$$22, _37$$22, _39$$22, *_27$$26, _28$$26, _31$$27, _32$$27, _33$$29, _34$$29, _35$$31, _40$$39, _41$$37, _42$$37, _43$$42; + zval result, _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_22 = NULL, *_23 = NULL, *_26 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, action = 0, numberNull = 0; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&belongsTo); - ZVAL_UNDEF(&foreignKey); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&extraConditions); - ZVAL_UNDEF(&message); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&allowNulls); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_16$$3); - ZVAL_UNDEF(&_18$$3); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$10); - ZVAL_UNDEF(&_13$$10); - ZVAL_UNDEF(&_14$$12); - ZVAL_UNDEF(&_19$$20); - ZVAL_UNDEF(&_20$$18); - ZVAL_UNDEF(&_21$$18); - ZVAL_UNDEF(&_24$$24); - ZVAL_UNDEF(&_25$$22); - ZVAL_UNDEF(&_37$$22); - ZVAL_UNDEF(&_39$$22); - ZVAL_UNDEF(&_28$$26); - ZVAL_UNDEF(&_31$$27); - ZVAL_UNDEF(&_32$$27); - ZVAL_UNDEF(&_33$$29); - ZVAL_UNDEF(&_34$$29); - ZVAL_UNDEF(&_35$$31); - ZVAL_UNDEF(&_40$$39); - ZVAL_UNDEF(&_41$$37); - ZVAL_UNDEF(&_42$$37); - ZVAL_UNDEF(&_43$$42); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&_17$$3); - ZVAL_UNDEF(&_38$$22); + ZVAL_UNDEF(&_3); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&belongsTo, &manager, "getbelongsto", NULL, 0, this_ptr); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - error = 0; - zephir_is_iterable(&belongsTo, 0, "phalcon/Mvc/Model.zep", 3492); - if (Z_TYPE_P(&belongsTo) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&belongsTo), _1) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _1); - validateWithNulls = 0; - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 1; - if (zephir_array_isset_string(&foreignKey, SL("action"))) { - ZEPHIR_OBS_NVAR(&_3$$5); - zephir_array_fetch_string(&_3$$5, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3383); - action = zephir_get_intval(&_3$$5); - } - if (action != 1) { - continue; - } - ZEPHIR_CALL_METHOD(&_4$$3, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, &manager, "load", &_5, 0, &_4$$3); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&conditions); - array_init(&conditions); - ZEPHIR_INIT_NVAR(&bindParams); - array_init(&bindParams); - numberNull = 0; - ZEPHIR_CALL_METHOD(&fields, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model.zep", 3426); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fields), _8$$7, _9$$7, _6$$7) - { - ZEPHIR_INIT_NVAR(&position); - if (_9$$7 != NULL) { - ZVAL_STR_COPY(&position, _9$$7); - } else { - ZVAL_LONG(&position, _8$$7); - } - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _6$$7); - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &field, PH_SILENT_CC); - zephir_array_fetch(&_10$$8, &referencedFields, &position, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3418); - ZEPHIR_INIT_NVAR(&_11$$8); - ZEPHIR_CONCAT_SVSV(&_11$$8, "[", &_10$$8, "] = ?", &position); - zephir_array_append(&conditions, &_11$$8, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3418); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3419); - if (Z_TYPE_P(&value) == IS_NULL) { - numberNull++; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_7$$7, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_7$$7)) { - break; - } - ZEPHIR_CALL_METHOD(&position, &fields, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &field, PH_SILENT_CC); - zephir_array_fetch(&_12$$10, &referencedFields, &position, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3418); - ZEPHIR_INIT_NVAR(&_13$$10); - ZEPHIR_CONCAT_SVSV(&_13$$10, "[", &_12$$10, "] = ?", &position); - zephir_array_append(&conditions, &_13$$10, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3418); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3419); - if (Z_TYPE_P(&value) == IS_NULL) { - numberNull++; - } - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - ZEPHIR_INIT_NVAR(&position); - validateWithNulls = numberNull == zephir_fast_count_int(&fields); - } else { - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &fields, PH_SILENT_CC); - ZEPHIR_INIT_NVAR(&_14$$12); - ZEPHIR_CONCAT_SVS(&_14$$12, "[", &referencedFields, "] = ?0"); - zephir_array_append(&conditions, &_14$$12, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3430); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3431); - if (Z_TYPE_P(&value) == IS_NULL) { - validateWithNulls = 1; - } - } - ZEPHIR_OBS_NVAR(&extraConditions); - if (zephir_array_isset_string_fetch(&extraConditions, &foreignKey, SL("conditions"), 0)) { - zephir_array_append(&conditions, &extraConditions, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3442); - } - if (validateWithNulls) { - ZEPHIR_OBS_NVAR(&allowNulls); - if (zephir_array_isset_string_fetch(&allowNulls, &foreignKey, SL("allowNulls"), 0)) { - validateWithNulls = zephir_get_boolval(&allowNulls); - } else { - validateWithNulls = 0; - } - } - _15$$3 = !validateWithNulls; - if (_15$$3) { - ZEPHIR_INIT_NVAR(&_17$$3); - zephir_create_array(&_17$$3, 2, 0); - ZEPHIR_INIT_NVAR(&_18$$3); - zephir_fast_join_str(&_18$$3, SL(" AND "), &conditions); - zephir_array_fast_append(&_17$$3, &_18$$3); - zephir_array_update_string(&_17$$3, SL("bind"), &bindParams, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_16$$3, &referencedModel, "count", NULL, 0, &_17$$3); - zephir_check_call_status(); - _15$$3 = !zephir_is_true(&_16$$3); - } - if (_15$$3) { - ZEPHIR_OBS_NVAR(&message); - if (!(zephir_array_isset_string_fetch(&message, &foreignKey, SL("message"), 0))) { - ZEPHIR_INIT_NVAR(&message); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEPHIR_INIT_NVAR(&_19$$20); - zephir_fast_join_str(&_19$$20, SL(", "), &fields); - ZEPHIR_CONCAT_SVS(&message, "Value of fields \"", &_19$$20, "\" does not exist on referenced table"); - } else { - ZEPHIR_CONCAT_SVS(&message, "Value of field \"", &fields, "\" does not exist on referenced table"); - } - } - ZEPHIR_INIT_NVAR(&_20$$18); - object_init_ex(&_20$$18, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_21$$18); - ZVAL_STRING(&_21$$18, "ConstraintViolation"); - ZEPHIR_CALL_METHOD(NULL, &_20$$18, "__construct", &_22, 6, &message, &fields, &_21$$18); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_23, 0, &_20$$18); - zephir_check_call_status(); - error = 1; - break; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &belongsTo, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &belongsTo, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &belongsTo, "current", NULL, 0); - zephir_check_call_status(); - validateWithNulls = 0; - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 1; - if (zephir_array_isset_string(&foreignKey, SL("action"))) { - ZEPHIR_OBS_NVAR(&_24$$24); - zephir_array_fetch_string(&_24$$24, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3383); - action = zephir_get_intval(&_24$$24); - } - if (action != 1) { - continue; - } - ZEPHIR_CALL_METHOD(&_25$$22, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, &manager, "load", &_26, 0, &_25$$22); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&conditions); - array_init(&conditions); - ZEPHIR_INIT_NVAR(&bindParams); - array_init(&bindParams); - numberNull = 0; - ZEPHIR_CALL_METHOD(&fields, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model.zep", 3426); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fields), _29$$26, _30$$26, _27$$26) - { - ZEPHIR_INIT_NVAR(&position); - if (_30$$26 != NULL) { - ZVAL_STR_COPY(&position, _30$$26); - } else { - ZVAL_LONG(&position, _29$$26); - } - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _27$$26); - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &field, PH_SILENT_CC); - zephir_array_fetch(&_31$$27, &referencedFields, &position, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3418); - ZEPHIR_INIT_NVAR(&_32$$27); - ZEPHIR_CONCAT_SVSV(&_32$$27, "[", &_31$$27, "] = ?", &position); - zephir_array_append(&conditions, &_32$$27, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3418); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3419); - if (Z_TYPE_P(&value) == IS_NULL) { - numberNull++; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_28$$26, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_28$$26)) { - break; - } - ZEPHIR_CALL_METHOD(&position, &fields, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &field, PH_SILENT_CC); - zephir_array_fetch(&_33$$29, &referencedFields, &position, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3418); - ZEPHIR_INIT_NVAR(&_34$$29); - ZEPHIR_CONCAT_SVSV(&_34$$29, "[", &_33$$29, "] = ?", &position); - zephir_array_append(&conditions, &_34$$29, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3418); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3419); - if (Z_TYPE_P(&value) == IS_NULL) { - numberNull++; - } - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - ZEPHIR_INIT_NVAR(&position); - validateWithNulls = numberNull == zephir_fast_count_int(&fields); - } else { - ZEPHIR_OBS_NVAR(&value); - zephir_fetch_property_zval(&value, this_ptr, &fields, PH_SILENT_CC); - ZEPHIR_INIT_NVAR(&_35$$31); - ZEPHIR_CONCAT_SVS(&_35$$31, "[", &referencedFields, "] = ?0"); - zephir_array_append(&conditions, &_35$$31, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3430); - zephir_array_append(&bindParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3431); - if (Z_TYPE_P(&value) == IS_NULL) { - validateWithNulls = 1; - } - } - ZEPHIR_OBS_NVAR(&extraConditions); - if (zephir_array_isset_string_fetch(&extraConditions, &foreignKey, SL("conditions"), 0)) { - zephir_array_append(&conditions, &extraConditions, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3442); - } - if (validateWithNulls) { - ZEPHIR_OBS_NVAR(&allowNulls); - if (zephir_array_isset_string_fetch(&allowNulls, &foreignKey, SL("allowNulls"), 0)) { - validateWithNulls = zephir_get_boolval(&allowNulls); - } else { - validateWithNulls = 0; - } - } - _36$$22 = !validateWithNulls; - if (_36$$22) { - ZEPHIR_INIT_NVAR(&_38$$22); - zephir_create_array(&_38$$22, 2, 0); - ZEPHIR_INIT_NVAR(&_39$$22); - zephir_fast_join_str(&_39$$22, SL(" AND "), &conditions); - zephir_array_fast_append(&_38$$22, &_39$$22); - zephir_array_update_string(&_38$$22, SL("bind"), &bindParams, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_37$$22, &referencedModel, "count", NULL, 0, &_38$$22); - zephir_check_call_status(); - _36$$22 = !zephir_is_true(&_37$$22); - } - if (_36$$22) { - ZEPHIR_OBS_NVAR(&message); - if (!(zephir_array_isset_string_fetch(&message, &foreignKey, SL("message"), 0))) { - ZEPHIR_INIT_NVAR(&message); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEPHIR_INIT_NVAR(&_40$$39); - zephir_fast_join_str(&_40$$39, SL(", "), &fields); - ZEPHIR_CONCAT_SVS(&message, "Value of fields \"", &_40$$39, "\" does not exist on referenced table"); - } else { - ZEPHIR_CONCAT_SVS(&message, "Value of field \"", &fields, "\" does not exist on referenced table"); - } - } - ZEPHIR_INIT_NVAR(&_41$$37); - object_init_ex(&_41$$37, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_42$$37); - ZVAL_STRING(&_42$$37, "ConstraintViolation"); - ZEPHIR_CALL_METHOD(NULL, &_41$$37, "__construct", &_22, 6, &message, &fields, &_42$$37); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_23, 0, &_41$$37); - zephir_check_call_status(); - error = 1; - break; - } - ZEPHIR_CALL_METHOD(NULL, &belongsTo, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&relation); - if (error) { - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_INIT_VAR(&_43$$42); - ZVAL_STRING(&_43$$42, "onValidationFails"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_43$$42); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "canceloperation", NULL, 0); - zephir_check_call_status(); - } - RETURN_MM_BOOL(0); - } - RETURN_MM_BOOL(1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "beginTransaction"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &_2, "begintransaction", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0); + zephir_check_call_status(); + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Mvc_Model, checkForeignKeysReverseCascade) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, commit) { - zend_bool _3$$3, _7$$9; - zval manager, relations, relation, foreignKey, related, _0, *_1, _2, _4$$5, _6$$7, _8$$11, _10$$13; + zval result, _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_9 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, action = 0; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&foreignKey); - ZVAL_UNDEF(&related); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_6$$7); - ZVAL_UNDEF(&_8$$11); - ZVAL_UNDEF(&_10$$13); + ZVAL_UNDEF(&_3); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&relations, &manager, "gethasoneandhasmany", NULL, 0, this_ptr); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model.zep", 3568); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _1) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _1); - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 0; - _3$$3 = Z_TYPE_P(&foreignKey) == IS_ARRAY; - if (_3$$3) { - _3$$3 = zephir_array_isset_string(&foreignKey, SL("action")); - } - if (_3$$3) { - ZEPHIR_OBS_NVAR(&_4$$5); - zephir_array_fetch_string(&_4$$5, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3542); - action = zephir_get_intval(&_4$$5); - } - if (action != 2) { - continue; - } - ZEPHIR_CALL_METHOD(&related, &manager, "getrelationrecords", &_5, 0, &relation, this_ptr); - zephir_check_call_status(); - if (zephir_is_true(&related)) { - ZEPHIR_CALL_METHOD(&_6$$7, &related, "delete", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_6$$7)) { - RETURN_MM_BOOL(0); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 0; - _7$$9 = Z_TYPE_P(&foreignKey) == IS_ARRAY; - if (_7$$9) { - _7$$9 = zephir_array_isset_string(&foreignKey, SL("action")); - } - if (_7$$9) { - ZEPHIR_OBS_NVAR(&_8$$11); - zephir_array_fetch_string(&_8$$11, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3542); - action = zephir_get_intval(&_8$$11); - } - if (action != 2) { - continue; - } - ZEPHIR_CALL_METHOD(&related, &manager, "getrelationrecords", &_9, 0, &relation, this_ptr); - zephir_check_call_status(); - if (zephir_is_true(&related)) { - ZEPHIR_CALL_METHOD(&_10$$13, &related, "delete", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_10$$13)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&relation); - RETURN_MM_BOOL(1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "commit"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &_2, "commit", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0); + zephir_check_call_status(); + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Mvc_Model, checkForeignKeysReverseRestrict) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, connect) { - zval manager, relations, foreignKey, relation, relationClass, fields, message, _0, *_1, _2, _5$$3, _6$$3, _7$$3, _4$$5, _9$$7, _10$$7, _15$$9, _16$$9, _17$$9, _14$$11, _19$$13, _20$$13, _21$$16; - zend_bool error = 0, _3$$3, _13$$9; +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, disconnect) +{ +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, errorCode) +{ + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL, *_11 = NULL, *_12 = NULL, *_18 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, action = 0; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&foreignKey); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relationClass); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_10$$7); - ZVAL_UNDEF(&_15$$9); - ZVAL_UNDEF(&_16$$9); - ZVAL_UNDEF(&_17$$9); - ZVAL_UNDEF(&_14$$11); - ZVAL_UNDEF(&_19$$13); - ZVAL_UNDEF(&_20$$13); - ZVAL_UNDEF(&_21$$16); ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&relations, &manager, "gethasoneandhasmany", NULL, 0, this_ptr); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - error = 0; - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model.zep", 3654); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _1) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _1); - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 1; - _3$$3 = Z_TYPE_P(&foreignKey) == IS_ARRAY; - if (_3$$3) { - _3$$3 = zephir_array_isset_string(&foreignKey, SL("action")); - } - if (_3$$3) { - ZEPHIR_OBS_NVAR(&_4$$5); - zephir_array_fetch_string(&_4$$5, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3613); - action = zephir_get_intval(&_4$$5); - } - if (action != 1) { - continue; - } - ZEPHIR_CALL_METHOD(&relationClass, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&fields, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZVAL_NULL(&_6$$3); - ZEPHIR_INIT_NVAR(&_7$$3); - ZVAL_STRING(&_7$$3, "count"); - ZEPHIR_CALL_METHOD(&_5$$3, &manager, "getrelationrecords", &_8, 0, &relation, this_ptr, &_6$$3, &_7$$3); - zephir_check_call_status(); - if (zephir_is_true(&_5$$3)) { - ZEPHIR_OBS_NVAR(&message); - if (!(zephir_array_isset_string_fetch(&message, &foreignKey, SL("message"), 0))) { - ZEPHIR_INIT_NVAR(&message); - ZEPHIR_CONCAT_SV(&message, "Record is referenced by model ", &relationClass); - } - ZEPHIR_INIT_NVAR(&_9$$7); - object_init_ex(&_9$$7, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_10$$7); - ZVAL_STRING(&_10$$7, "ConstraintViolation"); - ZEPHIR_CALL_METHOD(NULL, &_9$$7, "__construct", &_11, 6, &message, &fields, &_10$$7); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_12, 0, &_9$$7); - zephir_check_call_status(); - error = 1; - break; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&foreignKey, &relation, "getforeignkey", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&foreignKey)) { - continue; - } - action = 1; - _13$$9 = Z_TYPE_P(&foreignKey) == IS_ARRAY; - if (_13$$9) { - _13$$9 = zephir_array_isset_string(&foreignKey, SL("action")); - } - if (_13$$9) { - ZEPHIR_OBS_NVAR(&_14$$11); - zephir_array_fetch_string(&_14$$11, &foreignKey, SL("action"), PH_NOISY, "phalcon/Mvc/Model.zep", 3613); - action = zephir_get_intval(&_14$$11); - } - if (action != 1) { - continue; - } - ZEPHIR_CALL_METHOD(&relationClass, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&fields, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZVAL_NULL(&_16$$9); - ZEPHIR_INIT_NVAR(&_17$$9); - ZVAL_STRING(&_17$$9, "count"); - ZEPHIR_CALL_METHOD(&_15$$9, &manager, "getrelationrecords", &_18, 0, &relation, this_ptr, &_16$$9, &_17$$9); - zephir_check_call_status(); - if (zephir_is_true(&_15$$9)) { - ZEPHIR_OBS_NVAR(&message); - if (!(zephir_array_isset_string_fetch(&message, &foreignKey, SL("message"), 0))) { - ZEPHIR_INIT_NVAR(&message); - ZEPHIR_CONCAT_SV(&message, "Record is referenced by model ", &relationClass); - } - ZEPHIR_INIT_NVAR(&_19$$13); - object_init_ex(&_19$$13, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_20$$13); - ZVAL_STRING(&_20$$13, "ConstraintViolation"); - ZEPHIR_CALL_METHOD(NULL, &_19$$13, "__construct", &_11, 6, &message, &fields, &_20$$13); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_12, 0, &_19$$13); - zephir_check_call_status(); - error = 1; - break; - } - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&relation); - if (error) { - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_INIT_VAR(&_21$$16); - ZVAL_STRING(&_21$$16, "onValidationFails"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_21$$16); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "canceloperation", NULL, 0); - zephir_check_call_status(); - } - RETURN_MM_BOOL(0); - } - RETURN_MM_BOOL(1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "errorcode", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, doLowInsert) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, errorInfo) { - zend_string *_52$$56; - zend_ulong _51$$56; - zend_bool useExplicitIdentity = 0, _45, _6$$11, _22$$26, _39$$40, _54$$56; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_10 = NULL, *_11 = NULL, *_17 = NULL, *_19 = NULL, *_26 = NULL, *_27 = NULL, *_33 = NULL, *_35 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *metaData, metaData_sub, *connection, connection_sub, *table = NULL, table_sub, *identityField, identityField_sub, __$null, attributeField, attributes, automaticAttributes, bindDataTypes, bindSkip, bindType, bindTypes, columnMap, defaultValue, defaultValues, field, fields, lastInsertedId, manager, sequenceName, schema, snapshot, source, success, unsetDefaultValues, value, values, _0, *_1, _2, _3$$7, _4$$7, _7$$12, _8$$12, _9$$12, _12$$15, _13$$15, _14$$17, _15$$17, _16$$17, _18$$17, _20$$22, _21$$22, _23$$27, _24$$27, _25$$27, _28$$30, _29$$30, _30$$32, _31$$32, _32$$32, _34$$32, _36$$35, _37$$38, _38$$38, _40$$45, _41$$45, _42$$48, _43$$48, _44$$48, _46$$49, _47$$55, _48$$55, *_49$$56, _50$$56, _53$$56; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData_sub); - ZVAL_UNDEF(&connection_sub); - ZVAL_UNDEF(&table_sub); - ZVAL_UNDEF(&identityField_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&automaticAttributes); - ZVAL_UNDEF(&bindDataTypes); - ZVAL_UNDEF(&bindSkip); - ZVAL_UNDEF(&bindType); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&defaultValue); - ZVAL_UNDEF(&defaultValues); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&lastInsertedId); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&sequenceName); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&success); - ZVAL_UNDEF(&unsetDefaultValues); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&values); ZVAL_UNDEF(&_0); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "errorinfo", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, exec) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *statement_param = NULL, affectedRows, _0, _1, _2, _3; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&affectedRows); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&_4$$7); - ZVAL_UNDEF(&_7$$12); - ZVAL_UNDEF(&_8$$12); - ZVAL_UNDEF(&_9$$12); - ZVAL_UNDEF(&_12$$15); - ZVAL_UNDEF(&_13$$15); - ZVAL_UNDEF(&_14$$17); - ZVAL_UNDEF(&_15$$17); - ZVAL_UNDEF(&_16$$17); - ZVAL_UNDEF(&_18$$17); - ZVAL_UNDEF(&_20$$22); - ZVAL_UNDEF(&_21$$22); - ZVAL_UNDEF(&_23$$27); - ZVAL_UNDEF(&_24$$27); - ZVAL_UNDEF(&_25$$27); - ZVAL_UNDEF(&_28$$30); - ZVAL_UNDEF(&_29$$30); - ZVAL_UNDEF(&_30$$32); - ZVAL_UNDEF(&_31$$32); - ZVAL_UNDEF(&_32$$32); - ZVAL_UNDEF(&_34$$32); - ZVAL_UNDEF(&_36$$35); - ZVAL_UNDEF(&_37$$38); - ZVAL_UNDEF(&_38$$38); - ZVAL_UNDEF(&_40$$45); - ZVAL_UNDEF(&_41$$45); - ZVAL_UNDEF(&_42$$48); - ZVAL_UNDEF(&_43$$48); - ZVAL_UNDEF(&_44$$48); - ZVAL_UNDEF(&_46$$49); - ZVAL_UNDEF(&_47$$55); - ZVAL_UNDEF(&_48$$55); - ZVAL_UNDEF(&_50$$56); - ZVAL_UNDEF(&_53$$56); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_OBJECT_OF_CLASS(metaData, phalcon_mvc_model_metadatainterface_ce) - Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) - Z_PARAM_ZVAL(table) - Z_PARAM_ZVAL(identityField) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(statement) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &metaData, &connection, &table, &identityField); - ZEPHIR_SEPARATE_PARAM(table); + zephir_fetch_params(1, 1, 0, &statement_param); + zephir_get_strval(&statement, statement_param); - ZEPHIR_INIT_VAR(&bindSkip); - ZVAL_LONG(&bindSkip, 1024); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_INIT_VAR(&fields); - array_init(&fields); - ZEPHIR_INIT_VAR(&values); - array_init(&values); - ZEPHIR_INIT_VAR(&snapshot); - array_init(&snapshot); - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); - ZEPHIR_INIT_VAR(&unsetDefaultValues); - array_init(&unsetDefaultValues); - ZEPHIR_CALL_METHOD(&attributes, metaData, "getattributes", NULL, 0, this_ptr); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&bindDataTypes, metaData, "getbindtypes", NULL, 0, this_ptr); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "exec"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&automaticAttributes, metaData, "getautomaticcreateattributes", NULL, 0, this_ptr); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&affectedRows, &_2, "exec", NULL, 0, &statement); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&defaultValues, metaData, "getdefaultvalues", NULL, 0, this_ptr); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0, &statement); zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model.zep", 3776); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _1) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _1); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_3$$7); - object_init_ex(&_3$$7, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_4$$7); - ZEPHIR_CONCAT_SVS(&_4$$7, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_3$$7, "__construct", &_5, 29, &_4$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_3$$7, "phalcon/Mvc/Model.zep", 3710); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - if (!ZEPHIR_IS_EQUAL(&field, identityField)) { - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - _6$$11 = Z_TYPE_P(&value) == IS_NULL; - if (_6$$11) { - _6$$11 = zephir_array_isset(&defaultValues, &field); - } - if (_6$$11) { - zephir_array_fetch(&_7$$12, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3727); - zephir_array_update_zval(&snapshot, &attributeField, &_7$$12, PH_COPY | PH_SEPARATE); - zephir_array_fetch(&_8$$12, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3728); - zephir_array_update_zval(&unsetDefaultValues, &attributeField, &_8$$12, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_9$$12, connection, "supportsdefaultvalue", &_10, 0); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&_9$$12))) { - continue; - } - ZEPHIR_CALL_METHOD(&value, connection, "getdefaultvalue", &_11, 0); - zephir_check_call_status(); - } else { - zephir_array_update_zval(&snapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_12$$15); - object_init_ex(&_12$$15, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_13$$15); - ZEPHIR_CONCAT_SVS(&_13$$15, "Column '", &field, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_12$$15, "__construct", &_5, 29, &_13$$15); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$15, "phalcon/Mvc/Model.zep", 3745); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3748); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3749); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3750); - } else { - if (zephir_array_isset(&defaultValues, &field)) { - zephir_array_fetch(&_14$$17, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3753); - zephir_array_update_zval(&snapshot, &attributeField, &_14$$17, PH_COPY | PH_SEPARATE); - zephir_array_fetch(&_15$$17, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3754); - zephir_array_update_zval(&unsetDefaultValues, &attributeField, &_15$$17, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_16$$17, connection, "supportsdefaultvalue", &_17, 0); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&_16$$17))) { - continue; - } - ZEPHIR_CALL_METHOD(&_18$$17, connection, "getdefaultvalue", &_19, 0); - zephir_check_call_status(); - zephir_array_append(&values, &_18$$17, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3760); - } else { - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3762); - zephir_array_update_zval(&snapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3766); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3767); - } - } - } - } ZEND_HASH_FOREACH_END(); + RETURN_CCTOR(&affectedRows); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchAffected) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval values; + zval *statement_param = NULL, *values_param = NULL, sth; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&values); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &attributes, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_20$$22); - object_init_ex(&_20$$22, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_21$$22); - ZEPHIR_CONCAT_SVS(&_21$$22, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_20$$22, "__construct", &_5, 29, &_21$$22); - zephir_check_call_status(); - zephir_throw_exception_debug(&_20$$22, "phalcon/Mvc/Model.zep", 3710); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - if (!ZEPHIR_IS_EQUAL(&field, identityField)) { - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - _22$$26 = Z_TYPE_P(&value) == IS_NULL; - if (_22$$26) { - _22$$26 = zephir_array_isset(&defaultValues, &field); - } - if (_22$$26) { - zephir_array_fetch(&_23$$27, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3727); - zephir_array_update_zval(&snapshot, &attributeField, &_23$$27, PH_COPY | PH_SEPARATE); - zephir_array_fetch(&_24$$27, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3728); - zephir_array_update_zval(&unsetDefaultValues, &attributeField, &_24$$27, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_25$$27, connection, "supportsdefaultvalue", &_26, 0); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&_25$$27))) { - continue; - } - ZEPHIR_CALL_METHOD(&value, connection, "getdefaultvalue", &_27, 0); - zephir_check_call_status(); - } else { - zephir_array_update_zval(&snapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_28$$30); - object_init_ex(&_28$$30, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_29$$30); - ZEPHIR_CONCAT_SVS(&_29$$30, "Column '", &field, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_28$$30, "__construct", &_5, 29, &_29$$30); - zephir_check_call_status(); - zephir_throw_exception_debug(&_28$$30, "phalcon/Mvc/Model.zep", 3745); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3748); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3749); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3750); - } else { - if (zephir_array_isset(&defaultValues, &field)) { - zephir_array_fetch(&_30$$32, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3753); - zephir_array_update_zval(&snapshot, &attributeField, &_30$$32, PH_COPY | PH_SEPARATE); - zephir_array_fetch(&_31$$32, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3754); - zephir_array_update_zval(&unsetDefaultValues, &attributeField, &_31$$32, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_32$$32, connection, "supportsdefaultvalue", &_33, 0); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&_32$$32))) { - continue; - } - ZEPHIR_CALL_METHOD(&_34$$32, connection, "getdefaultvalue", &_35, 0); - zephir_check_call_status(); - zephir_array_append(&values, &_34$$32, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3760); - } else { - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3762); - zephir_array_update_zval(&snapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3766); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3767); - } - } - } - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - if (!ZEPHIR_IS_FALSE_IDENTICAL(identityField)) { - ZEPHIR_CALL_METHOD(&defaultValue, connection, "getdefaultidvalue", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_36$$35, connection, "useexplicitidvalue", NULL, 0); - zephir_check_call_status(); - useExplicitIdentity = zephir_get_boolval(&_36$$35); - if (useExplicitIdentity) { - zephir_array_append(&fields, identityField, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3786); - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, identityField, 0)))) { - ZEPHIR_INIT_VAR(&_37$$38); - object_init_ex(&_37$$38, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_38$$38); - ZEPHIR_CONCAT_SVS(&_38$$38, "Identity column '", identityField, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_37$$38, "__construct", &_5, 29, &_38$$38); - zephir_check_call_status(); - zephir_throw_exception_debug(&_37$$38, "phalcon/Mvc/Model.zep", 3796); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, identityField); - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - _39$$40 = Z_TYPE_P(&value) == IS_NULL; - if (!(_39$$40)) { - _39$$40 = ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - } - if (_39$$40) { - if (useExplicitIdentity) { - zephir_array_append(&values, &defaultValue, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3808); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3808); - } - } else { - if (!(useExplicitIdentity)) { - zephir_array_append(&fields, identityField, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3816); - } - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, identityField, 0)))) { - ZEPHIR_INIT_VAR(&_40$$45); - object_init_ex(&_40$$45, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_41$$45); - ZEPHIR_CONCAT_SVS(&_41$$45, "Identity column '", identityField, "' isn\'t part of the table columns"); - ZEPHIR_CALL_METHOD(NULL, &_40$$45, "__construct", &_5, 29, &_41$$45); - zephir_check_call_status(); - zephir_throw_exception_debug(&_40$$45, "phalcon/Mvc/Model.zep", 3825); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3828); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3829); - } - } else { - if (useExplicitIdentity) { - zephir_array_append(&values, &defaultValue, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3833); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3834); - } - } - } - if (Z_TYPE_P(table) == IS_ARRAY) { - zephir_array_fetch_long(&_42$$48, table, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3843); - zephir_array_fetch_long(&_43$$48, table, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 3843); - ZEPHIR_INIT_VAR(&_44$$48); - ZEPHIR_CONCAT_VSV(&_44$$48, &_42$$48, ".", &_43$$48); - ZEPHIR_CPY_WRT(table, &_44$$48); + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_METHOD(&success, connection, "insert", NULL, 0, table, &values, &fields, &bindTypes); + + + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); zephir_check_call_status(); - _45 = zephir_is_true(&success); - if (_45) { - _45 = !ZEPHIR_IS_FALSE_IDENTICAL(identityField); - } - if (_45) { - ZEPHIR_INIT_VAR(&sequenceName); - ZVAL_NULL(&sequenceName); - ZEPHIR_CALL_METHOD(&_46$$49, connection, "supportsequences", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&_46$$49)) { - if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("getsequencename")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(&sequenceName, this_ptr, "getsequencename", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&source, this_ptr, "getsource", NULL, 423); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, this_ptr, "getschema", NULL, 422); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&sequenceName); - if (ZEPHIR_IS_EMPTY(&schema)) { - ZEPHIR_CONCAT_VSVS(&sequenceName, &source, "_", identityField, "_seq"); - } else { - ZEPHIR_CONCAT_VSVSVS(&sequenceName, &schema, ".", &source, "_", identityField, "_seq"); - } - } - } - ZEPHIR_CALL_METHOD(&lastInsertedId, connection, "lastinsertid", NULL, 0, &sequenceName); - zephir_check_call_status(); - if (UNEXPECTED(ZEPHIR_GLOBAL(orm).cast_last_insert_id_to_int)) { - ZVAL_LONG(&_47$$55, 10); - ZEPHIR_CALL_FUNCTION(&_48$$55, "intval", NULL, 38, &lastInsertedId, &_47$$55); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&lastInsertedId, &_48$$55); - } - zephir_update_property_zval_zval(this_ptr, &attributeField, &lastInsertedId); - zephir_array_update_zval(&snapshot, &attributeField, &lastInsertedId, PH_COPY | PH_SEPARATE); - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueParams"), &__$null); - } - if (zephir_is_true(&success)) { - zephir_is_iterable(&unsetDefaultValues, 0, "phalcon/Mvc/Model.zep", 3904); - if (Z_TYPE_P(&unsetDefaultValues) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&unsetDefaultValues), _51$$56, _52$$56, _49$$56) - { - ZEPHIR_INIT_NVAR(&attributeField); - if (_52$$56 != NULL) { - ZVAL_STR_COPY(&attributeField, _52$$56); - } else { - ZVAL_LONG(&attributeField, _51$$56); - } - ZEPHIR_INIT_NVAR(&defaultValue); - ZVAL_COPY(&defaultValue, _49$$56); - zephir_update_property_zval_zval(this_ptr, &attributeField, &defaultValue); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &unsetDefaultValues, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_50$$56, &unsetDefaultValues, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_50$$56)) { - break; - } - ZEPHIR_CALL_METHOD(&attributeField, &unsetDefaultValues, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&defaultValue, &unsetDefaultValues, "current", NULL, 0); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &attributeField, &defaultValue); - ZEPHIR_CALL_METHOD(NULL, &unsetDefaultValues, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&defaultValue); - ZEPHIR_INIT_NVAR(&attributeField); - ZEPHIR_CALL_METHOD(&_53$$56, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); - zephir_check_call_status(); - _54$$56 = zephir_is_true(&_53$$56); - if (_54$$56) { - _54$$56 = ZEPHIR_GLOBAL(orm).update_snapshot_on_save; - } - if (_54$$56) { - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &snapshot); - } - } - RETURN_CCTOR(&success); + ZEPHIR_RETURN_CALL_METHOD(&sth, "rowcount", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, doLowUpdate) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchAll) { - zval _18$$28, _19$$28, _32$$53, _33$$53; - zval _43; - zend_bool changed = 0, useDynamicUpdate = 0, _44, _45, _11$$22, _13$$22, _26$$47, _28$$47; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL, *_16 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *metaData, metaData_sub, *connection, connection_sub, *table = NULL, table_sub, __$null, automaticAttributes, attributeField, bindSkip, bindDataTypes, bindType, bindTypes, columnMap, dataType, dataTypes, field, fields, manager, nonPrimary, newSnapshot, success, primaryKeys, snapshot, snapshotValue, uniqueKey, uniqueParams, uniqueTypes, value, values, _0, _1, *_2, _3, _4$$10, _5$$10, _7$$13, _8$$13, _9$$23, _10$$23, _12$$24, _14$$25, _15$$27, _17$$27, _20$$35, _21$$35, _22$$38, _23$$38, _24$$48, _25$$48, _27$$49, _29$$50, _30$$52, _31$$52, *_34$$59, _35$$59, _36$$63, _37$$63, _38$$69, _39$$69, _40$$73, _41$$73, _42$$73, _46$$75, _47$$76; + zval values, _0; + zval *statement_param = NULL, *values_param = NULL, _1; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData_sub); - ZVAL_UNDEF(&connection_sub); - ZVAL_UNDEF(&table_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&automaticAttributes); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&bindSkip); - ZVAL_UNDEF(&bindDataTypes); - ZVAL_UNDEF(&bindType); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&dataType); - ZVAL_UNDEF(&dataTypes); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&nonPrimary); - ZVAL_UNDEF(&newSnapshot); - ZVAL_UNDEF(&success); - ZVAL_UNDEF(&primaryKeys); - ZVAL_UNDEF(&snapshot); - ZVAL_UNDEF(&snapshotValue); - ZVAL_UNDEF(&uniqueKey); - ZVAL_UNDEF(&uniqueParams); - ZVAL_UNDEF(&uniqueTypes); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&values); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4$$10); - ZVAL_UNDEF(&_5$$10); - ZVAL_UNDEF(&_7$$13); - ZVAL_UNDEF(&_8$$13); - ZVAL_UNDEF(&_9$$23); - ZVAL_UNDEF(&_10$$23); - ZVAL_UNDEF(&_12$$24); - ZVAL_UNDEF(&_14$$25); - ZVAL_UNDEF(&_15$$27); - ZVAL_UNDEF(&_17$$27); - ZVAL_UNDEF(&_20$$35); - ZVAL_UNDEF(&_21$$35); - ZVAL_UNDEF(&_22$$38); - ZVAL_UNDEF(&_23$$38); - ZVAL_UNDEF(&_24$$48); - ZVAL_UNDEF(&_25$$48); - ZVAL_UNDEF(&_27$$49); - ZVAL_UNDEF(&_29$$50); - ZVAL_UNDEF(&_30$$52); - ZVAL_UNDEF(&_31$$52); - ZVAL_UNDEF(&_35$$59); - ZVAL_UNDEF(&_36$$63); - ZVAL_UNDEF(&_37$$63); - ZVAL_UNDEF(&_38$$69); - ZVAL_UNDEF(&_39$$69); - ZVAL_UNDEF(&_40$$73); - ZVAL_UNDEF(&_41$$73); - ZVAL_UNDEF(&_42$$73); - ZVAL_UNDEF(&_46$$75); - ZVAL_UNDEF(&_47$$76); - ZVAL_UNDEF(&_43); - ZVAL_UNDEF(&_18$$28); - ZVAL_UNDEF(&_19$$28); - ZVAL_UNDEF(&_32$$53); - ZVAL_UNDEF(&_33$$53); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_OBJECT_OF_CLASS(metaData, phalcon_mvc_model_metadatainterface_ce) - Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) - Z_PARAM_ZVAL(table) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &metaData, &connection, &table); - ZEPHIR_SEPARATE_PARAM(table); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); + } else { + zephir_get_arrval(&values, values_param); + } - ZEPHIR_INIT_VAR(&bindSkip); - ZVAL_LONG(&bindSkip, 1024); - ZEPHIR_INIT_VAR(&fields); - array_init(&fields); - ZEPHIR_INIT_VAR(&values); - array_init(&values); - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); - ZEPHIR_INIT_VAR(&newSnapshot); - array_init(&newSnapshot); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&_1, &manager, "isusingdynamicupdate", NULL, 0, this_ptr); - zephir_check_call_status(); - useDynamicUpdate = zephir_get_boolval(&_1); - zephir_read_property(&_0, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&snapshot, &_0); - if (useDynamicUpdate) { - if (Z_TYPE_P(&snapshot) != IS_ARRAY) { - useDynamicUpdate = 0; - } - } - ZEPHIR_CALL_METHOD(&dataTypes, metaData, "getdatatypes", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&bindDataTypes, metaData, "getbindtypes", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&nonPrimary, metaData, "getnonprimarykeyattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&automaticAttributes, metaData, "getautomaticupdateattributes", NULL, 0, this_ptr); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, 2); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "fetchAll"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "fetchdata", NULL, 0, &_1, &_0, &statement, &values); zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchAssoc) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_2 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval values; + zval *statement_param = NULL, *values_param = NULL, data, row, sth, _0, _1$$3, _3$$3; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&row); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&values); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); + zephir_get_arrval(&values, values_param); } - zephir_is_iterable(&nonPrimary, 0, "phalcon/Mvc/Model.zep", 4090); - if (Z_TYPE_P(&nonPrimary) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&nonPrimary), _2) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _2); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_4$$10); - object_init_ex(&_4$$10, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_5$$10); - ZEPHIR_CONCAT_SVS(&_5$$10, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_4$$10, "__construct", &_6, 29, &_5$$10); - zephir_check_call_status(); - zephir_throw_exception_debug(&_4$$10, "phalcon/Mvc/Model.zep", 3968); - ZEPHIR_MM_RESTORE(); - return; - } - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_7$$13); - object_init_ex(&_7$$13, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_8$$13); - ZEPHIR_CONCAT_SVS(&_8$$13, "Column '", &field, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_7$$13, "__construct", &_6, 29, &_8$$13); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$13, "phalcon/Mvc/Model.zep", 3982); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - if (!(useDynamicUpdate)) { - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3994); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3995); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3996); - } else { - ZEPHIR_OBS_NVAR(&snapshotValue); - if (!(zephir_array_isset_fetch(&snapshotValue, &snapshot, &attributeField, 0))) { - changed = 1; - } else { - if (Z_TYPE_P(&value) == IS_NULL) { - changed = Z_TYPE_P(&snapshotValue) != IS_NULL; - } else { - if (Z_TYPE_P(&snapshotValue) == IS_NULL) { - changed = 1; - } else { - ZEPHIR_OBS_NVAR(&dataType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&dataType, &dataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_9$$23); - object_init_ex(&_9$$23, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_10$$23); - ZEPHIR_CONCAT_SVS(&_10$$23, "Column '", &field, "' have not defined a data type"); - ZEPHIR_CALL_METHOD(NULL, &_9$$23, "__construct", &_6, 29, &_10$$23); - zephir_check_call_status(); - zephir_throw_exception_debug(&_9$$23, "phalcon/Mvc/Model.zep", 4021); - ZEPHIR_MM_RESTORE(); - return; - } - _11$$22 = Z_TYPE_P(&snapshotValue) == IS_OBJECT; - if (_11$$22) { - _11$$22 = zephir_instance_of_ev(&snapshotValue, phalcon_db_rawvalue_ce); - } - if (_11$$22) { - ZEPHIR_CALL_METHOD(&_12$$24, &snapshotValue, "getvalue", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&snapshotValue, &_12$$24); - } - _13$$22 = Z_TYPE_P(&value) == IS_OBJECT; - if (_13$$22) { - _13$$22 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); - } - if (_13$$22) { - ZEPHIR_CALL_METHOD(&_14$$25, &value, "getvalue", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&value, &_14$$25); - } - do { - if (ZEPHIR_IS_LONG(&dataType, 8)) { - changed = zephir_get_boolval(&snapshotValue) != zephir_get_boolval(&value); - break; - } - if (ZEPHIR_IS_LONG(&dataType, 3) || ZEPHIR_IS_LONG(&dataType, 7)) { - ZEPHIR_CALL_FUNCTION(&_15$$27, "floatval", &_16, 18, &snapshotValue); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_17$$27, "floatval", &_16, 18, &value); - zephir_check_call_status(); - changed = !ZEPHIR_IS_IDENTICAL(&_15$$27, &_17$$27); - break; - } - if (ZEPHIR_IS_LONG(&dataType, 0) || ZEPHIR_IS_LONG(&dataType, 1) || ZEPHIR_IS_LONG(&dataType, 2) || ZEPHIR_IS_LONG(&dataType, 4) || ZEPHIR_IS_LONG(&dataType, 5) || ZEPHIR_IS_LONG(&dataType, 6) || ZEPHIR_IS_LONG(&dataType, 2) || ZEPHIR_IS_LONG(&dataType, 14)) { - zephir_cast_to_string(&_18$$28, &snapshotValue); - zephir_cast_to_string(&_19$$28, &value); - changed = !ZEPHIR_IS_IDENTICAL(&_18$$28, &_19$$28); - break; - } - changed = !ZEPHIR_IS_EQUAL(&value, &snapshotValue); - } while(0); - } - } - } - if (changed) { - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4070); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4071); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4072); - } - } - zephir_array_update_zval(&newSnapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&newSnapshot, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4080); - zephir_array_append(&values, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4081); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4082); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &nonPrimary, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &nonPrimary, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &nonPrimary, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_20$$35); - object_init_ex(&_20$$35, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_21$$35); - ZEPHIR_CONCAT_SVS(&_21$$35, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_20$$35, "__construct", &_6, 29, &_21$$35); - zephir_check_call_status(); - zephir_throw_exception_debug(&_20$$35, "phalcon/Mvc/Model.zep", 3968); - ZEPHIR_MM_RESTORE(); - return; - } - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - ZEPHIR_OBS_NVAR(&bindType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_22$$38); - object_init_ex(&_22$$38, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_23$$38); - ZEPHIR_CONCAT_SVS(&_23$$38, "Column '", &field, "' have not defined a bind data type"); - ZEPHIR_CALL_METHOD(NULL, &_22$$38, "__construct", &_6, 29, &_23$$38); - zephir_check_call_status(); - zephir_throw_exception_debug(&_22$$38, "phalcon/Mvc/Model.zep", 3982); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - if (!(useDynamicUpdate)) { - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3994); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3995); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 3996); - } else { - ZEPHIR_OBS_NVAR(&snapshotValue); - if (!(zephir_array_isset_fetch(&snapshotValue, &snapshot, &attributeField, 0))) { - changed = 1; - } else { - if (Z_TYPE_P(&value) == IS_NULL) { - changed = Z_TYPE_P(&snapshotValue) != IS_NULL; - } else { - if (Z_TYPE_P(&snapshotValue) == IS_NULL) { - changed = 1; - } else { - ZEPHIR_OBS_NVAR(&dataType); - if (UNEXPECTED(!(zephir_array_isset_fetch(&dataType, &dataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_24$$48); - object_init_ex(&_24$$48, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_25$$48); - ZEPHIR_CONCAT_SVS(&_25$$48, "Column '", &field, "' have not defined a data type"); - ZEPHIR_CALL_METHOD(NULL, &_24$$48, "__construct", &_6, 29, &_25$$48); - zephir_check_call_status(); - zephir_throw_exception_debug(&_24$$48, "phalcon/Mvc/Model.zep", 4021); - ZEPHIR_MM_RESTORE(); - return; - } - _26$$47 = Z_TYPE_P(&snapshotValue) == IS_OBJECT; - if (_26$$47) { - _26$$47 = zephir_instance_of_ev(&snapshotValue, phalcon_db_rawvalue_ce); - } - if (_26$$47) { - ZEPHIR_CALL_METHOD(&_27$$49, &snapshotValue, "getvalue", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&snapshotValue, &_27$$49); - } - _28$$47 = Z_TYPE_P(&value) == IS_OBJECT; - if (_28$$47) { - _28$$47 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); - } - if (_28$$47) { - ZEPHIR_CALL_METHOD(&_29$$50, &value, "getvalue", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&value, &_29$$50); - } - do { - if (ZEPHIR_IS_LONG(&dataType, 8)) { - changed = zephir_get_boolval(&snapshotValue) != zephir_get_boolval(&value); - break; - } - if (ZEPHIR_IS_LONG(&dataType, 3) || ZEPHIR_IS_LONG(&dataType, 7)) { - ZEPHIR_CALL_FUNCTION(&_30$$52, "floatval", &_16, 18, &snapshotValue); - zephir_check_call_status(); - ZEPHIR_CALL_FUNCTION(&_31$$52, "floatval", &_16, 18, &value); - zephir_check_call_status(); - changed = !ZEPHIR_IS_IDENTICAL(&_30$$52, &_31$$52); - break; - } - if (ZEPHIR_IS_LONG(&dataType, 0) || ZEPHIR_IS_LONG(&dataType, 1) || ZEPHIR_IS_LONG(&dataType, 2) || ZEPHIR_IS_LONG(&dataType, 4) || ZEPHIR_IS_LONG(&dataType, 5) || ZEPHIR_IS_LONG(&dataType, 6) || ZEPHIR_IS_LONG(&dataType, 2) || ZEPHIR_IS_LONG(&dataType, 14)) { - zephir_cast_to_string(&_32$$53, &snapshotValue); - zephir_cast_to_string(&_33$$53, &value); - changed = !ZEPHIR_IS_IDENTICAL(&_32$$53, &_33$$53); - break; - } - changed = !ZEPHIR_IS_EQUAL(&value, &snapshotValue); - } while(0); - } - } - } - if (changed) { - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4070); - zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4071); - zephir_array_append(&bindTypes, &bindType, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4072); - } - } - zephir_array_update_zval(&newSnapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&newSnapshot, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4080); - zephir_array_append(&values, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4081); - zephir_array_append(&bindTypes, &bindSkip, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4082); - } - } - ZEPHIR_CALL_METHOD(NULL, &nonPrimary, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - if (!(zephir_fast_count_int(&fields))) { - if (useDynamicUpdate) { - zephir_update_property_zval(this_ptr, ZEND_STRL("oldSnapshot"), &snapshot); + ZEPHIR_INIT_VAR(&data); + array_init(&data); + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); + zephir_check_call_status(); + ZVAL_LONG(&_0, 2); + ZEPHIR_CALL_METHOD(&row, &sth, "fetch", NULL, 0, &_0); + zephir_check_call_status(); + while (1) { + if (!(zephir_is_true(&row))) { + break; } - RETURN_MM_BOOL(1); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueKey, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueParams, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueTypes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueTypes, &_0); - if (Z_TYPE_P(&uniqueParams) != IS_ARRAY) { - ZEPHIR_CALL_METHOD(&primaryKeys, metaData, "getprimarykeyattributes", NULL, 0, this_ptr); + ZEPHIR_CALL_FUNCTION(&_1$$3, "current", &_2, 4, &row); zephir_check_call_status(); - if (UNEXPECTED(!(zephir_fast_count_int(&primaryKeys)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A primary key must be defined in the model in order to perform the operation", "phalcon/Mvc/Model.zep", 4114); - return; - } - ZEPHIR_INIT_NVAR(&uniqueParams); - array_init(&uniqueParams); - zephir_is_iterable(&primaryKeys, 0, "phalcon/Mvc/Model.zep", 4141); - if (Z_TYPE_P(&primaryKeys) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&primaryKeys), _34$$59) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _34$$59); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_36$$63); - object_init_ex(&_36$$63, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_37$$63); - ZEPHIR_CONCAT_SVS(&_37$$63, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_36$$63, "__construct", &_6, 29, &_37$$63); - zephir_check_call_status(); - zephir_throw_exception_debug(&_36$$63, "phalcon/Mvc/Model.zep", 4127); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - zephir_array_update_zval(&newSnapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - zephir_array_append(&uniqueParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4135); - } else { - zephir_array_update_zval(&newSnapshot, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - zephir_array_append(&uniqueParams, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4138); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_35$$59, &primaryKeys, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_35$$59)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &primaryKeys, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_38$$69); - object_init_ex(&_38$$69, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_39$$69); - ZEPHIR_CONCAT_SVS(&_39$$69, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_38$$69, "__construct", &_6, 29, &_39$$69); - zephir_check_call_status(); - zephir_throw_exception_debug(&_38$$69, "phalcon/Mvc/Model.zep", 4127); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - zephir_array_update_zval(&newSnapshot, &attributeField, &value, PH_COPY | PH_SEPARATE); - zephir_array_append(&uniqueParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4135); - } else { - zephir_array_update_zval(&newSnapshot, &attributeField, &__$null, PH_COPY | PH_SEPARATE); - zephir_array_append(&uniqueParams, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4138); - } - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - } - if (Z_TYPE_P(table) == IS_ARRAY) { - zephir_array_fetch_long(&_40$$73, table, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 4147); - zephir_array_fetch_long(&_41$$73, table, 1, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 4147); - ZEPHIR_INIT_VAR(&_42$$73); - ZEPHIR_CONCAT_VSV(&_42$$73, &_40$$73, ".", &_41$$73); - ZEPHIR_CPY_WRT(table, &_42$$73); - } - ZEPHIR_INIT_VAR(&_43); - zephir_create_array(&_43, 3, 0); - zephir_array_update_string(&_43, SL("conditions"), &uniqueKey, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_43, SL("bind"), &uniqueParams, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_43, SL("bindTypes"), &uniqueTypes, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&success, connection, "update", NULL, 0, table, &fields, &values, &_43, &bindTypes); - zephir_check_call_status(); - _44 = zephir_is_true(&success); - if (_44) { - ZEPHIR_CALL_METHOD(&_1, &manager, "iskeepingsnapshots", NULL, 0, this_ptr); + zephir_array_update_zval(&data, &_1$$3, &row, PH_COPY | PH_SEPARATE); + ZVAL_LONG(&_3$$3, 2); + ZEPHIR_CALL_METHOD(&row, &sth, "fetch", NULL, 0, &_3$$3); zephir_check_call_status(); - _44 = zephir_is_true(&_1); - } - _45 = _44; - if (_45) { - _45 = ZEPHIR_GLOBAL(orm).update_snapshot_on_save; - } - if (_45) { - if (Z_TYPE_P(&snapshot) == IS_ARRAY) { - zephir_update_property_zval(this_ptr, ZEND_STRL("oldSnapshot"), &snapshot); - ZEPHIR_INIT_VAR(&_46$$75); - zephir_fast_array_merge(&_46$$75, &snapshot, &newSnapshot); - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &_46$$75); - } else { - ZEPHIR_INIT_VAR(&_47$$76); - array_init(&_47$$76); - zephir_update_property_zval(this_ptr, ZEND_STRL("oldSnapshot"), &_47$$76); - zephir_update_property_zval(this_ptr, ZEND_STRL("snapshot"), &newSnapshot); - } } - RETURN_CCTOR(&success); + RETURN_CCTOR(&data); } -static PHP_METHOD(Phalcon_Mvc_Model, has) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchColumn) { - zend_bool _6$$11, _14$$19; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_10 = NULL, *_18 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, numberEmpty = 0, numberPrimary = 0; - zval *metaData, metaData_sub, *connection, connection_sub, __$null, attributeField, bindDataTypes, columnMap, field, joinWhere, num, primaryKeys, schema, source, table, type, uniqueKey, uniqueParams, uniqueTypes, value, wherePk, _0, _23, _24, _25, _26, *_1$$3, _2$$3, _3$$9, _4$$9, _7$$14, _8$$14, _9$$7, _11$$7, _12$$17, _13$$17, _15$$22, _16$$22, _17$$15, _19$$15, _20$$25, _21$$26, _22$$27, _27$$30, _28$$31; + zend_long column, ZEPHIR_LAST_CALL_STATUS; + zval values, _0; + zval *statement_param = NULL, *values_param = NULL, *column_param = NULL, _1; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData_sub); - ZVAL_UNDEF(&connection_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&bindDataTypes); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&joinWhere); - ZVAL_UNDEF(&num); - ZVAL_UNDEF(&primaryKeys); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&table); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&uniqueKey); - ZVAL_UNDEF(&uniqueParams); - ZVAL_UNDEF(&uniqueTypes); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&wherePk); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&values); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_23); - ZVAL_UNDEF(&_24); - ZVAL_UNDEF(&_25); - ZVAL_UNDEF(&_26); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$9); - ZVAL_UNDEF(&_4$$9); - ZVAL_UNDEF(&_7$$14); - ZVAL_UNDEF(&_8$$14); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_12$$17); - ZVAL_UNDEF(&_13$$17); - ZVAL_UNDEF(&_15$$22); - ZVAL_UNDEF(&_16$$22); - ZVAL_UNDEF(&_17$$15); - ZVAL_UNDEF(&_19$$15); - ZVAL_UNDEF(&_20$$25); - ZVAL_UNDEF(&_21$$26); - ZVAL_UNDEF(&_22$$27); - ZVAL_UNDEF(&_27$$30); - ZVAL_UNDEF(&_28$$31); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(metaData, phalcon_mvc_model_metadatainterface_ce) - Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + Z_PARAM_LONG(column) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &metaData, &connection); + zephir_fetch_params(1, 1, 2, &statement_param, &values_param, &column_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); + } else { + zephir_get_arrval(&values, values_param); + } + if (!column_param) { + column = 0; + } else { + column = zephir_get_intval(column_param); + } - ZEPHIR_INIT_VAR(&uniqueParams); - ZVAL_NULL(&uniqueParams); - ZEPHIR_INIT_VAR(&uniqueTypes); - ZVAL_NULL(&uniqueTypes); - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueKey, &_0); - if (Z_TYPE_P(&uniqueKey) == IS_NULL) { - ZEPHIR_CALL_METHOD(&primaryKeys, metaData, "getprimarykeyattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&bindDataTypes, metaData, "getbindtypes", NULL, 0, this_ptr); - zephir_check_call_status(); - numberPrimary = zephir_fast_count_int(&primaryKeys); - if (!(numberPrimary)) { - RETURN_MM_BOOL(0); - } - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - numberEmpty = 0; - ZEPHIR_INIT_VAR(&wherePk); - array_init(&wherePk); - ZEPHIR_INIT_NVAR(&uniqueParams); - array_init(&uniqueParams); - ZEPHIR_INIT_NVAR(&uniqueTypes); - array_init(&uniqueTypes); - zephir_is_iterable(&primaryKeys, 0, "phalcon/Mvc/Model.zep", 4271); - if (Z_TYPE_P(&primaryKeys) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&primaryKeys), _1$$3) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _1$$3); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_3$$9); - object_init_ex(&_3$$9, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_4$$9); - ZEPHIR_CONCAT_SVS(&_4$$9, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_3$$9, "__construct", &_5, 29, &_4$$9); - zephir_check_call_status(); - zephir_throw_exception_debug(&_3$$9, "phalcon/Mvc/Model.zep", 4230); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_NULL(&value); - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - _6$$11 = Z_TYPE_P(&value) == IS_NULL; - if (!(_6$$11)) { - _6$$11 = ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - } - if (_6$$11) { - numberEmpty++; - } - zephir_array_append(&uniqueParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4251); - } else { - zephir_array_append(&uniqueParams, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4253); - numberEmpty++; - } - ZEPHIR_OBS_NVAR(&type); - if (UNEXPECTED(!(zephir_array_isset_fetch(&type, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_7$$14); - object_init_ex(&_7$$14, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_8$$14); - ZEPHIR_CONCAT_SVS(&_8$$14, "Column '", &field, "' isn't part of the table columns"); - ZEPHIR_CALL_METHOD(NULL, &_7$$14, "__construct", &_5, 29, &_8$$14); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$14, "phalcon/Mvc/Model.zep", 4260); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&uniqueTypes, &type, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4263); - ZEPHIR_CALL_METHOD(&_9$$7, connection, "escapeidentifier", &_10, 0, &field); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_11$$7); - ZEPHIR_CONCAT_VS(&_11$$7, &_9$$7, " = ?"); - zephir_array_append(&wherePk, &_11$$7, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4264); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2$$3, &primaryKeys, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &primaryKeys, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_12$$17); - object_init_ex(&_12$$17, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_13$$17); - ZEPHIR_CONCAT_SVS(&_13$$17, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_12$$17, "__construct", &_5, 29, &_13$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$17, "phalcon/Mvc/Model.zep", 4230); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_NULL(&value); - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - _14$$19 = Z_TYPE_P(&value) == IS_NULL; - if (!(_14$$19)) { - _14$$19 = ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - } - if (_14$$19) { - numberEmpty++; - } - zephir_array_append(&uniqueParams, &value, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4251); - } else { - zephir_array_append(&uniqueParams, &__$null, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4253); - numberEmpty++; - } - ZEPHIR_OBS_NVAR(&type); - if (UNEXPECTED(!(zephir_array_isset_fetch(&type, &bindDataTypes, &field, 0)))) { - ZEPHIR_INIT_NVAR(&_15$$22); - object_init_ex(&_15$$22, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_16$$22); - ZEPHIR_CONCAT_SVS(&_16$$22, "Column '", &field, "' isn't part of the table columns"); - ZEPHIR_CALL_METHOD(NULL, &_15$$22, "__construct", &_5, 29, &_16$$22); - zephir_check_call_status(); - zephir_throw_exception_debug(&_15$$22, "phalcon/Mvc/Model.zep", 4260); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&uniqueTypes, &type, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4263); - ZEPHIR_CALL_METHOD(&_17$$15, connection, "escapeidentifier", &_18, 0, &field); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_19$$15); - ZEPHIR_CONCAT_VS(&_19$$15, &_17$$15, " = ?"); - zephir_array_append(&wherePk, &_19$$15, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4264); - ZEPHIR_CALL_METHOD(NULL, &primaryKeys, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - if (numberPrimary == numberEmpty) { - RETURN_MM_BOOL(0); - } - ZEPHIR_INIT_VAR(&joinWhere); - zephir_fast_join_str(&joinWhere, SL(" AND "), &wherePk); - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueKey"), &joinWhere); - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueParams"), &uniqueParams); - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueTypes"), &uniqueTypes); - ZEPHIR_CPY_WRT(&uniqueKey, &joinWhere); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_is_true(&_0))) { - RETURN_MM_BOOL(1); - } - if (Z_TYPE_P(&uniqueKey) == IS_NULL) { - zephir_read_property(&_20$$25, this_ptr, ZEND_STRL("uniqueKey"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueKey, &_20$$25); - } - if (Z_TYPE_P(&uniqueParams) == IS_NULL) { - zephir_read_property(&_21$$26, this_ptr, ZEND_STRL("uniqueParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueParams, &_21$$26); - } - if (Z_TYPE_P(&uniqueTypes) == IS_NULL) { - zephir_read_property(&_22$$27, this_ptr, ZEND_STRL("uniqueTypes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueTypes, &_22$$27); - } - ZEPHIR_CALL_METHOD(&schema, this_ptr, "getschema", NULL, 422); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, this_ptr, "getsource", NULL, 423); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 2, 0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, 7); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_LONG(&_1, column); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "fetchAll"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "fetchdata", NULL, 0, &_1, &_0, &statement, &values); zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_VAR(&table); - zephir_create_array(&table, 2, 0); - zephir_array_fast_append(&table, &schema); - zephir_array_fast_append(&table, &source); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchGroup) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long flags, ZEPHIR_LAST_CALL_STATUS; + zval values, _0; + zval *statement_param = NULL, *values_param = NULL, *flags_param = NULL, _1; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + Z_PARAM_LONG(flags) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &statement_param, &values_param, &flags_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_CPY_WRT(&table, &source); + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_METHOD(&_23, connection, "escapeidentifier", NULL, 0, &table); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_24); - ZEPHIR_CONCAT_SVSV(&_24, "SELECT COUNT(*) \"rowcount\" FROM ", &_23, " WHERE ", &uniqueKey); - ZVAL_NULL(&_25); - ZEPHIR_CALL_METHOD(&num, connection, "fetchone", NULL, 0, &_24, &_25, &uniqueParams, &uniqueTypes); - zephir_check_call_status(); - zephir_array_fetch_string(&_26, &num, SL("rowcount"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 4325); - if (zephir_is_true(&_26)) { - ZEPHIR_INIT_ZVAL_NREF(_27$$30); - ZVAL_LONG(&_27$$30, 0); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_27$$30); - RETURN_MM_BOOL(1); + if (!flags_param) { + flags = 2; } else { - ZEPHIR_INIT_ZVAL_NREF(_28$$31); - ZVAL_LONG(&_28$$31, 1); - zephir_update_property_zval(this_ptr, ZEND_STRL("dirtyState"), &_28$$31); + flags = zephir_get_intval(flags_param); } - RETURN_MM_BOOL(0); + + + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, (65536 | flags)); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "fetchAll"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "fetchdata", NULL, 0, &_1, &_0, &statement, &values); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, getRelatedRecords) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchObject) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval arguments; - zval *modelName_param = NULL, *method_param = NULL, *arguments_param = NULL, manager, relation, queryMethod, extraArgs, alias, _0, _1$$3, _2$$3, _3$$5, _4$$5, _5$$5; - zval modelName, method; + zval values, arguments; + zval *statement_param = NULL, *values_param = NULL, *className_param = NULL, *arguments_param = NULL, sth; + zval statement, className; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&queryMethod); - ZVAL_UNDEF(&extraArgs); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&className); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&values); ZVAL_UNDEF(&arguments); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(modelName) - Z_PARAM_STR(method) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + Z_PARAM_STR(className) Z_PARAM_ARRAY(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &modelName_param, &method_param, &arguments_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + zephir_fetch_params(1, 1, 3, &statement_param, &values_param, &className_param, &arguments_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_INIT_VAR(&modelName); + zephir_get_arrval(&values, values_param); } - if (UNEXPECTED(Z_TYPE_P(method_param) != IS_STRING && Z_TYPE_P(method_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'method' must be of the type string")); - RETURN_MM_NULL(); + if (!className_param) { + ZEPHIR_INIT_VAR(&className); + ZVAL_STRING(&className, "stdClass"); + } else { + zephir_get_strval(&className, className_param); } - if (EXPECTED(Z_TYPE_P(method_param) == IS_STRING)) { - zephir_get_strval(&method, method_param); + if (!arguments_param) { + ZEPHIR_INIT_VAR(&arguments); + array_init(&arguments); } else { - ZEPHIR_INIT_VAR(&method); + zephir_get_arrval(&arguments, arguments_param); } - ZEPHIR_OBS_COPY_OR_DUP(&arguments, arguments_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_INIT_VAR(&relation); - ZVAL_BOOL(&relation, 0); - ZEPHIR_INIT_VAR(&queryMethod); - ZVAL_NULL(&queryMethod); - ZEPHIR_OBS_VAR(&extraArgs); - zephir_array_isset_long_fetch(&extraArgs, &arguments, 0, 0); - if (zephir_start_with_str(&method, SL("get"))) { - ZVAL_LONG(&_1$$3, 3); - ZEPHIR_INIT_VAR(&alias); - zephir_substr(&alias, &method, 3 , 0, ZEPHIR_SUBSTR_NO_LENGTH); - ZEPHIR_CALL_METHOD(&_2$$3, &manager, "getrelationbyalias", NULL, 0, &modelName, &alias); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_2$$3); - if (Z_TYPE_P(&relation) != IS_OBJECT) { - RETURN_MM_BOOL(0); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getrelated", NULL, 0, &alias, &extraArgs); - zephir_check_call_status(); - RETURN_MM(); - } - if (zephir_start_with_str(&method, SL("count"))) { - ZEPHIR_INIT_NVAR(&queryMethod); - ZVAL_STRING(&queryMethod, "count"); - ZVAL_LONG(&_4$$5, 5); - ZEPHIR_INIT_VAR(&_5$$5); - zephir_substr(&_5$$5, &method, 5 , 0, ZEPHIR_SUBSTR_NO_LENGTH); - ZEPHIR_CALL_METHOD(&_3$$5, &manager, "getrelationbyalias", NULL, 0, &modelName, &_5$$5); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_3$$5); - if (Z_TYPE_P(&relation) != IS_OBJECT) { - RETURN_MM_BOOL(0); - } - ZEPHIR_RETURN_CALL_METHOD(&manager, "getrelationrecords", NULL, 0, &relation, this_ptr, &extraArgs, &queryMethod); - zephir_check_call_status(); - RETURN_MM(); - } - RETURN_MM_BOOL(0); + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(&sth, "fetchobject", NULL, 0, &className, &arguments); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, groupResult) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchObjects) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *functionName_param = NULL, *alias_param = NULL, *parameters = NULL, parameters_sub, __$null, params, distinctColumn, groupColumn, columns, resultset, cache, firstRow, groupColumns, builder, query, container, manager, transaction, bindParams, bindTypes, _1, _2, _3; - zval functionName, alias; + zval values, arguments; + zval *statement_param = NULL, *values_param = NULL, *className_param = NULL, *arguments_param = NULL, sth, _0; + zval statement, className; zval *this_ptr = getThis(); - ZVAL_UNDEF(&functionName); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&distinctColumn); - ZVAL_UNDEF(&groupColumn); - ZVAL_UNDEF(&columns); - ZVAL_UNDEF(&resultset); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&firstRow); - ZVAL_UNDEF(&groupColumns); - ZVAL_UNDEF(&builder); - ZVAL_UNDEF(&query); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&transaction); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&className); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&arguments); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(functionName) - Z_PARAM_STR(alias) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(statement) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) + Z_PARAM_ARRAY(values) + Z_PARAM_STR(className) + Z_PARAM_ARRAY(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &functionName_param, &alias_param, ¶meters); - if (UNEXPECTED(Z_TYPE_P(functionName_param) != IS_STRING && Z_TYPE_P(functionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'functionName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(functionName_param) == IS_STRING)) { - zephir_get_strval(&functionName, functionName_param); + zephir_fetch_params(1, 1, 3, &statement_param, &values_param, &className_param, &arguments_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_INIT_VAR(&functionName); - } - if (UNEXPECTED(Z_TYPE_P(alias_param) != IS_STRING && Z_TYPE_P(alias_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'alias' must be of the type string")); - RETURN_MM_NULL(); + zephir_get_arrval(&values, values_param); } - if (EXPECTED(Z_TYPE_P(alias_param) == IS_STRING)) { - zephir_get_strval(&alias, alias_param); + if (!className_param) { + ZEPHIR_INIT_VAR(&className); + ZVAL_STRING(&className, "stdClass"); } else { - ZEPHIR_INIT_VAR(&alias); + zephir_get_strval(&className, className_param); } - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; + if (!arguments_param) { + ZEPHIR_INIT_VAR(&arguments); + array_init(&arguments); + } else { + zephir_get_arrval(&arguments, arguments_param); } - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_0, 0); + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "modelsManager"); - ZEPHIR_CALL_METHOD(&_1, &container, "getshared", NULL, 0, &_2); + ZVAL_LONG(&_0, 8); + ZEPHIR_RETURN_CALL_METHOD(&sth, "fetchall", NULL, 0, &_0, &className, &arguments); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - if (Z_TYPE_P(parameters) != IS_ARRAY) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - if (Z_TYPE_P(parameters) != IS_NULL) { - zephir_array_append(¶ms, parameters, PH_SEPARATE, "phalcon/Mvc/Model.zep", 4430); - } + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchOne) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval values, _0; + zval *statement_param = NULL, *values_param = NULL, _1; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_CPY_WRT(¶ms, parameters); - } - ZEPHIR_OBS_VAR(&groupColumn); - if (!(zephir_array_isset_string_fetch(&groupColumn, ¶ms, SL("column"), 0))) { - ZEPHIR_INIT_NVAR(&groupColumn); - ZVAL_STRING(&groupColumn, "*"); + zephir_get_arrval(&values, values_param); } - ZEPHIR_OBS_VAR(&distinctColumn); - if (zephir_array_isset_string_fetch(&distinctColumn, ¶ms, SL("distinct"), 0)) { - ZEPHIR_INIT_VAR(&columns); - ZEPHIR_CONCAT_VSVSV(&columns, &functionName, "(DISTINCT ", &distinctColumn, ") AS ", &alias); + + + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, 2); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "fetch"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "fetchdata", NULL, 0, &_1, &_0, &statement, &values); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchPairs) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval values, _0; + zval *statement_param = NULL, *values_param = NULL, _1; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZEPHIR_OBS_VAR(&groupColumns); - ZEPHIR_INIT_NVAR(&columns); - if (zephir_array_isset_string_fetch(&groupColumns, ¶ms, SL("group"), 0)) { - ZEPHIR_CONCAT_VSVSVSV(&columns, &groupColumns, ", ", &functionName, "(", &groupColumn, ") AS ", &alias); - } else { - ZEPHIR_CONCAT_VSVSV(&columns, &functionName, "(", &groupColumn, ") AS ", &alias); - } + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_METHOD(&_1, &manager, "createbuilder", NULL, 0, ¶ms); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&builder, &_1); - ZEPHIR_CALL_METHOD(NULL, &builder, "columns", NULL, 0, &columns); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_2); - zephir_get_called_class(&_2); - ZEPHIR_CALL_METHOD(NULL, &builder, "from", NULL, 0, &_2); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, &builder, "getquery", NULL, 0); + + + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_1, 12); + zephir_array_fast_append(&_0, &_1); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "fetchAll"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "fetchdata", NULL, 0, &_1, &_0, &statement, &values); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&query, &_1); - ZEPHIR_OBS_VAR(&transaction); - if (zephir_array_isset_string_fetch(&transaction, ¶ms, SL("transaction"), 0)) { - if (zephir_instance_of_ev(&transaction, phalcon_mvc_model_transactioninterface_ce)) { - ZEPHIR_CALL_METHOD(NULL, &query, "settransaction", NULL, 0, &transaction); - zephir_check_call_status(); - } - } - if (zephir_array_isset_string(¶ms, SL("bind"))) { - ZEPHIR_OBS_NVAR(&bindParams); - zephir_array_fetch_string(&bindParams, ¶ms, SL("bind"), PH_NOISY, "phalcon/Mvc/Model.zep", 4473); - if (zephir_array_isset_string(¶ms, SL("bindTypes"))) { - ZEPHIR_OBS_NVAR(&bindTypes); - zephir_array_fetch_string(&bindTypes, ¶ms, SL("bindTypes"), PH_NOISY, "phalcon/Mvc/Model.zep", 4476); - } - } - ZEPHIR_OBS_VAR(&cache); - if (zephir_array_isset_string_fetch(&cache, ¶ms, SL("cache"), 0)) { - ZEPHIR_CALL_METHOD(NULL, &query, "cache", NULL, 0, &cache); - zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchValue) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval values; + zval *statement_param = NULL, *values_param = NULL, sth, _0; + zval statement; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&values); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); + } else { + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_METHOD(&resultset, &query, "execute", NULL, 0, &bindParams, &bindTypes); + + + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); zephir_check_call_status(); - if (zephir_array_isset_string(¶ms, SL("group"))) { - RETURN_CCTOR(&resultset); - } - ZEPHIR_CALL_METHOD(&firstRow, &resultset, "getfirst", NULL, 0); + ZVAL_LONG(&_0, 0); + ZEPHIR_RETURN_CALL_METHOD(&sth, "fetchcolumn", NULL, 0, &_0); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&_3); - zephir_read_property_zval(&_3, &firstRow, &alias, PH_NOISY_CC); - RETURN_CCTOR(&_3); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, invokeFinder) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getAdapter) { - zend_class_entry *_13; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval arguments, _9$$14; - zval *method_param = NULL, *arguments_param = NULL, extraMethod, type, modelName, value, model, attributes, field, extraMethodFirst, metaData, params, _12, _0$$3, _1$$4, _2$$5, _3$$7, _5$$13, _6$$13, _7$$14, _8$$14, _10$$15, _11$$15; - zval method, _4$$7; zval *this_ptr = getThis(); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&_4$$7); - ZVAL_UNDEF(&extraMethod); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&extraMethodFirst); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&_5$$13); - ZVAL_UNDEF(&_6$$13); - ZVAL_UNDEF(&_7$$14); - ZVAL_UNDEF(&_8$$14); - ZVAL_UNDEF(&_10$$15); - ZVAL_UNDEF(&_11$$15); - ZVAL_UNDEF(&arguments); - ZVAL_UNDEF(&_9$$14); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + RETURN_MM_MEMBER(getThis(), "pdo"); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getAttribute) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *attribute_param = NULL, _0, _1; + zend_long attribute, ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(method) - Z_PARAM_ARRAY(arguments) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(attribute) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &method_param, &arguments_param); - zephir_get_strval(&method, method_param); - zephir_get_arrval(&arguments, arguments_param); + zephir_fetch_params(1, 1, 0, &attribute_param); + attribute = zephir_get_intval(attribute_param); - ZEPHIR_INIT_VAR(&extraMethod); - ZVAL_NULL(&extraMethod); - if (zephir_start_with_str(&method, SL("findFirstBy"))) { - ZEPHIR_INIT_VAR(&type); - ZVAL_STRING(&type, "findFirst"); - ZVAL_LONG(&_0$$3, 11); - ZEPHIR_INIT_NVAR(&extraMethod); - zephir_substr(&extraMethod, &method, 11 , 0, ZEPHIR_SUBSTR_NO_LENGTH); - } else if (zephir_start_with_str(&method, SL("findBy"))) { - ZEPHIR_INIT_NVAR(&type); - ZVAL_STRING(&type, "find"); - ZVAL_LONG(&_1$$4, 6); - ZEPHIR_INIT_NVAR(&extraMethod); - zephir_substr(&extraMethod, &method, 6 , 0, ZEPHIR_SUBSTR_NO_LENGTH); - } else if (zephir_start_with_str(&method, SL("countBy"))) { - ZEPHIR_INIT_NVAR(&type); - ZVAL_STRING(&type, "count"); - ZVAL_LONG(&_2$$5, 7); - ZEPHIR_INIT_NVAR(&extraMethod); - zephir_substr(&extraMethod, &method, 7 , 0, ZEPHIR_SUBSTR_NO_LENGTH); - } - ZEPHIR_INIT_VAR(&modelName); - zephir_get_called_class(&modelName); - if (!(zephir_is_true(&extraMethod))) { - RETURN_MM_BOOL(0); - } - if (UNEXPECTED(!(zephir_array_isset_long(&arguments, 0)))) { - ZEPHIR_INIT_VAR(&_3$$7); - object_init_ex(&_3$$7, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_4$$7); - ZEPHIR_CONCAT_SVS(&_4$$7, "The static method '", &method, "' requires one argument"); - ZEPHIR_CALL_METHOD(NULL, &_3$$7, "__construct", NULL, 29, &_4$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_3$$7, "phalcon/Mvc/Model.zep", 4555); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&model); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&model, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&metaData, &model, "getmodelsmetadata", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&attributes, &metaData, "getreversecolumnmap", NULL, 0, &model); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, attribute); + ZEPHIR_RETURN_CALL_METHOD(&_0, "getattribute", NULL, 0, &_1); zephir_check_call_status(); - if (Z_TYPE_P(&attributes) != IS_ARRAY) { - ZEPHIR_CALL_METHOD(&attributes, &metaData, "getdatatypes", NULL, 0, &model); - zephir_check_call_status(); - } - if (zephir_array_isset(&attributes, &extraMethod)) { - ZEPHIR_CPY_WRT(&field, &extraMethod); - } else { - ZEPHIR_CALL_FUNCTION(&extraMethodFirst, "lcfirst", NULL, 73, &extraMethod); - zephir_check_call_status(); - if (zephir_array_isset(&attributes, &extraMethodFirst)) { - ZEPHIR_CPY_WRT(&field, &extraMethodFirst); - } else { - ZEPHIR_INIT_NVAR(&field); - zephir_uncamelize(&field, &extraMethod, NULL ); - if (UNEXPECTED(!(zephir_array_isset(&attributes, &field)))) { - ZEPHIR_INIT_VAR(&_5$$13); - object_init_ex(&_5$$13, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_6$$13); - ZEPHIR_CONCAT_SVS(&_6$$13, "Cannot resolve attribute '", &extraMethod, "' in the model"); - ZEPHIR_CALL_METHOD(NULL, &_5$$13, "__construct", NULL, 29, &_6$$13); - zephir_check_call_status(); - zephir_throw_exception_debug(&_5$$13, "phalcon/Mvc/Model.zep", 4592); - ZEPHIR_MM_RESTORE(); - return; - } - } - } - ZEPHIR_OBS_VAR(&value); - zephir_array_isset_long_fetch(&value, &arguments, 0, 0); - ZEPHIR_INIT_VAR(¶ms); - if (Z_TYPE_P(&value) != IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$14); - zephir_create_array(&_7$$14, 2, 0); - ZEPHIR_INIT_VAR(&_8$$14); - ZEPHIR_CONCAT_SVS(&_8$$14, "[", &field, "] = ?0"); - zephir_array_update_string(&_7$$14, SL("conditions"), &_8$$14, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_9$$14); - zephir_create_array(&_9$$14, 1, 0); - zephir_array_fast_append(&_9$$14, &value); - zephir_array_update_string(&_7$$14, SL("bind"), &_9$$14, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(¶ms, &_7$$14); - } else { - ZEPHIR_INIT_VAR(&_10$$15); - zephir_create_array(&_10$$15, 1, 0); - ZEPHIR_INIT_VAR(&_11$$15); - ZEPHIR_CONCAT_SVS(&_11$$15, "[", &field, "] IS NULL"); - zephir_array_update_string(&_10$$15, SL("conditions"), &_11$$15, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(¶ms, &_10$$15); - } - zephir_array_unset_long(&arguments, 0, PH_SEPARATE); - zephir_array_unset_string(&arguments, SL("conditions"), PH_SEPARATE); - zephir_array_unset_string(&arguments, SL("bind"), PH_SEPARATE); - ZEPHIR_INIT_VAR(&_12); - zephir_fast_array_merge(&_12, ¶ms, &arguments); - ZEPHIR_CPY_WRT(¶ms, &_12); - _13 = zephir_fetch_class(&modelName); - ZEPHIR_RETURN_CALL_CE_STATIC_ZVAL(_13, type, NULL, 0, ¶ms); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getAvailableDrivers) +{ + zend_class_entry *_0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + + + ZEPHIR_MM_GROW(); + + _0 = zephir_fetch_class_str_ex(SL("PDO"), ZEND_FETCH_CLASS_AUTO); + ZEPHIR_RETURN_CALL_CE_STATIC(_0, "getavailabledrivers", NULL, 0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, possibleSetter) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getDriverName) { - zval localMethods; + zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *property_param = NULL, *value, value_sub, possibleSetter, _0; - zval property; zval *this_ptr = getThis(); - ZVAL_UNDEF(&property); - ZVAL_UNDEF(&value_sub); - ZVAL_UNDEF(&possibleSetter); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&localMethods); + ZVAL_UNDEF(&_1); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, 16); + ZEPHIR_RETURN_CALL_METHOD(&_0, "getattribute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getProfiler) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "profiler"); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, getQuoteNames) +{ + zval quotes; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *driver_param = NULL, option, _0$$5, _1$$6; + zval driver; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&driver); + ZVAL_UNDEF(&option); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF("es); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(property) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR(driver) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &property_param, &value); - zephir_get_strval(&property, property_param); + zephir_fetch_params(1, 0, 1, &driver_param); + if (!driver_param) { + ZEPHIR_INIT_VAR(&driver); + ZVAL_STRING(&driver, ""); + } else { + zephir_get_strval(&driver, driver_param); + } - ZEPHIR_INIT_VAR(&localMethods); - zephir_create_array(&localMethods, 10, 0); - add_assoc_long_ex(&localMethods, SL("setConnectionService"), 1); - add_assoc_long_ex(&localMethods, SL("setDirtyState"), 1); - add_assoc_long_ex(&localMethods, SL("setEventsManager"), 1); - add_assoc_long_ex(&localMethods, SL("setReadConnectionService"), 1); - add_assoc_long_ex(&localMethods, SL("setOldSnapshotData"), 1); - add_assoc_long_ex(&localMethods, SL("setSchema"), 1); - add_assoc_long_ex(&localMethods, SL("setSnapshotData"), 1); - add_assoc_long_ex(&localMethods, SL("setSource"), 1); - add_assoc_long_ex(&localMethods, SL("setTransaction"), 1); - add_assoc_long_ex(&localMethods, SL("setWriteConnectionService"), 1); - ZEPHIR_INIT_VAR(&_0); - zephir_camelize(&_0, &property, NULL ); - ZEPHIR_INIT_VAR(&possibleSetter); - ZEPHIR_CONCAT_SV(&possibleSetter, "set", &_0); - if (!((zephir_method_exists(this_ptr, &possibleSetter) == SUCCESS))) { - RETURN_MM_BOOL(0); - } - if (!(zephir_array_isset(&localMethods, &possibleSetter))) { - ZEPHIR_CALL_METHOD_ZVAL(NULL, this_ptr, &possibleSetter, NULL, 0, value); + ZEPHIR_CPY_WRT(&option, &driver); + if (ZEPHIR_IS_EMPTY(&option)) { + ZEPHIR_CALL_METHOD(&option, this_ptr, "getdrivername", NULL, 0); zephir_check_call_status(); } - RETURN_MM_BOOL(1); + do { + if (ZEPHIR_IS_STRING(&option, "mysql")) { + ZEPHIR_INIT_VAR("es); + zephir_create_array("es, 4, 0); + add_assoc_stringl_ex("es, SL("prefix"), SL("`")); + add_assoc_stringl_ex("es, SL("suffix"), SL("`")); + add_assoc_stringl_ex("es, SL("find"), SL("`")); + add_assoc_stringl_ex("es, SL("replace"), SL("``")); + break; + } + if (ZEPHIR_IS_STRING(&option, "sqlsrv")) { + ZEPHIR_INIT_VAR(&_0$$5); + zephir_create_array(&_0$$5, 4, 0); + add_assoc_stringl_ex(&_0$$5, SL("prefix"), SL("[")); + add_assoc_stringl_ex(&_0$$5, SL("suffix"), SL("]")); + add_assoc_stringl_ex(&_0$$5, SL("find"), SL("]")); + add_assoc_stringl_ex(&_0$$5, SL("replace"), SL("][")); + ZEPHIR_CPY_WRT("es, &_0$$5); + break; + } + ZEPHIR_INIT_VAR(&_1$$6); + zephir_create_array(&_1$$6, 4, 0); + add_assoc_stringl_ex(&_1$$6, SL("prefix"), SL("\"")); + add_assoc_stringl_ex(&_1$$6, SL("suffix"), SL("\"")); + add_assoc_stringl_ex(&_1$$6, SL("find"), SL("\"")); + add_assoc_stringl_ex(&_1$$6, SL("replace"), SL("\"\"")); + ZEPHIR_CPY_WRT("es, &_1$$6); + break; + } while(0); + + RETURN_CTOR("es); } -static PHP_METHOD(Phalcon_Mvc_Model, preSave) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, inTransaction) { - zval eventName; + zval result, _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL, *_16 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool exists, error = 0, isNull = 0, _9$$27, _10$$27, _11$$27, _19$$47, _20$$47, _21$$47; - zval *metaData, metaData_sub, *exists_param = NULL, *identityField, identityField_sub, __$true, __$false, notNull, columnMap, dataTypeNumeric, automaticAttributes, defaultValues, field, attributeField, value, emptyStringValues, _27, _28, _0$$3, _1$$3, _2$$3, _3$$8, *_4$$11, _5$$11, _6$$19, _7$$19, _12$$27, _13$$32, _14$$32, _15$$32, _17$$39, _18$$39, _22$$47, _23$$52, _24$$52, _25$$52, _26$$57, _29$$59, _30$$60, _31$$60, _32$$60, _33$$60, _34$$60, _35$$60; zval *this_ptr = getThis(); - ZVAL_UNDEF(&metaData_sub); - ZVAL_UNDEF(&identityField_sub); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_UNDEF(¬Null); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&dataTypeNumeric); - ZVAL_UNDEF(&automaticAttributes); - ZVAL_UNDEF(&defaultValues); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&attributeField); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&emptyStringValues); - ZVAL_UNDEF(&_27); - ZVAL_UNDEF(&_28); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$8); - ZVAL_UNDEF(&_5$$11); - ZVAL_UNDEF(&_6$$19); - ZVAL_UNDEF(&_7$$19); - ZVAL_UNDEF(&_12$$27); - ZVAL_UNDEF(&_13$$32); - ZVAL_UNDEF(&_14$$32); - ZVAL_UNDEF(&_15$$32); - ZVAL_UNDEF(&_17$$39); - ZVAL_UNDEF(&_18$$39); - ZVAL_UNDEF(&_22$$47); - ZVAL_UNDEF(&_23$$52); - ZVAL_UNDEF(&_24$$52); - ZVAL_UNDEF(&_25$$52); - ZVAL_UNDEF(&_26$$57); - ZVAL_UNDEF(&_29$$59); - ZVAL_UNDEF(&_30$$60); - ZVAL_UNDEF(&_31$$60); - ZVAL_UNDEF(&_32$$60); - ZVAL_UNDEF(&_33$$60); - ZVAL_UNDEF(&_34$$60); - ZVAL_UNDEF(&_35$$60); - ZVAL_UNDEF(&eventName); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "inTransaction"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &_2, "intransaction", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0); + zephir_check_call_status(); + RETURN_CCTOR(&result); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, isConnected) +{ + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC); + RETURN_MM_BOOL(zephir_get_boolval(&_0)); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, lastInsertId) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *name_param = NULL, result, _0, _1, _2, _3; + zval name, _4; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_OBJECT_OF_CLASS(metaData, phalcon_mvc_model_metadatainterface_ce) - Z_PARAM_BOOL(exists) - Z_PARAM_ZVAL(identityField) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &metaData, &exists_param, &identityField); - exists = zephir_get_boolval(exists_param); + zephir_fetch_params(1, 0, 1, &name_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); + } else { + zephir_get_strval(&name, name_param); + } - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "beforeValidation"); - ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "fireeventcancel", NULL, 0, &_1$$3); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_0$$3)) { - RETURN_MM_BOOL(0); - } - if (exists) { - ZEPHIR_INIT_VAR(&eventName); - ZVAL_STRING(&eventName, "beforeValidationOnUpdate"); - } else { - ZEPHIR_INIT_NVAR(&eventName); - ZVAL_STRING(&eventName, "beforeValidationOnCreate"); - } - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "fireeventcancel", NULL, 0, &eventName); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_2$$3)) { - RETURN_MM_BOOL(0); - } - } - if (ZEPHIR_GLOBAL(orm).virtual_foreign_keys) { - ZEPHIR_CALL_METHOD(&_3$$8, this_ptr, "checkforeignkeysrestrict", NULL, 432); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_3$$8)) { - RETURN_MM_BOOL(0); - } - } - if (ZEPHIR_GLOBAL(orm).not_null_validations) { - ZEPHIR_CALL_METHOD(¬Null, metaData, "getnotnullattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - if (Z_TYPE_P(¬Null) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(&dataTypeNumeric, metaData, "getdatatypesnumeric", NULL, 0, this_ptr); - zephir_check_call_status(); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, metaData, "getcolumnmap", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - if (exists) { - ZEPHIR_CALL_METHOD(&automaticAttributes, metaData, "getautomaticupdateattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&automaticAttributes, metaData, "getautomaticcreateattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&defaultValues, metaData, "getdefaultvalues", NULL, 0, this_ptr); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&emptyStringValues, metaData, "getemptystringattributes", NULL, 0, this_ptr); - zephir_check_call_status(); - error = 0; - zephir_is_iterable(¬Null, 0, "phalcon/Mvc/Model.zep", 4829); - if (Z_TYPE_P(¬Null) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(¬Null), _4$$11) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _4$$11); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_6$$19); - object_init_ex(&_6$$19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_7$$19); - ZEPHIR_CONCAT_SVS(&_7$$19, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_6$$19, "__construct", &_8, 29, &_7$$19); - zephir_check_call_status(); - zephir_throw_exception_debug(&_6$$19, "phalcon/Mvc/Model.zep", 4753); - ZEPHIR_MM_RESTORE(); - return; - } - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - isNull = 0; - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - if (Z_TYPE_P(&value) != IS_OBJECT) { - if (!(zephir_array_isset(&dataTypeNumeric, &field))) { - if (zephir_array_isset(&emptyStringValues, &field)) { - if (Z_TYPE_P(&value) == IS_NULL) { - isNull = 1; - } - } else { - _9$$27 = Z_TYPE_P(&value) == IS_NULL; - if (!(_9$$27)) { - _10$$27 = ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - if (_10$$27) { - _11$$27 = !(zephir_array_isset(&defaultValues, &field)); - if (!(_11$$27)) { - zephir_array_fetch(&_12$$27, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 4783); - _11$$27 = !ZEPHIR_IS_IDENTICAL(&value, &_12$$27); - } - _10$$27 = _11$$27; - } - _9$$27 = _10$$27; - } - if (_9$$27) { - isNull = 1; - } - } - } else { - if (!(zephir_is_numeric(&value))) { - isNull = 1; - } - } - } - } else { - isNull = 1; - } - if (isNull) { - if (!(exists)) { - if (ZEPHIR_IS_EQUAL(&field, identityField)) { - continue; - } - if (zephir_array_isset(&defaultValues, &field)) { - continue; - } - } - ZEPHIR_INIT_NVAR(&_13$$32); - object_init_ex(&_13$$32, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_14$$32); - ZEPHIR_CONCAT_VS(&_14$$32, &attributeField, " is required"); - ZEPHIR_INIT_NVAR(&_15$$32); - ZVAL_STRING(&_15$$32, "PresenceOf"); - ZEPHIR_CALL_METHOD(NULL, &_13$$32, "__construct", &_16, 6, &_14$$32, &attributeField, &_15$$32); - zephir_check_call_status(); - zephir_update_property_array_append(this_ptr, SL("errorMessages"), &_13$$32); - error = 1; - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, ¬Null, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$11, ¬Null, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$11)) { - break; - } - ZEPHIR_CALL_METHOD(&field, ¬Null, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&attributeField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeField, &columnMap, &field, 0)))) { - if (UNEXPECTED(!(ZEPHIR_GLOBAL(orm).ignore_unknown_columns))) { - ZEPHIR_INIT_NVAR(&_17$$39); - object_init_ex(&_17$$39, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_18$$39); - ZEPHIR_CONCAT_SVS(&_18$$39, "Column '", &field, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_17$$39, "__construct", &_8, 29, &_18$$39); - zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$39, "phalcon/Mvc/Model.zep", 4753); - ZEPHIR_MM_RESTORE(); - return; - } - } - } else { - ZEPHIR_CPY_WRT(&attributeField, &field); - } - if (!(zephir_array_isset(&automaticAttributes, &attributeField))) { - isNull = 0; - ZEPHIR_OBS_NVAR(&value); - if (zephir_fetch_property_zval(&value, this_ptr, &attributeField, PH_SILENT_CC)) { - if (Z_TYPE_P(&value) != IS_OBJECT) { - if (!(zephir_array_isset(&dataTypeNumeric, &field))) { - if (zephir_array_isset(&emptyStringValues, &field)) { - if (Z_TYPE_P(&value) == IS_NULL) { - isNull = 1; - } - } else { - _19$$47 = Z_TYPE_P(&value) == IS_NULL; - if (!(_19$$47)) { - _20$$47 = ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - if (_20$$47) { - _21$$47 = !(zephir_array_isset(&defaultValues, &field)); - if (!(_21$$47)) { - zephir_array_fetch(&_22$$47, &defaultValues, &field, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model.zep", 4783); - _21$$47 = !ZEPHIR_IS_IDENTICAL(&value, &_22$$47); - } - _20$$47 = _21$$47; - } - _19$$47 = _20$$47; - } - if (_19$$47) { - isNull = 1; - } - } - } else { - if (!(zephir_is_numeric(&value))) { - isNull = 1; - } - } - } - } else { - isNull = 1; - } - if (isNull) { - if (!(exists)) { - if (ZEPHIR_IS_EQUAL(&field, identityField)) { - continue; - } - if (zephir_array_isset(&defaultValues, &field)) { - continue; - } - } - ZEPHIR_INIT_NVAR(&_23$$52); - object_init_ex(&_23$$52, phalcon_messages_message_ce); - ZEPHIR_INIT_NVAR(&_24$$52); - ZEPHIR_CONCAT_VS(&_24$$52, &attributeField, " is required"); - ZEPHIR_INIT_NVAR(&_25$$52); - ZVAL_STRING(&_25$$52, "PresenceOf"); - ZEPHIR_CALL_METHOD(NULL, &_23$$52, "__construct", &_16, 6, &_24$$52, &attributeField, &_25$$52); - zephir_check_call_status(); - zephir_update_property_array_append(this_ptr, SL("errorMessages"), &_23$$52); - error = 1; - } - } - ZEPHIR_CALL_METHOD(NULL, ¬Null, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - if (error) { - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_INIT_VAR(&_26$$57); - ZVAL_STRING(&_26$$57, "onValidationFails"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_26$$57); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "canceloperation", NULL, 0); - zephir_check_call_status(); - } - RETURN_MM_BOOL(0); - } - } - } - ZEPHIR_INIT_VAR(&_28); - ZVAL_STRING(&_28, "validation"); - ZEPHIR_CALL_METHOD(&_27, this_ptr, "fireeventcancel", NULL, 0, &_28); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_27)) { - if (ZEPHIR_GLOBAL(orm).events) { - ZEPHIR_INIT_VAR(&_29$$59); - ZVAL_STRING(&_29$$59, "onValidationFails"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_29$$59); - zephir_check_call_status(); - } - RETURN_MM_BOOL(0); - } - if (ZEPHIR_GLOBAL(orm).events) { - if (exists) { - ZEPHIR_INIT_NVAR(&eventName); - ZVAL_STRING(&eventName, "afterValidationOnUpdate"); - } else { - ZEPHIR_INIT_NVAR(&eventName); - ZVAL_STRING(&eventName, "afterValidationOnCreate"); - } - ZEPHIR_CALL_METHOD(&_30$$60, this_ptr, "fireeventcancel", NULL, 0, &eventName); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_30$$60)) { - RETURN_MM_BOOL(0); - } - ZEPHIR_INIT_VAR(&_32$$60); - ZVAL_STRING(&_32$$60, "afterValidation"); - ZEPHIR_CALL_METHOD(&_31$$60, this_ptr, "fireeventcancel", NULL, 0, &_32$$60); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_31$$60)) { - RETURN_MM_BOOL(0); - } - ZEPHIR_INIT_NVAR(&_32$$60); - ZVAL_STRING(&_32$$60, "beforeSave"); - ZEPHIR_CALL_METHOD(&_33$$60, this_ptr, "fireeventcancel", NULL, 0, &_32$$60); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_33$$60)) { - RETURN_MM_BOOL(0); - } - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("skipped"), &__$false); - } - if (exists) { - ZEPHIR_INIT_NVAR(&eventName); - ZVAL_STRING(&eventName, "beforeUpdate"); - } else { - ZEPHIR_INIT_NVAR(&eventName); - ZVAL_STRING(&eventName, "beforeCreate"); - } - ZEPHIR_CALL_METHOD(&_34$$60, this_ptr, "fireeventcancel", NULL, 0, &eventName); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_34$$60)) { - RETURN_MM_BOOL(0); - } - zephir_read_property(&_35$$60, this_ptr, ZEND_STRL("skipped"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_TRUE_IDENTICAL(&_35$$60)) { - RETURN_MM_BOOL(1); - } - } - RETURN_MM_BOOL(1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "lastInsertId"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &_2, "lastinsertid", NULL, 0, &name); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0); + zephir_check_call_status(); + zephir_cast_to_string(&_4, &result); + RETURN_CTOR(&_4); } -static PHP_METHOD(Phalcon_Mvc_Model, preSaveRelatedRecords) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, perform) { - zval _18$$10, _20$$12, _36$$20, _37$$22; zend_string *_5; zend_ulong _4; - zend_bool nesting = 0, _13$$5, _31$$15; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_7 = NULL, *_9 = NULL, *_11 = NULL, *_19 = NULL, *_22 = NULL, *_25 = NULL, *_27 = NULL, *_29 = NULL, *_39 = NULL; + zephir_fcall_cache_entry *_6 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *connection, connection_sub, *related, related_sub, className, manager, type, relation, columns, referencedFields, message, name, record, _0, _1, *_2, _3, _6$$3, _8$$6, _10$$7, _12$$5, _14$$5, _23$$5, _15$$8, *_16$$8, _17$$8, _21$$8, _24$$13, _26$$16, _28$$17, _30$$15, _32$$15, _40$$15, _33$$18, *_34$$18, _35$$18, _38$$18; + zval values; + zval *statement_param = NULL, *values_param = NULL, name, sth, value, _0, _1, *_2, _3, _7; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&connection_sub); - ZVAL_UNDEF(&related_sub); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&columns); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&message); + ZVAL_UNDEF(&statement); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&record); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_8$$6); - ZVAL_UNDEF(&_10$$7); - ZVAL_UNDEF(&_12$$5); - ZVAL_UNDEF(&_14$$5); - ZVAL_UNDEF(&_23$$5); - ZVAL_UNDEF(&_15$$8); - ZVAL_UNDEF(&_17$$8); - ZVAL_UNDEF(&_21$$8); - ZVAL_UNDEF(&_24$$13); - ZVAL_UNDEF(&_26$$16); - ZVAL_UNDEF(&_28$$17); - ZVAL_UNDEF(&_30$$15); - ZVAL_UNDEF(&_32$$15); - ZVAL_UNDEF(&_40$$15); - ZVAL_UNDEF(&_33$$18); - ZVAL_UNDEF(&_35$$18); - ZVAL_UNDEF(&_38$$18); - ZVAL_UNDEF(&_18$$10); - ZVAL_UNDEF(&_20$$12); - ZVAL_UNDEF(&_36$$20); - ZVAL_UNDEF(&_37$$22); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&values); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) - Z_PARAM_ZVAL(related) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(values) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &connection, &related); - - - nesting = 0; - if (nesting) { - ZVAL_BOOL(&_0, 1); + zephir_fetch_params(1, 1, 1, &statement_param, &values_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); } else { - ZVAL_BOOL(&_0, 0); + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_METHOD(NULL, connection, "begin", NULL, 0, &_0); + + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, this_ptr, 0); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getmodelsmanager", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "perform"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - zephir_is_iterable(related, 0, "phalcon/Mvc/Model.zep", 5009); - if (Z_TYPE_P(related) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(related), _4, _5, _2) + ZEPHIR_CALL_METHOD(&sth, this_ptr, "prepare", NULL, 0, &statement); + zephir_check_call_status(); + zephir_is_iterable(&values, 0, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 582); + if (Z_TYPE_P(&values) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&values), _4, _5, _2) { ZEPHIR_INIT_NVAR(&name); if (_5 != NULL) { @@ -45799,2191 +42449,1190 @@ static PHP_METHOD(Phalcon_Mvc_Model, preSaveRelatedRecords) } else { ZVAL_LONG(&name, _4); } - ZEPHIR_INIT_NVAR(&record); - ZVAL_COPY(&record, _2); - ZEPHIR_CALL_METHOD(&_6$$3, &manager, "getrelationbyalias", &_7, 0, &className, &name); + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _2); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "performbind", &_6, 0, &sth, &name, &value); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_6$$3); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&type, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&type, 0)) { - if (UNEXPECTED(Z_TYPE_P(&record) != IS_OBJECT)) { - if (nesting) { - ZVAL_BOOL(&_8$$6, 1); - } else { - ZVAL_BOOL(&_8$$6, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_9, 0, &_8$$6); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Only objects can be stored as part of belongs-to relations", "phalcon/Mvc/Model.zep", 4950); - return; - } - ZEPHIR_CALL_METHOD(&columns, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&columns) == IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_10$$7, 1); - } else { - ZVAL_BOOL(&_10$$7, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_11, 0, &_10$$7); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not implemented", "phalcon/Mvc/Model.zep", 4962); - return; - } - zephir_read_property(&_12$$5, &record, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - _13$$5 = !ZEPHIR_IS_LONG_IDENTICAL(&_12$$5, 0); - if (_13$$5) { - ZEPHIR_CALL_METHOD(&_14$$5, &record, "save", NULL, 0); - zephir_check_call_status(); - _13$$5 = !zephir_is_true(&_14$$5); - } - if (_13$$5) { - ZEPHIR_CALL_METHOD(&_15$$8, &record, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_15$$8, 0, "phalcon/Mvc/Model.zep", 4995); - if (Z_TYPE_P(&_15$$8) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_15$$8), _16$$8) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _16$$8); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_18$$10); - zephir_create_array(&_18$$10, 1, 0); - zephir_array_update_string(&_18$$10, SL("model"), &record, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_18$$10); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_19, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_15$$8, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_17$$8, &_15$$8, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_17$$8)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_15$$8, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_20$$12); - zephir_create_array(&_20$$12, 1, 0); - zephir_array_update_string(&_20$$12, SL("model"), &record, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_20$$12); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_19, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_15$$8, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_21$$8, 1); - } else { - ZVAL_BOOL(&_21$$8, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_22, 0, &_21$$8); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - ZEPHIR_CALL_METHOD(&_23$$5, &record, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &columns, &_23$$5); - } - } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, related, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_3, related, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_3, &values, "valid", NULL, 0); zephir_check_call_status(); if (!zend_is_true(&_3)) { break; } - ZEPHIR_CALL_METHOD(&name, related, "key", NULL, 0); + ZEPHIR_CALL_METHOD(&name, &values, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&record, related, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_24$$13, &manager, "getrelationbyalias", &_25, 0, &className, &name); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "performbind", &_6, 0, &sth, &name, &value); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_24$$13); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&type, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&type, 0)) { - if (UNEXPECTED(Z_TYPE_P(&record) != IS_OBJECT)) { - if (nesting) { - ZVAL_BOOL(&_26$$16, 1); - } else { - ZVAL_BOOL(&_26$$16, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_27, 0, &_26$$16); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Only objects can be stored as part of belongs-to relations", "phalcon/Mvc/Model.zep", 4950); - return; - } - ZEPHIR_CALL_METHOD(&columns, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&columns) == IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_28$$17, 1); - } else { - ZVAL_BOOL(&_28$$17, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_29, 0, &_28$$17); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not implemented", "phalcon/Mvc/Model.zep", 4962); - return; - } - zephir_read_property(&_30$$15, &record, ZEND_STRL("dirtyState"), PH_NOISY_CC | PH_READONLY); - _31$$15 = !ZEPHIR_IS_LONG_IDENTICAL(&_30$$15, 0); - if (_31$$15) { - ZEPHIR_CALL_METHOD(&_32$$15, &record, "save", NULL, 0); - zephir_check_call_status(); - _31$$15 = !zephir_is_true(&_32$$15); - } - if (_31$$15) { - ZEPHIR_CALL_METHOD(&_33$$18, &record, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_33$$18, 0, "phalcon/Mvc/Model.zep", 4995); - if (Z_TYPE_P(&_33$$18) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_33$$18), _34$$18) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _34$$18); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_36$$20); - zephir_create_array(&_36$$20, 1, 0); - zephir_array_update_string(&_36$$20, SL("model"), &record, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_36$$20); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_19, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_33$$18, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_35$$18, &_33$$18, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_35$$18)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_33$$18, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_37$$22); - zephir_create_array(&_37$$22, 1, 0); - zephir_array_update_string(&_37$$22, SL("model"), &record, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_37$$22); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_19, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_33$$18, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_38$$18, 1); - } else { - ZVAL_BOOL(&_38$$18, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_39, 0, &_38$$18); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - ZEPHIR_CALL_METHOD(&_40$$15, &record, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - zephir_update_property_zval_zval(this_ptr, &columns, &_40$$15); - } - } - ZEPHIR_CALL_METHOD(NULL, related, "next", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&record); + ZEPHIR_INIT_NVAR(&value); ZEPHIR_INIT_NVAR(&name); - RETURN_MM_BOOL(1); + ZEPHIR_CALL_METHOD(NULL, &sth, "execute", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_7, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_7, "finish", NULL, 0, &statement, &values); + zephir_check_call_status(); + RETURN_CCTOR(&sth); } -static PHP_METHOD(Phalcon_Mvc_Model, postSave) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, prepare) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *success_param = NULL, *exists_param = NULL, _0$$4, _1$$5; - zend_bool success, exists; + zval options; + zval *statement_param = NULL, *options_param = NULL, sth, _0, _1, _2, _3, _4; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0$$4); - ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&options); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_BOOL(success) - Z_PARAM_BOOL(exists) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(statement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &success_param, &exists_param); - success = zephir_get_boolval(success_param); - exists = zephir_get_boolval(exists_param); + zephir_fetch_params(1, 1, 1, &statement_param, &options_param); + zephir_get_strval(&statement, statement_param); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); + } else { + zephir_get_arrval(&options, options_param); + } - if (success) { - if (exists) { - ZEPHIR_INIT_VAR(&_0$$4); - ZVAL_STRING(&_0$$4, "afterUpdate"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_0$$4); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_VAR(&_1$$5); - ZVAL_STRING(&_1$$5, "afterCreate"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_1$$5); - zephir_check_call_status(); - } - } - RETURN_MM_BOOL(success); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "prepare"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&sth, &_2, "prepare", NULL, 0, &statement, &options); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_4, &sth, ZEND_STRL("queryString"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0, &_4); + zephir_check_call_status(); + RETURN_CCTOR(&sth); } -static PHP_METHOD(Phalcon_Mvc_Model, postSaveRelatedRecords) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, query) { - zval _25$$16, _27$$18, _33$$20, _35$$20, _40$$24, _41$$26, _48$$31, _49$$33, _55$$35, _57$$35, _62$$39, _63$$41, _90$$57, _91$$59, _97$$61, _99$$61, _104$$65, _105$$67, _112$$72, _113$$74, _119$$76, _121$$76, _126$$80, _127$$82; - zend_string *_4; - zend_ulong _3; - zend_bool nesting = 0, isThrough = 0, _8$$4, _73$$45; + zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL, *_10 = NULL, *_12 = NULL, *_14 = NULL, *_17 = NULL, *_26 = NULL, *_29 = NULL, *_31 = NULL, *_32 = NULL, *_43 = NULL, *_51 = NULL, *_53 = NULL, *_54 = NULL, *_65 = NULL, *_67 = NULL, *_71 = NULL, *_75 = NULL, *_77 = NULL, *_80 = NULL, *_93 = NULL, *_95 = NULL, *_96 = NULL, *_107 = NULL, *_115 = NULL, *_117 = NULL, *_118 = NULL, *_129 = NULL, *_131 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *connection, connection_sub, *related, related_sub, className, manager, relation, name, record, message, columns, referencedModel, referencedFields, relatedRecords, value, recordAfter, intermediateModel, intermediateFields, intermediateValue, intermediateModelName, intermediateReferencedFields, existingIntermediateModel, _0, *_1, _2, _134, _5$$3, _7$$4, _18$$4, *_19$$4, _20$$4, _9$$6, _11$$7, _13$$10, _15$$10, _16$$10, _21$$12, _22$$14, *_23$$14, _24$$14, _28$$14, _30$$19, _36$$19, _34$$20, _37$$22, *_38$$22, _39$$22, _42$$22, _44$$27, _45$$29, *_46$$29, _47$$29, _50$$29, _52$$34, _58$$34, _56$$35, _59$$37, *_60$$37, _61$$37, _64$$37, _66$$43, _68$$43, _69$$43, _70$$44, _72$$45, _83$$45, *_84$$45, _85$$45, _74$$47, _76$$48, _78$$49, _79$$51, _81$$51, _82$$51, _86$$53, _87$$55, *_88$$55, _89$$55, _92$$55, _94$$60, _100$$60, _98$$61, _101$$63, *_102$$63, _103$$63, _106$$63, _108$$68, _109$$70, *_110$$70, _111$$70, _114$$70, _116$$75, _122$$75, _120$$76, _123$$78, *_124$$78, _125$$78, _128$$78, _130$$84, _132$$84, _133$$84; + zval *statement_param = NULL, sth, _0, _1, _3, _4, _5; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&connection_sub); - ZVAL_UNDEF(&related_sub); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&record); - ZVAL_UNDEF(&message); - ZVAL_UNDEF(&columns); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&relatedRecords); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&recordAfter); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&intermediateFields); - ZVAL_UNDEF(&intermediateValue); - ZVAL_UNDEF(&intermediateModelName); - ZVAL_UNDEF(&intermediateReferencedFields); - ZVAL_UNDEF(&existingIntermediateModel); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&sth); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_134); - ZVAL_UNDEF(&_5$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(statement) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &statement_param); + zephir_get_strval(&statement, statement_param); + + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "query"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + zephir_create_array(&_2, 2, 0); + ZEPHIR_OBS_VAR(&_3); + zephir_read_property(&_3, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC); + zephir_array_fast_append(&_2, &_3); + ZEPHIR_INIT_NVAR(&_1); + ZVAL_STRING(&_1, "query"); + zephir_array_fast_append(&_2, &_1); + ZEPHIR_INIT_NVAR(&_1); + zephir_get_args(&_1); + ZEPHIR_INIT_VAR(&sth); + ZEPHIR_CALL_USER_FUNC_ARRAY(&sth, &_2, &_1); + zephir_check_call_status(); + zephir_read_property(&_4, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_5, &sth, ZEND_STRL("queryString"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_4, "finish", NULL, 0, &_5); + zephir_check_call_status(); + RETURN_CCTOR(&sth); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, quote) +{ + zval _0$$3, _7$$4, _11$$5; + zend_string *_6; + zend_ulong _5; + zval elements; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long type, ZEPHIR_LAST_CALL_STATUS; + zval *value, value_sub, *type_param = NULL, element, key, quotes, *_3, _4, _1$$3, _2$$3, _8$$4, _9$$4, _10$$4, _12$$5, _13$$5, _14$$5; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&element); + ZVAL_UNDEF(&key); + ZVAL_UNDEF("es); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); + ZVAL_UNDEF(&_12$$5); + ZVAL_UNDEF(&_13$$5); + ZVAL_UNDEF(&_14$$5); + ZVAL_UNDEF(&elements); + ZVAL_UNDEF(&_0$$3); ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_18$$4); - ZVAL_UNDEF(&_20$$4); - ZVAL_UNDEF(&_9$$6); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_13$$10); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_16$$10); - ZVAL_UNDEF(&_21$$12); - ZVAL_UNDEF(&_22$$14); - ZVAL_UNDEF(&_24$$14); - ZVAL_UNDEF(&_28$$14); - ZVAL_UNDEF(&_30$$19); - ZVAL_UNDEF(&_36$$19); - ZVAL_UNDEF(&_34$$20); - ZVAL_UNDEF(&_37$$22); - ZVAL_UNDEF(&_39$$22); - ZVAL_UNDEF(&_42$$22); - ZVAL_UNDEF(&_44$$27); - ZVAL_UNDEF(&_45$$29); - ZVAL_UNDEF(&_47$$29); - ZVAL_UNDEF(&_50$$29); - ZVAL_UNDEF(&_52$$34); - ZVAL_UNDEF(&_58$$34); - ZVAL_UNDEF(&_56$$35); - ZVAL_UNDEF(&_59$$37); - ZVAL_UNDEF(&_61$$37); - ZVAL_UNDEF(&_64$$37); - ZVAL_UNDEF(&_66$$43); - ZVAL_UNDEF(&_68$$43); - ZVAL_UNDEF(&_69$$43); - ZVAL_UNDEF(&_70$$44); - ZVAL_UNDEF(&_72$$45); - ZVAL_UNDEF(&_83$$45); - ZVAL_UNDEF(&_85$$45); - ZVAL_UNDEF(&_74$$47); - ZVAL_UNDEF(&_76$$48); - ZVAL_UNDEF(&_78$$49); - ZVAL_UNDEF(&_79$$51); - ZVAL_UNDEF(&_81$$51); - ZVAL_UNDEF(&_82$$51); - ZVAL_UNDEF(&_86$$53); - ZVAL_UNDEF(&_87$$55); - ZVAL_UNDEF(&_89$$55); - ZVAL_UNDEF(&_92$$55); - ZVAL_UNDEF(&_94$$60); - ZVAL_UNDEF(&_100$$60); - ZVAL_UNDEF(&_98$$61); - ZVAL_UNDEF(&_101$$63); - ZVAL_UNDEF(&_103$$63); - ZVAL_UNDEF(&_106$$63); - ZVAL_UNDEF(&_108$$68); - ZVAL_UNDEF(&_109$$70); - ZVAL_UNDEF(&_111$$70); - ZVAL_UNDEF(&_114$$70); - ZVAL_UNDEF(&_116$$75); - ZVAL_UNDEF(&_122$$75); - ZVAL_UNDEF(&_120$$76); - ZVAL_UNDEF(&_123$$78); - ZVAL_UNDEF(&_125$$78); - ZVAL_UNDEF(&_128$$78); - ZVAL_UNDEF(&_130$$84); - ZVAL_UNDEF(&_132$$84); - ZVAL_UNDEF(&_133$$84); - ZVAL_UNDEF(&_25$$16); - ZVAL_UNDEF(&_27$$18); - ZVAL_UNDEF(&_33$$20); - ZVAL_UNDEF(&_35$$20); - ZVAL_UNDEF(&_40$$24); - ZVAL_UNDEF(&_41$$26); - ZVAL_UNDEF(&_48$$31); - ZVAL_UNDEF(&_49$$33); - ZVAL_UNDEF(&_55$$35); - ZVAL_UNDEF(&_57$$35); - ZVAL_UNDEF(&_62$$39); - ZVAL_UNDEF(&_63$$41); - ZVAL_UNDEF(&_90$$57); - ZVAL_UNDEF(&_91$$59); - ZVAL_UNDEF(&_97$$61); - ZVAL_UNDEF(&_99$$61); - ZVAL_UNDEF(&_104$$65); - ZVAL_UNDEF(&_105$$67); - ZVAL_UNDEF(&_112$$72); - ZVAL_UNDEF(&_113$$74); - ZVAL_UNDEF(&_119$$76); - ZVAL_UNDEF(&_121$$76); - ZVAL_UNDEF(&_126$$80); - ZVAL_UNDEF(&_127$$82); + ZVAL_UNDEF(&_11$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) - Z_PARAM_ZVAL(related) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(value) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &connection, &related); + zephir_fetch_params(1, 1, 1, &value, &type_param); + if (!type_param) { + type = 2; + } else { + type = zephir_get_intval(type_param); + } - nesting = 0; - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, this_ptr, 0); - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getmodelsmanager", NULL, 0); + ZEPHIR_INIT_VAR(&elements); + array_init(&elements); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_0); - zephir_is_iterable(related, 0, "phalcon/Mvc/Model.zep", 5258); - if (Z_TYPE_P(related) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(related), _3, _4, _1) + ZEPHIR_CPY_WRT(&element, value); + ZEPHIR_CALL_METHOD("es, this_ptr, "getquotenames", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&element) != IS_ARRAY) { + zephir_cast_to_string(&_0$$3, &element); + ZEPHIR_CPY_WRT(&element, &_0$$3); + zephir_array_fetch_string(&_1$$3, "es, SL("prefix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 667); + zephir_array_fetch_string(&_2$$3, "es, SL("suffix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 667); + ZEPHIR_CONCAT_VVV(return_value, &_1$$3, &element, &_2$$3); + RETURN_MM(); + } + zephir_is_iterable(value, 0, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 676); + if (Z_TYPE_P(value) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(value), _5, _6, _3) { - ZEPHIR_INIT_NVAR(&name); - if (_4 != NULL) { - ZVAL_STR_COPY(&name, _4); + ZEPHIR_INIT_NVAR(&key); + if (_6 != NULL) { + ZVAL_STR_COPY(&key, _6); } else { - ZVAL_LONG(&name, _3); + ZVAL_LONG(&key, _5); } - ZEPHIR_INIT_NVAR(&record); - ZVAL_COPY(&record, _1); - ZEPHIR_CALL_METHOD(&_5$$3, &manager, "getrelationbyalias", &_6, 0, &className, &name); + ZEPHIR_INIT_NVAR(&element); + ZVAL_COPY(&element, _3); + zephir_cast_to_string(&_7$$4, &element); + ZEPHIR_CPY_WRT(&element, &_7$$4); + zephir_array_fetch_string(&_8$$4, "es, SL("prefix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 673); + zephir_array_fetch_string(&_9$$4, "es, SL("suffix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 673); + ZEPHIR_INIT_NVAR(&_10$$4); + ZEPHIR_CONCAT_VVV(&_10$$4, &_8$$4, &element, &_9$$4); + zephir_array_update_zval(&elements, &key, &_10$$4, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, value, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_4, value, "valid", NULL, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_5$$3); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&_7$$4, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_7$$4, 0)) { - continue; - } - _8$$4 = Z_TYPE_P(&record) != IS_OBJECT; - if (_8$$4) { - _8$$4 = Z_TYPE_P(&record) != IS_ARRAY; - } - if (UNEXPECTED(_8$$4)) { - if (nesting) { - ZVAL_BOOL(&_9$$6, 1); - } else { - ZVAL_BOOL(&_9$$6, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_10, 0, &_9$$6); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Only objects/arrays can be stored as part of has-many/has-one/has-one-through/has-many-to-many relations", "phalcon/Mvc/Model.zep", 5071); - return; - } - ZEPHIR_CALL_METHOD(&columns, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&columns) == IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_11$$7, 1); - } else { - ZVAL_BOOL(&_11$$7, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_12, 0, &_11$$7); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not implemented", "phalcon/Mvc/Model.zep", 5081); - return; - } - if (Z_TYPE_P(&record) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&relatedRecords); - zephir_create_array(&relatedRecords, 1, 0); - zephir_array_fast_append(&relatedRecords, &record); - } else { - ZEPHIR_CPY_WRT(&relatedRecords, &record); - } - ZEPHIR_OBS_NVAR(&value); - if (UNEXPECTED(!(zephir_fetch_property_zval(&value, this_ptr, &columns, PH_SILENT_CC)))) { - if (nesting) { - ZVAL_BOOL(&_13$$10, 1); - } else { - ZVAL_BOOL(&_13$$10, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_14, 0, &_13$$10); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_15$$10); - object_init_ex(&_15$$10, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_16$$10); - ZEPHIR_CONCAT_SVS(&_16$$10, "The column '", &columns, "' needs to be present in the model"); - ZEPHIR_CALL_METHOD(NULL, &_15$$10, "__construct", &_17, 29, &_16$$10); - zephir_check_call_status(); - zephir_throw_exception_debug(&_15$$10, "phalcon/Mvc/Model.zep", 5098); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&_18$$4, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - isThrough = zephir_get_boolval(&_18$$4); - if (isThrough) { - ZEPHIR_CALL_METHOD(&intermediateModelName, &relation, "getintermediatemodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateFields, &relation, "getintermediatefields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateReferencedFields, &relation, "getintermediatereferencedfields", NULL, 0); - zephir_check_call_status(); - } - zephir_is_iterable(&relatedRecords, 0, "phalcon/Mvc/Model.zep", 5244); - if (Z_TYPE_P(&relatedRecords) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relatedRecords), _19$$4) - { - ZEPHIR_INIT_NVAR(&recordAfter); - ZVAL_COPY(&recordAfter, _19$$4); - if (!(isThrough)) { - ZEPHIR_CALL_METHOD(NULL, &recordAfter, "writeattribute", NULL, 0, &referencedFields, &value); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_21$$12, &recordAfter, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_21$$12))) { - ZEPHIR_CALL_METHOD(&_22$$14, &recordAfter, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_22$$14, 0, "phalcon/Mvc/Model.zep", 5157); - if (Z_TYPE_P(&_22$$14) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_22$$14), _23$$14) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _23$$14); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_25$$16); - zephir_create_array(&_25$$16, 1, 0); - zephir_array_update_string(&_25$$16, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_25$$16); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_22$$14, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_24$$14, &_22$$14, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_24$$14)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_22$$14, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_27$$18); - zephir_create_array(&_27$$18, 1, 0); - zephir_array_update_string(&_27$$18, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_27$$18); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_22$$14, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_28$$14, 1); - } else { - ZVAL_BOOL(&_28$$14, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_29, 0, &_28$$14); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - if (isThrough) { - ZEPHIR_CALL_METHOD(&_30$$19, &manager, "load", &_31, 0, &intermediateModelName); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&intermediateModel, &_30$$19); - ZEPHIR_CALL_METHOD(&_30$$19, &relation, "gettype", &_32, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_30$$19, 3)) { - ZEPHIR_INIT_NVAR(&_33$$20); - zephir_create_array(&_33$$20, 2, 0); - ZEPHIR_INIT_NVAR(&_34$$20); - ZEPHIR_CONCAT_SVS(&_34$$20, "[", &intermediateFields, "] = ?0"); - zephir_array_fast_append(&_33$$20, &_34$$20); - ZEPHIR_INIT_NVAR(&_35$$20); - zephir_create_array(&_35$$20, 1, 0); - zephir_array_fast_append(&_35$$20, &value); - zephir_array_update_string(&_33$$20, SL("bind"), &_35$$20, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&existingIntermediateModel, &intermediateModel, "findfirst", NULL, 0, &_33$$20); - zephir_check_call_status(); - if (zephir_is_true(&existingIntermediateModel)) { - ZEPHIR_CPY_WRT(&intermediateModel, &existingIntermediateModel); - } - } - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateFields, &value); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateValue, &recordAfter, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateReferencedFields, &intermediateValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_36$$19, &intermediateModel, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_36$$19))) { - ZEPHIR_CALL_METHOD(&_37$$22, &intermediateModel, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_37$$22, 0, "phalcon/Mvc/Model.zep", 5238); - if (Z_TYPE_P(&_37$$22) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_37$$22), _38$$22) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _38$$22); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_40$$24); - zephir_create_array(&_40$$24, 1, 0); - zephir_array_update_string(&_40$$24, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_40$$24); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_37$$22, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_39$$22, &_37$$22, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_39$$22)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_37$$22, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_41$$26); - zephir_create_array(&_41$$26, 1, 0); - zephir_array_update_string(&_41$$26, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_41$$26); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_37$$22, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_42$$22, 1); - } else { - ZVAL_BOOL(&_42$$22, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_43, 0, &_42$$22); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relatedRecords, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_20$$4, &relatedRecords, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_20$$4)) { - break; - } - ZEPHIR_CALL_METHOD(&recordAfter, &relatedRecords, "current", NULL, 0); - zephir_check_call_status(); - if (!(isThrough)) { - ZEPHIR_CALL_METHOD(NULL, &recordAfter, "writeattribute", NULL, 0, &referencedFields, &value); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_44$$27, &recordAfter, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_44$$27))) { - ZEPHIR_CALL_METHOD(&_45$$29, &recordAfter, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_45$$29, 0, "phalcon/Mvc/Model.zep", 5157); - if (Z_TYPE_P(&_45$$29) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_45$$29), _46$$29) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _46$$29); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_48$$31); - zephir_create_array(&_48$$31, 1, 0); - zephir_array_update_string(&_48$$31, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_48$$31); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_45$$29, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_47$$29, &_45$$29, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_47$$29)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_45$$29, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_49$$33); - zephir_create_array(&_49$$33, 1, 0); - zephir_array_update_string(&_49$$33, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_49$$33); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_45$$29, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_50$$29, 1); - } else { - ZVAL_BOOL(&_50$$29, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_51, 0, &_50$$29); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - if (isThrough) { - ZEPHIR_CALL_METHOD(&_52$$34, &manager, "load", &_53, 0, &intermediateModelName); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&intermediateModel, &_52$$34); - ZEPHIR_CALL_METHOD(&_52$$34, &relation, "gettype", &_54, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_52$$34, 3)) { - ZEPHIR_INIT_NVAR(&_55$$35); - zephir_create_array(&_55$$35, 2, 0); - ZEPHIR_INIT_NVAR(&_56$$35); - ZEPHIR_CONCAT_SVS(&_56$$35, "[", &intermediateFields, "] = ?0"); - zephir_array_fast_append(&_55$$35, &_56$$35); - ZEPHIR_INIT_NVAR(&_57$$35); - zephir_create_array(&_57$$35, 1, 0); - zephir_array_fast_append(&_57$$35, &value); - zephir_array_update_string(&_55$$35, SL("bind"), &_57$$35, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&existingIntermediateModel, &intermediateModel, "findfirst", NULL, 0, &_55$$35); - zephir_check_call_status(); - if (zephir_is_true(&existingIntermediateModel)) { - ZEPHIR_CPY_WRT(&intermediateModel, &existingIntermediateModel); - } - } - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateFields, &value); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateValue, &recordAfter, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateReferencedFields, &intermediateValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_58$$34, &intermediateModel, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_58$$34))) { - ZEPHIR_CALL_METHOD(&_59$$37, &intermediateModel, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_59$$37, 0, "phalcon/Mvc/Model.zep", 5238); - if (Z_TYPE_P(&_59$$37) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_59$$37), _60$$37) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _60$$37); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_62$$39); - zephir_create_array(&_62$$39, 1, 0); - zephir_array_update_string(&_62$$39, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_62$$39); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_59$$37, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_61$$37, &_59$$37, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_61$$37)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_59$$37, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_63$$41); - zephir_create_array(&_63$$41, 1, 0); - zephir_array_update_string(&_63$$41, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_63$$41); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_59$$37, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_64$$37, 1); - } else { - ZVAL_BOOL(&_64$$37, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_65, 0, &_64$$37); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(NULL, &relatedRecords, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&recordAfter); - } else { - if (UNEXPECTED(Z_TYPE_P(&record) != IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_66$$43, 1); - } else { - ZVAL_BOOL(&_66$$43, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_67, 0, &_66$$43); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_68$$43); - object_init_ex(&_68$$43, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_69$$43); - ZEPHIR_CONCAT_SVSVS(&_69$$43, "There are no defined relations for the model '", &className, "' using alias '", &name, "'"); - ZEPHIR_CALL_METHOD(NULL, &_68$$43, "__construct", &_17, 29, &_69$$43); - zephir_check_call_status(); - zephir_throw_exception_debug(&_68$$43, "phalcon/Mvc/Model.zep", 5250); - ZEPHIR_MM_RESTORE(); - return; - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, related, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, related, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (!zend_is_true(&_4)) { break; } - ZEPHIR_CALL_METHOD(&name, related, "key", NULL, 0); + ZEPHIR_CALL_METHOD(&key, value, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&record, related, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&element, value, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_70$$44, &manager, "getrelationbyalias", &_71, 0, &className, &name); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&relation, &_70$$44); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&_72$$45, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_72$$45, 0)) { - continue; - } - _73$$45 = Z_TYPE_P(&record) != IS_OBJECT; - if (_73$$45) { - _73$$45 = Z_TYPE_P(&record) != IS_ARRAY; - } - if (UNEXPECTED(_73$$45)) { - if (nesting) { - ZVAL_BOOL(&_74$$47, 1); - } else { - ZVAL_BOOL(&_74$$47, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_75, 0, &_74$$47); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Only objects/arrays can be stored as part of has-many/has-one/has-one-through/has-many-to-many relations", "phalcon/Mvc/Model.zep", 5071); - return; - } - ZEPHIR_CALL_METHOD(&columns, &relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, &relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&columns) == IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_76$$48, 1); - } else { - ZVAL_BOOL(&_76$$48, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_77, 0, &_76$$48); - zephir_check_call_status(); - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not implemented", "phalcon/Mvc/Model.zep", 5081); - return; - } - if (Z_TYPE_P(&record) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_78$$49); - zephir_create_array(&_78$$49, 1, 0); - zephir_array_fast_append(&_78$$49, &record); - ZEPHIR_CPY_WRT(&relatedRecords, &_78$$49); - } else { - ZEPHIR_CPY_WRT(&relatedRecords, &record); - } - ZEPHIR_OBS_NVAR(&value); - if (UNEXPECTED(!(zephir_fetch_property_zval(&value, this_ptr, &columns, PH_SILENT_CC)))) { - if (nesting) { - ZVAL_BOOL(&_79$$51, 1); - } else { - ZVAL_BOOL(&_79$$51, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_80, 0, &_79$$51); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_81$$51); - object_init_ex(&_81$$51, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_82$$51); - ZEPHIR_CONCAT_SVS(&_82$$51, "The column '", &columns, "' needs to be present in the model"); - ZEPHIR_CALL_METHOD(NULL, &_81$$51, "__construct", &_17, 29, &_82$$51); - zephir_check_call_status(); - zephir_throw_exception_debug(&_81$$51, "phalcon/Mvc/Model.zep", 5098); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&_83$$45, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - isThrough = zephir_get_boolval(&_83$$45); - if (isThrough) { - ZEPHIR_CALL_METHOD(&intermediateModelName, &relation, "getintermediatemodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateFields, &relation, "getintermediatefields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateReferencedFields, &relation, "getintermediatereferencedfields", NULL, 0); - zephir_check_call_status(); - } - zephir_is_iterable(&relatedRecords, 0, "phalcon/Mvc/Model.zep", 5244); - if (Z_TYPE_P(&relatedRecords) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relatedRecords), _84$$45) - { - ZEPHIR_INIT_NVAR(&recordAfter); - ZVAL_COPY(&recordAfter, _84$$45); - if (!(isThrough)) { - ZEPHIR_CALL_METHOD(NULL, &recordAfter, "writeattribute", NULL, 0, &referencedFields, &value); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_86$$53, &recordAfter, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_86$$53))) { - ZEPHIR_CALL_METHOD(&_87$$55, &recordAfter, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_87$$55, 0, "phalcon/Mvc/Model.zep", 5157); - if (Z_TYPE_P(&_87$$55) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_87$$55), _88$$55) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _88$$55); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_90$$57); - zephir_create_array(&_90$$57, 1, 0); - zephir_array_update_string(&_90$$57, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_90$$57); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_87$$55, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_89$$55, &_87$$55, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_89$$55)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_87$$55, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_91$$59); - zephir_create_array(&_91$$59, 1, 0); - zephir_array_update_string(&_91$$59, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_91$$59); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_87$$55, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_92$$55, 1); - } else { - ZVAL_BOOL(&_92$$55, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_93, 0, &_92$$55); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - if (isThrough) { - ZEPHIR_CALL_METHOD(&_94$$60, &manager, "load", &_95, 0, &intermediateModelName); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&intermediateModel, &_94$$60); - ZEPHIR_CALL_METHOD(&_94$$60, &relation, "gettype", &_96, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_94$$60, 3)) { - ZEPHIR_INIT_NVAR(&_97$$61); - zephir_create_array(&_97$$61, 2, 0); - ZEPHIR_INIT_NVAR(&_98$$61); - ZEPHIR_CONCAT_SVS(&_98$$61, "[", &intermediateFields, "] = ?0"); - zephir_array_fast_append(&_97$$61, &_98$$61); - ZEPHIR_INIT_NVAR(&_99$$61); - zephir_create_array(&_99$$61, 1, 0); - zephir_array_fast_append(&_99$$61, &value); - zephir_array_update_string(&_97$$61, SL("bind"), &_99$$61, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&existingIntermediateModel, &intermediateModel, "findfirst", NULL, 0, &_97$$61); - zephir_check_call_status(); - if (zephir_is_true(&existingIntermediateModel)) { - ZEPHIR_CPY_WRT(&intermediateModel, &existingIntermediateModel); - } - } - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateFields, &value); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateValue, &recordAfter, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateReferencedFields, &intermediateValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_100$$60, &intermediateModel, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_100$$60))) { - ZEPHIR_CALL_METHOD(&_101$$63, &intermediateModel, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_101$$63, 0, "phalcon/Mvc/Model.zep", 5238); - if (Z_TYPE_P(&_101$$63) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_101$$63), _102$$63) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _102$$63); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_104$$65); - zephir_create_array(&_104$$65, 1, 0); - zephir_array_update_string(&_104$$65, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_104$$65); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_101$$63, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_103$$63, &_101$$63, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_103$$63)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_101$$63, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_105$$67); - zephir_create_array(&_105$$67, 1, 0); - zephir_array_update_string(&_105$$67, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_105$$67); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_101$$63, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_106$$63, 1); - } else { - ZVAL_BOOL(&_106$$63, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_107, 0, &_106$$63); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relatedRecords, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_85$$45, &relatedRecords, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_85$$45)) { - break; - } - ZEPHIR_CALL_METHOD(&recordAfter, &relatedRecords, "current", NULL, 0); - zephir_check_call_status(); - if (!(isThrough)) { - ZEPHIR_CALL_METHOD(NULL, &recordAfter, "writeattribute", NULL, 0, &referencedFields, &value); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_108$$68, &recordAfter, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_108$$68))) { - ZEPHIR_CALL_METHOD(&_109$$70, &recordAfter, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_109$$70, 0, "phalcon/Mvc/Model.zep", 5157); - if (Z_TYPE_P(&_109$$70) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_109$$70), _110$$70) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _110$$70); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_112$$72); - zephir_create_array(&_112$$72, 1, 0); - zephir_array_update_string(&_112$$72, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_112$$72); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_109$$70, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_111$$70, &_109$$70, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_111$$70)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_109$$70, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_113$$74); - zephir_create_array(&_113$$74, 1, 0); - zephir_array_update_string(&_113$$74, SL("model"), &recordAfter, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_113$$74); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_109$$70, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_114$$70, 1); - } else { - ZVAL_BOOL(&_114$$70, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_115, 0, &_114$$70); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - if (isThrough) { - ZEPHIR_CALL_METHOD(&_116$$75, &manager, "load", &_117, 0, &intermediateModelName); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&intermediateModel, &_116$$75); - ZEPHIR_CALL_METHOD(&_116$$75, &relation, "gettype", &_118, 0); - zephir_check_call_status(); - if (ZEPHIR_IS_LONG(&_116$$75, 3)) { - ZEPHIR_INIT_NVAR(&_119$$76); - zephir_create_array(&_119$$76, 2, 0); - ZEPHIR_INIT_NVAR(&_120$$76); - ZEPHIR_CONCAT_SVS(&_120$$76, "[", &intermediateFields, "] = ?0"); - zephir_array_fast_append(&_119$$76, &_120$$76); - ZEPHIR_INIT_NVAR(&_121$$76); - zephir_create_array(&_121$$76, 1, 0); - zephir_array_fast_append(&_121$$76, &value); - zephir_array_update_string(&_119$$76, SL("bind"), &_121$$76, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&existingIntermediateModel, &intermediateModel, "findfirst", NULL, 0, &_119$$76); - zephir_check_call_status(); - if (zephir_is_true(&existingIntermediateModel)) { - ZEPHIR_CPY_WRT(&intermediateModel, &existingIntermediateModel); - } - } - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateFields, &value); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateValue, &recordAfter, "readattribute", NULL, 0, &referencedFields); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &intermediateModel, "writeattribute", NULL, 0, &intermediateReferencedFields, &intermediateValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_122$$75, &intermediateModel, "save", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_122$$75))) { - ZEPHIR_CALL_METHOD(&_123$$78, &intermediateModel, "getmessages", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_123$$78, 0, "phalcon/Mvc/Model.zep", 5238); - if (Z_TYPE_P(&_123$$78) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_123$$78), _124$$78) - { - ZEPHIR_INIT_NVAR(&message); - ZVAL_COPY(&message, _124$$78); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_126$$80); - zephir_create_array(&_126$$80, 1, 0); - zephir_array_update_string(&_126$$80, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_126$$80); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_123$$78, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_125$$78, &_123$$78, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_125$$78)) { - break; - } - ZEPHIR_CALL_METHOD(&message, &_123$$78, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&message) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_127$$82); - zephir_create_array(&_127$$82, 1, 0); - zephir_array_update_string(&_127$$82, SL("model"), &intermediateModel, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &message, "setmetadata", NULL, 0, &_127$$82); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_26, 0, &message); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_123$$78, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&message); - if (nesting) { - ZVAL_BOOL(&_128$$78, 1); - } else { - ZVAL_BOOL(&_128$$78, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_129, 0, &_128$$78); - zephir_check_call_status(); - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_METHOD(NULL, &relatedRecords, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&recordAfter); - } else { - if (UNEXPECTED(Z_TYPE_P(&record) != IS_ARRAY)) { - if (nesting) { - ZVAL_BOOL(&_130$$84, 1); - } else { - ZVAL_BOOL(&_130$$84, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "rollback", &_131, 0, &_130$$84); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_132$$84); - object_init_ex(&_132$$84, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_133$$84); - ZEPHIR_CONCAT_SVSVS(&_133$$84, "There are no defined relations for the model '", &className, "' using alias '", &name, "'"); - ZEPHIR_CALL_METHOD(NULL, &_132$$84, "__construct", &_17, 29, &_133$$84); - zephir_check_call_status(); - zephir_throw_exception_debug(&_132$$84, "phalcon/Mvc/Model.zep", 5250); - ZEPHIR_MM_RESTORE(); - return; - } - } - ZEPHIR_CALL_METHOD(NULL, related, "next", NULL, 0); + zephir_cast_to_string(&_11$$5, &element); + ZEPHIR_CPY_WRT(&element, &_11$$5); + zephir_array_fetch_string(&_12$$5, "es, SL("prefix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 673); + zephir_array_fetch_string(&_13$$5, "es, SL("suffix"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 673); + ZEPHIR_INIT_NVAR(&_14$$5); + ZEPHIR_CONCAT_VVV(&_14$$5, &_12$$5, &element, &_13$$5); + zephir_array_update_zval(&elements, &key, &_14$$5, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, value, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&record); - ZEPHIR_INIT_NVAR(&name); - if (nesting) { - ZVAL_BOOL(&_134, 1); - } else { - ZVAL_BOOL(&_134, 0); - } - ZEPHIR_CALL_METHOD(NULL, connection, "commit", NULL, 0, &_134); - zephir_check_call_status(); - RETURN_MM_BOOL(1); + ZEPHIR_INIT_NVAR(&element); + ZEPHIR_INIT_NVAR(&key); + zephir_fast_join_str(return_value, SL(", "), &elements); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, allowEmptyStringValues) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, rollBack) { + zval result, _0, _1, _2, _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, __$true, keysAttributes, attribute, *_0, _1, _2; - zval attributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&keysAttributes); - ZVAL_UNDEF(&attribute); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "rollBack"); + ZEPHIR_CALL_METHOD(NULL, &_0, "start", NULL, 0, &_1); + zephir_check_call_status(); + zephir_read_property(&_2, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &_2, "rollback", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_3, this_ptr, ZEND_STRL("profiler"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_3, "finish", NULL, 0); + zephir_check_call_status(); + RETURN_CCTOR(&result); +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, setAttribute) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *attribute_param = NULL, *value, value_sub, _0, _1; + zend_long attribute, ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_LONG(attribute) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); + zephir_fetch_params(1, 2, 0, &attribute_param, &value); + attribute = zephir_get_intval(attribute_param); - ZEPHIR_INIT_VAR(&keysAttributes); - array_init(&keysAttributes); - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model.zep", 5291); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _0) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _0); - zephir_array_update_zval(&keysAttributes, &attribute, &__$true, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_update_zval(&keysAttributes, &attribute, &__$true, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "getmodelsmetadata", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_2, "setemptystringattributes", NULL, 0, this_ptr, &keysAttributes); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, attribute); + ZEPHIR_RETURN_CALL_METHOD(&_0, "setattribute", NULL, 0, &_1, value); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, cancelOperation) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, setProfiler) { - zval _0, _1$$3, _2$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zval *profiler, profiler_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&profiler_sub); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(profiler, phalcon_datamapper_pdo_profiler_profilerinterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif - ZEPHIR_MM_GROW(); + zephir_fetch_params_without_memory_grow(1, 0, &profiler); - zephir_read_property(&_0, this_ptr, ZEND_STRL("operationMade"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_LONG(&_0, 3)) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "notDeleted"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_1$$3); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_VAR(&_2$$4); - ZVAL_STRING(&_2$$4, "notSaved"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "fireevent", NULL, 0, &_2$$4); - zephir_check_call_status(); - } - ZEPHIR_MM_RESTORE(); + + zephir_update_property_zval(this_ptr, ZEND_STRL("profiler"), profiler); } -static PHP_METHOD(Phalcon_Mvc_Model, belongsTo) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, performBind) { + zend_bool _1$$4; + zval _8, _5$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referenceModel; - zval *fields, fields_sub, *referenceModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, _0; + zend_long ZEPHIR_LAST_CALL_STATUS, _0$$3; + zval *statement, statement_sub, *name, name_sub, *arguments, arguments_sub, key, parameters, type, _7, _9, _2$$4, _3$$7, _4$$7, _6$$8; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&referenceModel); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&statement_sub); + ZVAL_UNDEF(&name_sub); + ZVAL_UNDEF(&arguments_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(¶meters); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$7); + ZVAL_UNDEF(&_4$$7); + ZVAL_UNDEF(&_6$$8); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_5$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referenceModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_OBJECT_OF_CLASS(statement, zephir_get_internal_ce(SL("pdostatement"))) + Z_PARAM_ZVAL(name) + Z_PARAM_ZVAL(arguments) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &fields, &referenceModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referenceModel_param) != IS_STRING && Z_TYPE_P(referenceModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(referenceModel_param) == IS_STRING)) { - zephir_get_strval(&referenceModel, referenceModel_param); - } else { - ZEPHIR_INIT_VAR(&referenceModel); + zephir_fetch_params(1, 3, 0, &statement, &name, &arguments); + ZEPHIR_SEPARATE_PARAM(arguments); + + + ZEPHIR_CPY_WRT(&key, name); + if (Z_TYPE_P(&key) == IS_LONG) { + _0$$3 = (zephir_get_numberval(&key) + 1); + ZEPHIR_INIT_NVAR(&key); + ZVAL_LONG(&key, _0$$3); } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (Z_TYPE_P(arguments) == IS_ARRAY) { + if (zephir_array_isset_long(arguments, 1)) { + ZEPHIR_OBS_VAR(&type); + zephir_array_fetch_long(&type, arguments, 1, PH_NOISY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 746); + } else { + ZEPHIR_INIT_NVAR(&type); + ZVAL_LONG(&type, 2); + } + _1$$4 = ZEPHIR_IS_LONG_IDENTICAL(&type, 5); + if (_1$$4) { + ZEPHIR_OBS_VAR(&_2$$4); + zephir_array_fetch_long(&_2$$4, arguments, 0, PH_NOISY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 751); + _1$$4 = ((Z_TYPE_P(&_2$$4) == IS_TRUE || Z_TYPE_P(&_2$$4) == IS_FALSE) == 1); + } + if (_1$$4) { + ZEPHIR_INIT_VAR(&_3$$7); + zephir_array_fetch_long(&_4$$7, arguments, 0, PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Connection/AbstractConnection.zep", 752); + if (zephir_is_true(&_4$$7)) { + ZEPHIR_INIT_NVAR(&_3$$7); + ZVAL_STRING(&_3$$7, "1"); + } else { + ZEPHIR_INIT_NVAR(&_3$$7); + ZVAL_STRING(&_3$$7, "0"); + } + zephir_array_update_long(arguments, 0, &_3$$7, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + } + ZEPHIR_INIT_VAR(&_5$$4); + zephir_create_array(&_5$$4, 1, 0); + zephir_array_fast_append(&_5$$4, &key); + ZEPHIR_INIT_VAR(¶meters); + zephir_fast_array_merge(¶meters, &_5$$4, arguments); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&_6$$8); + zephir_create_array(&_6$$8, 2, 0); + zephir_array_fast_append(&_6$$8, &key); + zephir_array_fast_append(&_6$$8, arguments); + ZEPHIR_CPY_WRT(¶meters, &_6$$8); } - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "addbelongsto", NULL, 0, this_ptr, fields, &referenceModel, referencedFields, &options); + ZEPHIR_INIT_VAR(&_7); + ZEPHIR_INIT_VAR(&_8); + zephir_create_array(&_8, 2, 0); + zephir_array_fast_append(&_8, statement); + ZEPHIR_INIT_VAR(&_9); + ZVAL_STRING(&_9, "bindValue"); + zephir_array_fast_append(&_8, &_9); + ZEPHIR_CALL_USER_FUNC_ARRAY(&_7, &_8, ¶meters); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, getPreparedQuery) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_AbstractConnection, fetchData) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *params, params_sub, *limit = NULL, limit_sub, __$null, builder, bindParams, bindTypes, transaction, cache, manager, query, container, _1, _2, _3$$5, _4$$7; + zval arguments, values, _0; + zval *method_param = NULL, *arguments_param = NULL, *statement_param = NULL, *values_param = NULL, result, sth; + zval method, statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶ms_sub); - ZVAL_UNDEF(&limit_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&builder); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&transaction); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&query); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_4$$7); + ZVAL_UNDEF(&method); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&sth); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ZVAL(params) + ZEND_PARSE_PARAMETERS_START(3, 4) + Z_PARAM_STR(method) + Z_PARAM_ARRAY(arguments) + Z_PARAM_STR(statement) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(limit) + Z_PARAM_ARRAY(values) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, ¶ms, &limit); - if (!limit) { - limit = &limit_sub; - limit = &__$null; + zephir_fetch_params(1, 3, 1, &method_param, &arguments_param, &statement_param, &values_param); + zephir_get_strval(&method, method_param); + zephir_get_arrval(&arguments, arguments_param); + zephir_get_strval(&statement, statement_param); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); + } else { + zephir_get_arrval(&values, values_param); } - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_0, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "modelsManager"); - ZEPHIR_CALL_METHOD(&_1, &container, "getshared", NULL, 0, &_2); + ZEPHIR_CALL_METHOD(&sth, this_ptr, "perform", NULL, 0, &statement, &values); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - ZEPHIR_CALL_METHOD(&_1, &manager, "createbuilder", NULL, 0, params); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 2, 0); + zephir_array_fast_append(&_0, &sth); + zephir_array_fast_append(&_0, &method); + ZEPHIR_INIT_VAR(&result); + ZEPHIR_CALL_USER_FUNC_ARRAY(&result, &_0, &arguments); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&builder, &_1); - ZEPHIR_INIT_NVAR(&_2); - zephir_get_called_class(&_2); - ZEPHIR_CALL_METHOD(NULL, &builder, "from", NULL, 0, &_2); - zephir_check_call_status(); - if (Z_TYPE_P(limit) != IS_NULL) { - ZEPHIR_CALL_METHOD(NULL, &builder, "limit", NULL, 0, limit); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&_1, &builder, "getquery", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&query, &_1); - ZEPHIR_OBS_VAR(&bindParams); - if (zephir_array_isset_string_fetch(&bindParams, params, SL("bind"), 0)) { - if (Z_TYPE_P(&bindParams) == IS_ARRAY) { - ZVAL_BOOL(&_3$$5, 1); - ZEPHIR_CALL_METHOD(NULL, &query, "setbindparams", NULL, 0, &bindParams, &_3$$5); - zephir_check_call_status(); - } - ZEPHIR_OBS_VAR(&bindTypes); - if (zephir_array_isset_string_fetch(&bindTypes, params, SL("bindTypes"), 0)) { - if (Z_TYPE_P(&bindTypes) == IS_ARRAY) { - ZVAL_BOOL(&_4$$7, 1); - ZEPHIR_CALL_METHOD(NULL, &query, "setbindtypes", NULL, 0, &bindTypes, &_4$$7); - zephir_check_call_status(); - } - } - } - ZEPHIR_OBS_VAR(&transaction); - if (zephir_array_isset_string_fetch(&transaction, params, SL("transaction"), 0)) { - if (zephir_instance_of_ev(&transaction, phalcon_mvc_model_transactioninterface_ce)) { - ZEPHIR_CALL_METHOD(NULL, &query, "settransaction", NULL, 0, &transaction); - zephir_check_call_status(); - } - } - ZEPHIR_OBS_VAR(&cache); - if (zephir_array_isset_string_fetch(&cache, params, SL("cache"), 0)) { - ZEPHIR_CALL_METHOD(NULL, &query, "cache", NULL, 0, &cache); - zephir_check_call_status(); + if (Z_TYPE_P(&result) != IS_ARRAY) { + ZEPHIR_INIT_NVAR(&result); + array_init(&result); } - RETURN_CCTOR(&query); + RETURN_CCTOR(&result); } -static PHP_METHOD(Phalcon_Mvc_Model, hasMany) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\DataMapper\\Pdo\\Connection, ConnectionInterface, phalcon, datamapper_pdo_connection_connectioninterface, phalcon_datamapper_pdo_connection_connectioninterface_method_entry); + + zend_class_implements(phalcon_datamapper_pdo_connection_connectioninterface_ce, 1, phalcon_datamapper_pdo_connection_pdointerface_ce); + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, connect); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, disconnect); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchAffected); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchAll); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchAssoc); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchColumn); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchGroup); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchObject); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchObjects); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchOne); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchPairs); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, fetchValue); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, getAdapter); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, getProfiler); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, isConnected); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, perform); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_ConnectionInterface, setProfiler); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Connection_Decorated) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Pdo\\Connection, Decorated, phalcon, datamapper_pdo_connection_decorated, phalcon_datamapper_pdo_connection_abstractconnection_ce, phalcon_datamapper_pdo_connection_decorated_method_entry, 0); + + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_Decorated, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referenceModel; - zval *fields, fields_sub, *referenceModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, _0; + zval *pdo, pdo_sub, *profiler = NULL, profiler_sub, __$null; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&referenceModel); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&pdo_sub); + ZVAL_UNDEF(&profiler_sub); + ZVAL_NULL(&__$null); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referenceModel) - Z_PARAM_ZVAL(referencedFields) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_OBJECT_OF_CLASS(pdo, php_pdo_get_dbh_ce()) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(profiler, phalcon_datamapper_pdo_profiler_profilerinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &fields, &referenceModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referenceModel_param) != IS_STRING && Z_TYPE_P(referenceModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(referenceModel_param) == IS_STRING)) { - zephir_get_strval(&referenceModel, referenceModel_param); - } else { - ZEPHIR_INIT_VAR(&referenceModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 1, 1, &pdo, &profiler); + if (!profiler) { + profiler = &profiler_sub; + ZEPHIR_CPY_WRT(profiler, &__$null); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_SEPARATE_PARAM(profiler); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "addhasmany", NULL, 0, this_ptr, fields, &referenceModel, referencedFields, &options); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdo"), pdo); + if (Z_TYPE_P(profiler) == IS_NULL) { + ZEPHIR_INIT_NVAR(profiler); + object_init_ex(profiler, phalcon_datamapper_pdo_profiler_profiler_ce); + ZEPHIR_CALL_METHOD(NULL, profiler, "__construct", NULL, 196); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "setprofiler", NULL, 0, profiler); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, hasManyToMany) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_Decorated, connect) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval intermediateModel, referenceModel; - zval *fields, fields_sub, *intermediateModel_param = NULL, *intermediateFields, intermediateFields_sub, *intermediateReferencedFields, intermediateReferencedFields_sub, *referenceModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&intermediateFields_sub); - ZVAL_UNDEF(&intermediateReferencedFields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&referenceModel); - ZVAL_UNDEF(&options); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(6, 7) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(intermediateModel) - Z_PARAM_ZVAL(intermediateFields) - Z_PARAM_ZVAL(intermediateReferencedFields) - Z_PARAM_STR(referenceModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) - ZEND_PARSE_PARAMETERS_END(); + + +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Connection_Decorated, disconnect) +{ + zval *this_ptr = getThis(); + + + + ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_datamapper_pdo_exception_cannotdisconnect_ce, "Cannot disconnect a Decorated connection instance", "phalcon/DataMapper/Pdo/Connection/Decorated.zep", 66); + return; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 6, 1, &fields, &intermediateModel_param, &intermediateFields, &intermediateReferencedFields, &referenceModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(intermediateModel_param) != IS_STRING && Z_TYPE_P(intermediateModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'intermediateModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(intermediateModel_param) == IS_STRING)) { - zephir_get_strval(&intermediateModel, intermediateModel_param); - } else { - ZEPHIR_INIT_VAR(&intermediateModel); - } - if (UNEXPECTED(Z_TYPE_P(referenceModel_param) != IS_STRING && Z_TYPE_P(referenceModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(referenceModel_param) == IS_STRING)) { - zephir_get_strval(&referenceModel, referenceModel_param); - } else { - ZEPHIR_INIT_VAR(&referenceModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); - } else { - zephir_get_arrval(&options, options_param); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "addhasmanytomany", NULL, 0, this_ptr, fields, &intermediateModel, intermediateFields, intermediateReferencedFields, &referenceModel, referencedFields, &options); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Connection_PdoInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\DataMapper\\Pdo\\Connection, PdoInterface, phalcon, datamapper_pdo_connection_pdointerface, phalcon_datamapper_pdo_connection_pdointerface_method_entry); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model, hasOne) +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, beginTransaction); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, commit); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, errorCode); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, errorInfo); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, exec); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, getAttribute); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, getAvailableDrivers); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, inTransaction); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, lastInsertId); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, prepare); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, query); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, quote); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, rollBack); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Connection_PdoInterface, setAttribute); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Exception_CannotDisconnect) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Pdo\\Exception, CannotDisconnect, phalcon, datamapper_pdo_exception_cannotdisconnect, phalcon_datamapper_pdo_exception_exception_ce, NULL, 0); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Exception_ConnectionNotFound) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Pdo\\Exception, ConnectionNotFound, phalcon, datamapper_pdo_exception_connectionnotfound, phalcon_datamapper_pdo_exception_exception_ce, NULL, 0); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Exception_Exception) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\DataMapper\\Pdo\\Exception, Exception, phalcon, datamapper_pdo_exception_exception, zend_ce_exception, NULL, 0); + + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Pdo\\Profiler, MemoryLogger, phalcon, datamapper_pdo_profiler_memorylogger, phalcon_datamapper_pdo_profiler_memorylogger_method_entry, 0); + + zend_declare_property_null(phalcon_datamapper_pdo_profiler_memorylogger_ce, SL("messages"), ZEND_ACC_PROTECTED); + phalcon_datamapper_pdo_profiler_memorylogger_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Pdo_Profiler_MemoryLogger; + + zend_class_implements(phalcon_datamapper_pdo_profiler_memorylogger_ce, 1, phalcon_logger_loggerinterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, alert) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referenceModel; - zval *fields, fields_sub, *referenceModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, _0; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&referenceModel); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referenceModel) - Z_PARAM_ZVAL(referencedFields) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &fields, &referenceModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referenceModel_param) != IS_STRING && Z_TYPE_P(referenceModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(referenceModel_param) == IS_STRING)) { - zephir_get_strval(&referenceModel, referenceModel_param); - } else { - ZEPHIR_INIT_VAR(&referenceModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - zephir_get_arrval(&options, options_param); + zephir_get_arrval(&context, context_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "addhasone", NULL, 0, this_ptr, fields, &referenceModel, referencedFields, &options); + ZVAL_LONG(&_0, 2); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, hasOneThrough) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, critical) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval intermediateModel, referenceModel; - zval *fields, fields_sub, *intermediateModel_param = NULL, *intermediateFields, intermediateFields_sub, *intermediateReferencedFields, intermediateReferencedFields_sub, *referenceModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, _0; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&intermediateFields_sub); - ZVAL_UNDEF(&intermediateReferencedFields_sub); - ZVAL_UNDEF(&referencedFields_sub); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&referenceModel); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(6, 7) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(intermediateModel) - Z_PARAM_ZVAL(intermediateFields) - Z_PARAM_ZVAL(intermediateReferencedFields) - Z_PARAM_STR(referenceModel) - Z_PARAM_ZVAL(referencedFields) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 6, 1, &fields, &intermediateModel_param, &intermediateFields, &intermediateReferencedFields, &referenceModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(intermediateModel_param) != IS_STRING && Z_TYPE_P(intermediateModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'intermediateModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(intermediateModel_param) == IS_STRING)) { - zephir_get_strval(&intermediateModel, intermediateModel_param); - } else { - ZEPHIR_INIT_VAR(&intermediateModel); - } - if (UNEXPECTED(Z_TYPE_P(referenceModel_param) != IS_STRING && Z_TYPE_P(referenceModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceModel' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(referenceModel_param) == IS_STRING)) { - zephir_get_strval(&referenceModel, referenceModel_param); - } else { - ZEPHIR_INIT_VAR(&referenceModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - zephir_get_arrval(&options, options_param); + zephir_get_arrval(&context, context_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "addhasonethrough", NULL, 0, this_ptr, fields, &intermediateModel, intermediateFields, intermediateReferencedFields, &referenceModel, referencedFields, &options); + ZVAL_LONG(&_0, 1); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, keepSnapshots) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, debug) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *keepSnapshot_param = NULL, _0, _1; - zend_bool keepSnapshot; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(keepSnapshot) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &keepSnapshot_param); - keepSnapshot = zephir_get_boolval(keepSnapshot_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - if (keepSnapshot) { - ZVAL_BOOL(&_1, 1); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZVAL_BOOL(&_1, 0); + zephir_get_arrval(&context, context_param); } - ZEPHIR_CALL_METHOD(NULL, &_0, "keepsnapshots", NULL, 0, this_ptr, &_1); + + + ZVAL_LONG(&_0, 7); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, setSchema) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, emergency) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *schema_param = NULL, _0; - zval schema; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(schema) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &schema_param); - if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { - zephir_get_strval(&schema, schema_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&schema); + zephir_get_arrval(&context, context_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setmodelschema", NULL, 0, this_ptr, &schema); + ZVAL_LONG(&_0, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, setSource) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, error) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *source_param = NULL, _0; - zval source; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&source); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(source) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &source_param); - if (UNEXPECTED(Z_TYPE_P(source_param) != IS_STRING && Z_TYPE_P(source_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'source' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(source_param) == IS_STRING)) { - zephir_get_strval(&source, source_param); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZEPHIR_INIT_VAR(&source); + zephir_get_arrval(&context, context_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &_0, "setmodelsource", NULL, 0, this_ptr, &source); + ZVAL_LONG(&_0, 3); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, skipAttributes) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, getAdapter) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL; - zval attributes; + zval *name_param = NULL; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&name); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &name_param); + zephir_get_strval(&name, name_param); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "skipattributesoncreate", NULL, 0, &attributes); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "skipattributesonupdate", NULL, 0, &attributes); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + object_init_ex(return_value, phalcon_logger_adapter_noop_ce); + if (zephir_has_constructor(return_value)) { + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 0); + zephir_check_call_status(); + } + + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnCreate) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, getAdapters) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, __$null, attribute, *_0, _1, _2; - zval attributes, keysAttributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&keysAttributes); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); + array_init(return_value); + return; +} +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, getLogLevel) +{ + zval *this_ptr = getThis(); - ZEPHIR_INIT_VAR(&keysAttributes); - array_init(&keysAttributes); - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model.zep", 5750); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _0) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _0); - zephir_array_update_zval(&keysAttributes, &attribute, &__$null, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_update_zval(&keysAttributes, &attribute, &__$null, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_2, "setautomaticcreateattributes", NULL, 0, this_ptr, &keysAttributes); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + + + RETURN_LONG(8); } -static PHP_METHOD(Phalcon_Mvc_Model, skipAttributesOnUpdate) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, getMessages) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *attributes_param = NULL, __$null, attribute, *_0, _1, _2; - zval attributes, keysAttributes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&keysAttributes); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(attributes) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &attributes_param); - ZEPHIR_OBS_COPY_OR_DUP(&attributes, attributes_param); + RETURN_MEMBER(getThis(), "messages"); +} +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, getName) +{ + zval *this_ptr = getThis(); - ZEPHIR_INIT_VAR(&keysAttributes); - array_init(&keysAttributes); - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model.zep", 5785); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _0) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _0); - zephir_array_update_zval(&keysAttributes, &attribute, &__$null, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &attributes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_update_zval(&keysAttributes, &attribute, &__$null, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - ZEPHIR_CALL_METHOD(&_2, this_ptr, "getmodelsmetadata", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_2, "setautomaticupdateattributes", NULL, 0, this_ptr, &keysAttributes); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + + + RETURN_STRING("memory logger"); } -static PHP_METHOD(Phalcon_Mvc_Model, useDynamicUpdate) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, info) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *dynamicUpdate_param = NULL, _0, _1; - zend_bool dynamicUpdate; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(dynamicUpdate) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &dynamicUpdate_param); - dynamicUpdate = zephir_get_boolval(dynamicUpdate_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsManager"), PH_NOISY_CC | PH_READONLY); - if (dynamicUpdate) { - ZVAL_BOOL(&_1, 1); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); } else { - ZVAL_BOOL(&_1, 0); + zephir_get_arrval(&context, context_param); } - ZEPHIR_CALL_METHOD(NULL, &_0, "usedynamicupdate", NULL, 0, this_ptr, &_1); + + + ZVAL_LONG(&_0, 6); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, validate) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, notice) { - zend_object_iterator *_1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_7 = NULL, *_8 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *validator, validator_sub, messages, message, _0, _2$$4, _3$$4, _4$$4, _5$$4, _6$$4; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); - ZVAL_UNDEF(&validator_sub); - ZVAL_UNDEF(&messages); ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&context); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(validator, phalcon_filter_validation_validationinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &validator); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - ZVAL_NULL(&_0); - ZEPHIR_CALL_METHOD(&messages, validator, "validate", NULL, 0, &_0, this_ptr); + ZVAL_LONG(&_0, 5); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); zephir_check_call_status(); - if (((Z_TYPE_P(&messages) == IS_TRUE || Z_TYPE_P(&messages) == IS_FALSE) == 1)) { - RETURN_CCTOR(&messages); - } - _1 = zephir_get_iterator(&messages); - _1->funcs->rewind(_1); - for (;_1->funcs->valid(_1) == SUCCESS && !EG(exception); _1->funcs->move_forward(_1)) { - { - ZEPHIR_ITERATOR_COPY(&message, _1); - } - ZEPHIR_INIT_NVAR(&_2$$4); - object_init_ex(&_2$$4, phalcon_messages_message_ce); - ZEPHIR_CALL_METHOD(&_3$$4, &message, "getmessage", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4$$4, &message, "getfield", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_5$$4, &message, "gettype", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_6$$4, &message, "getcode", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &_2$$4, "__construct", &_7, 6, &_3$$4, &_4$$4, &_5$$4, &_6$$4); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "appendmessage", &_8, 0, &_2$$4); - zephir_check_call_status(); - } - zend_iterator_dtor(_1); - RETURN_MM_BOOL(!(zephir_fast_count_int(&messages))); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, validationHasFailed) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, warning) { - zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval context; + zval *message_param = NULL, *context_param = NULL, _0; + zval message; zval *this_ptr = getThis(); + ZVAL_UNDEF(&message); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&context); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) + ZEND_PARSE_PARAMETERS_END(); +#endif + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("errorMessages"), PH_NOISY_CC | PH_READONLY); - RETURN_BOOL(zephir_fast_count_int(&_0) > 0); + ZVAL_LONG(&_0, 4); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "log", NULL, 0, &_0, &message, &context); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model, caseInsensitiveColumnMap) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_MemoryLogger, log) { + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *columnMap, columnMap_sub, *key, key_sub, cmKey, _0, *_1, _2, _3$$3, _4$$3, _5$$5, _6$$5; + zval context, replace; + zval message; + zval *level, level_sub, *message_param = NULL, *context_param = NULL, key, value, *_0, _1, _6, _4$$3, _5$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&columnMap_sub); - ZVAL_UNDEF(&key_sub); - ZVAL_UNDEF(&cmKey); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&level_sub); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_6); ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&message); + ZVAL_UNDEF(&context); + ZVAL_UNDEF(&replace); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ZVAL(columnMap) - Z_PARAM_ZVAL(key) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_ZVAL(level) + Z_PARAM_STR(message) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(context) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &columnMap, &key); + zephir_fetch_params(1, 2, 1, &level, &message_param, &context_param); + zephir_get_strval(&message, message_param); + if (!context_param) { + ZEPHIR_INIT_VAR(&context); + array_init(&context); + } else { + zephir_get_arrval(&context, context_param); + } - ZEPHIR_INIT_VAR(&_0); - zephir_array_keys(&_0, columnMap); - zephir_is_iterable(&_0, 0, "phalcon/Mvc/Model.zep", 5921); - if (Z_TYPE_P(&_0) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) + ZEPHIR_INIT_VAR(&replace); + array_init(&replace); + zephir_is_iterable(&context, 0, "phalcon/DataMapper/Pdo/Profiler/MemoryLogger.zep", 172); + if (Z_TYPE_P(&context) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&context), _2, _3, _0) { - ZEPHIR_INIT_NVAR(&cmKey); - ZVAL_COPY(&cmKey, _1); - ZEPHIR_INIT_NVAR(&_3$$3); - zephir_fast_strtolower(&_3$$3, &cmKey); - ZEPHIR_INIT_NVAR(&_4$$3); - zephir_fast_strtolower(&_4$$3, key); - if (ZEPHIR_IS_EQUAL(&_3$$3, &_4$$3)) { - RETURN_CCTOR(&cmKey); + ZEPHIR_INIT_NVAR(&key); + if (_3 != NULL) { + ZVAL_STR_COPY(&key, _3); + } else { + ZVAL_LONG(&key, _2); } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + ZEPHIR_INIT_NVAR(&_4$$3); + ZEPHIR_CONCAT_SVS(&_4$$3, "{", &key, "}"); + zephir_array_update_zval(&replace, &_4$$3, &value, PH_COPY | PH_SEPARATE); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &context, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_1, &context, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (!zend_is_true(&_1)) { break; } - ZEPHIR_CALL_METHOD(&cmKey, &_0, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&key, &context, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_5$$5); - zephir_fast_strtolower(&_5$$5, &cmKey); - ZEPHIR_INIT_NVAR(&_6$$5); - zephir_fast_strtolower(&_6$$5, key); - if (ZEPHIR_IS_EQUAL(&_5$$5, &_6$$5)) { - RETURN_CCTOR(&cmKey); - } - ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&value, &context, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_5$$4); + ZEPHIR_CONCAT_SVS(&_5$$4, "{", &key, "}"); + zephir_array_update_zval(&replace, &_5$$4, &value, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &context, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&cmKey); - RETVAL_ZVAL(key, 1, 0); - RETURN_MM(); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + ZEPHIR_CALL_FUNCTION(&_6, "strtr", NULL, 5, &message, &replace); + zephir_check_call_status(); + zephir_update_property_array_append(this_ptr, SL("messages"), &_6); + ZEPHIR_MM_RESTORE(); } -zend_object *zephir_init_properties_Phalcon_Mvc_Model(zend_class_entry *class_type) +zend_object *zephir_init_properties_Phalcon_DataMapper_Pdo_Profiler_MemoryLogger(zend_class_entry *class_type) { - zval _0, _2, _4, _6, _8, _10, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8; + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); ZEPHIR_MM_GROW(); @@ -47991,41 +43640,11 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Model(zend_class_entry *class_ty { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("uniqueParams"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("messages"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("uniqueParams"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("snapshot"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("snapshot"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("oldSnapshot"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("oldSnapshot"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("related"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("related"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("errorMessages"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("errorMessages"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("dirtyRelated"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("dirtyRelated"), &_11$$8); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("messages"), &_1$$3); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -48042,1097 +43661,967 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Model(zend_class_entry *class_ty -ZEPHIR_INIT_CLASS(Phalcon_Mvc_ModelInterface) +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Profiler_Profiler) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, ModelInterface, phalcon, mvc_modelinterface, phalcon_mvc_modelinterface_method_entry); + ZEPHIR_REGISTER_CLASS(Phalcon\\DataMapper\\Pdo\\Profiler, Profiler, phalcon, datamapper_pdo_profiler_profiler, phalcon_datamapper_pdo_profiler_profiler_method_entry, 0); + + zend_declare_property_bool(phalcon_datamapper_pdo_profiler_profiler_ce, SL("active"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_profiler_profiler_ce, SL("context"), ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_datamapper_pdo_profiler_profiler_ce, SL("logFormat"), "", ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_datamapper_pdo_profiler_profiler_ce, SL("logLevel"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_datamapper_pdo_profiler_profiler_ce, SL("logger"), ZEND_ACC_PROTECTED); + phalcon_datamapper_pdo_profiler_profiler_ce->create_object = zephir_init_properties_Phalcon_DataMapper_Pdo_Profiler_Profiler; + zend_class_implements(phalcon_datamapper_pdo_profiler_profiler_ce, 1, phalcon_datamapper_pdo_profiler_profilerinterface_ce); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, appendMessage); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, assign); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, average); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, cloneResult); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, cloneResultMap); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, cloneResultMapHydrate); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, count); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, create); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, delete); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, find); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, findFirst); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, fireEvent); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, fireEventCancel); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getDirtyState); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getMessages); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getModelsMetaData); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getOperationMade); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getReadConnection); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getReadConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getRelated); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getSchema); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getSource); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getWriteConnection); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, getWriteConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, maximum); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, minimum); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, query); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, refresh); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, save); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setDirtyState); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setReadConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setSnapshotData); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setTransaction); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, setWriteConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, skipOperation); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, sum); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, validationHasFailed); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModelInterface, update); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_ModuleDefinitionInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, ModuleDefinitionInterface, phalcon, mvc_moduledefinitioninterface, phalcon_mvc_moduledefinitioninterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModuleDefinitionInterface, registerAutoloaders); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ModuleDefinitionInterface, registerServices); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Router) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Router, phalcon, mvc_router, phalcon_di_abstractinjectionaware_ce, phalcon_mvc_router_method_entry, 0); - - zend_declare_property_string(phalcon_mvc_router_ce, SL("action"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("controller"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("defaultAction"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("defaultController"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("defaultModule"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("defaultNamespace"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("defaultParams"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("keyRouteNames"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("keyRouteIds"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("matchedRoute"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("matches"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("module"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_router_ce, SL("namespaceName"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("notFoundPaths"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("params"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_router_ce, SL("removeExtraSlashes"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_router_ce, SL("routes"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_router_ce, SL("wasMatched"), 0, ZEND_ACC_PROTECTED); - phalcon_mvc_router_ce->create_object = zephir_init_properties_Phalcon_Mvc_Router; - zephir_declare_class_constant_long(phalcon_mvc_router_ce, SL("POSITION_FIRST"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_router_ce, SL("POSITION_LAST"), 1); - - zend_class_implements(phalcon_mvc_router_ce, 1, phalcon_mvc_routerinterface_ce); - zend_class_implements(phalcon_mvc_router_ce, 1, phalcon_events_eventsawareinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Mvc_Router, getKeyRouteNames) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "keyRouteNames"); -} - -static PHP_METHOD(Phalcon_Mvc_Router, setKeyRouteNames) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *keyRouteNames_param = NULL; - zval keyRouteNames; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *logger = NULL, logger_sub, __$null, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&keyRouteNames); + ZVAL_UNDEF(&logger_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(keyRouteNames) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(logger, phalcon_logger_loggerinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &keyRouteNames_param); - zephir_get_arrval(&keyRouteNames, keyRouteNames_param); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("keyRouteNames"), &keyRouteNames); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_Router, getKeyRouteIds) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "keyRouteIds"); -} - -static PHP_METHOD(Phalcon_Mvc_Router, setKeyRouteIds) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *keyRouteIds_param = NULL; - zval keyRouteIds; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&keyRouteIds); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(keyRouteIds) - ZEND_PARSE_PARAMETERS_END(); -#endif - + zephir_fetch_params(1, 0, 1, &logger); + if (!logger) { + logger = &logger_sub; + ZEPHIR_CPY_WRT(logger, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(logger); + } - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &keyRouteIds_param); - zephir_get_arrval(&keyRouteIds, keyRouteIds_param); + if (Z_TYPE_P(logger) == IS_NULL) { + ZEPHIR_INIT_NVAR(logger); + object_init_ex(logger, phalcon_datamapper_pdo_profiler_memorylogger_ce); + if (zephir_has_constructor(logger)) { + ZEPHIR_CALL_METHOD(NULL, logger, "__construct", NULL, 0); + zephir_check_call_status(); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("keyRouteIds"), &keyRouteIds); - RETURN_THIS(); + } + ZEPHIR_INIT_VAR(&_0); + ZEPHIR_INIT_NVAR(&_0); + ZVAL_STRING(&_0, "{method} ({duration}s): {statement} {backtrace}"); + zephir_update_property_zval(this_ptr, ZEND_STRL("logFormat"), &_0); + ZEPHIR_INIT_ZVAL_NREF(_1); + ZVAL_LONG(&_1, 7); + zephir_update_property_zval(this_ptr, ZEND_STRL("logLevel"), &_1); + zephir_update_property_zval(this_ptr, ZEND_STRL("logger"), logger); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Router, __construct) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, finish) { - zval routes, _1$$3, _3$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *defaultRoutes_param = NULL, _0$$3, _2$$3, _4$$3; - zend_bool defaultRoutes; + zval values; + zval *statement_param = NULL, *values_param = NULL, __$true, ex, finish, _0, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6$$3, _7$$3, _8$$3, _9$$3, _10$$3, _11$$3, _12$$3, _13$$3, _14$$3; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&routes); + ZVAL_UNDEF(&statement); + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&ex); + ZVAL_UNDEF(&finish); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_8$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_11$$3); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_13$$3); + ZVAL_UNDEF(&_14$$3); + ZVAL_UNDEF(&values); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(0, 2) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(defaultRoutes) + Z_PARAM_STR_OR_NULL(statement) + Z_PARAM_ARRAY(values) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &defaultRoutes_param); - if (!defaultRoutes_param) { - defaultRoutes = 1; + zephir_fetch_params(1, 0, 2, &statement_param, &values_param); + if (!statement_param) { + ZEPHIR_INIT_VAR(&statement); } else { - if (UNEXPECTED(Z_TYPE_P(defaultRoutes_param) != IS_TRUE && Z_TYPE_P(defaultRoutes_param) != IS_FALSE)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'defaultRoutes' must be of the type bool")); - RETURN_MM_NULL(); + zephir_get_strval(&statement, statement_param); } - defaultRoutes = (Z_TYPE_P(defaultRoutes_param) == IS_TRUE); + if (!values_param) { + ZEPHIR_INIT_VAR(&values); + array_init(&values); + } else { + zephir_get_arrval(&values, values_param); } - ZEPHIR_INIT_VAR(&routes); - array_init(&routes); - if (defaultRoutes) { - ZEPHIR_INIT_VAR(&_0$$3); - object_init_ex(&_0$$3, phalcon_mvc_router_route_ce); - ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 1, 0); - add_assoc_long_ex(&_1$$3, SL("controller"), 1); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "#^/([\\w0-9\\_\\-]+)[/]{0,1}$#u"); - ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 96, &_2$$3, &_1$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("active"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(zephir_is_true(&_0))) { + ZEPHIR_INIT_VAR(&ex); + object_init_ex(&ex, phalcon_datamapper_pdo_exception_exception_ce); + ZEPHIR_CALL_METHOD(NULL, &ex, "__construct", NULL, 29); zephir_check_call_status(); - zephir_array_append(&routes, &_0$$3, PH_SEPARATE, "phalcon/Mvc/Router.zep", 171); - ZEPHIR_INIT_NVAR(&_2$$3); - object_init_ex(&_2$$3, phalcon_mvc_router_route_ce); - ZEPHIR_INIT_VAR(&_3$$3); - zephir_create_array(&_3$$3, 3, 0); - add_assoc_long_ex(&_3$$3, SL("controller"), 1); - add_assoc_long_ex(&_3$$3, SL("action"), 2); - add_assoc_long_ex(&_3$$3, SL("params"), 3); - ZEPHIR_INIT_VAR(&_4$$3); - ZVAL_STRING(&_4$$3, "#^/([\\w0-9\\_\\-]+)/([\\w0-9\\.\\_]+)(/.*)*$#u"); - ZEPHIR_CALL_METHOD(NULL, &_2$$3, "__construct", NULL, 96, &_4$$3, &_3$$3); + ZEPHIR_CALL_FUNCTION(&finish, "hrtime", NULL, 198, &__$true); zephir_check_call_status(); - zephir_array_append(&routes, &_2$$3, PH_SEPARATE, "phalcon/Mvc/Router.zep", 180); + ZEPHIR_CALL_METHOD(&_1$$3, &ex, "gettraceasstring", NULL, 199); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "backtrace"); + zephir_update_property_array(this_ptr, SL("context"), &_2$$3, &_1$$3); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("context"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_string(&_4$$3, &_3$$3, SL("start"), PH_NOISY | PH_READONLY, "phalcon/DataMapper/Pdo/Profiler/Profiler.zep", 91); + ZEPHIR_INIT_VAR(&_5$$3); + zephir_sub_function(&_5$$3, &finish, &_4$$3); + ZEPHIR_INIT_VAR(&_6$$3); + ZVAL_STRING(&_6$$3, "duration"); + zephir_update_property_array(this_ptr, SL("context"), &_6$$3, &_5$$3); + ZEPHIR_INIT_VAR(&_7$$3); + ZVAL_STRING(&_7$$3, "finish"); + zephir_update_property_array(this_ptr, SL("context"), &_7$$3, &finish); + ZEPHIR_INIT_VAR(&_8$$3); + ZVAL_STRING(&_8$$3, "statement"); + zephir_update_property_array(this_ptr, SL("context"), &_8$$3, &statement); + ZEPHIR_INIT_NVAR(&_5$$3); + if (ZEPHIR_IS_EMPTY(&values)) { + ZEPHIR_INIT_NVAR(&_5$$3); + ZVAL_STRING(&_5$$3, ""); + } else { + ZEPHIR_CALL_METHOD(&_5$$3, this_ptr, "encode", NULL, 200, &values); + zephir_check_call_status(); + } + ZEPHIR_INIT_VAR(&_9$$3); + ZVAL_STRING(&_9$$3, "values"); + zephir_update_property_array(this_ptr, SL("context"), &_9$$3, &_5$$3); + zephir_read_property(&_10$$3, this_ptr, ZEND_STRL("logger"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_11$$3, this_ptr, ZEND_STRL("logLevel"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_12$$3, this_ptr, ZEND_STRL("logFormat"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_13$$3, this_ptr, ZEND_STRL("context"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &_10$$3, "log", NULL, 0, &_11$$3, &_12$$3, &_13$$3); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_14$$3); + array_init(&_14$$3); + zephir_update_property_zval(this_ptr, ZEND_STRL("context"), &_14$$3); } - zephir_update_property_zval(this_ptr, ZEND_STRL("routes"), &routes); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Router, add) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, getLogFormat) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *httpMethods = NULL, httpMethods_sub, *position_param = NULL, __$null, route, _0; - zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_UNDEF(&httpMethods_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_ZVAL_OR_NULL(httpMethods) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &pattern_param, &paths, &httpMethods, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!httpMethods) { - httpMethods = &httpMethods_sub; - httpMethods = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&route); - object_init_ex(&route, phalcon_mvc_router_route_ce); - ZEPHIR_CALL_METHOD(NULL, &route, "__construct", NULL, 96, &pattern, paths, httpMethods); - zephir_check_call_status(); - ZVAL_LONG(&_0, position); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "attach", NULL, 0, &route, &_0); - zephir_check_call_status(); - RETURN_CCTOR(&route); + RETURN_MEMBER(getThis(), "logFormat"); } -static PHP_METHOD(Phalcon_Mvc_Router, addConnect) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, getLogger) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "CONNECT"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "logger"); } -static PHP_METHOD(Phalcon_Mvc_Router, addDelete) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, getLogLevel) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "DELETE"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "logLevel"); } -static PHP_METHOD(Phalcon_Mvc_Router, addGet) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, isActive) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "GET"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "active"); } -static PHP_METHOD(Phalcon_Mvc_Router, addHead) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, setActive) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; + zval *active_param = NULL, __$true, __$false; + zend_bool active; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_BOOL(active) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } + zephir_fetch_params_without_memory_grow(1, 0, &active_param); + active = zephir_get_boolval(active_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "HEAD"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + if (active) { + zephir_update_property_zval(this_ptr, ZEND_STRL("active"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("active"), &__$false); + } + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Router, addOptions) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, setLogFormat) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; + zval *logFormat_param = NULL; + zval logFormat; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&logFormat); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(logFormat) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } + zephir_fetch_params(1, 1, 0, &logFormat_param); + zephir_get_strval(&logFormat, logFormat_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "OPTIONS"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("logFormat"), &logFormat); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Router, addPatch) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, setLogLevel) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; + zval *logLevel_param = NULL; + zval logLevel; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&logLevel); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(logLevel) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } + zephir_fetch_params(1, 1, 0, &logLevel_param); + zephir_get_strval(&logLevel, logLevel_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "PATCH"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("logLevel"), &logLevel); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Router, addPost) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, start) { + zval _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *method_param = NULL, __$true, _0, _2$$3; + zval method; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&method); + ZVAL_BOOL(&__$true, 1); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_1$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(method) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } + zephir_fetch_params(1, 1, 0, &method_param); + zephir_get_strval(&method, method_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "POST"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("active"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(zephir_is_true(&_0))) { + ZEPHIR_INIT_VAR(&_1$$3); + zephir_create_array(&_1$$3, 2, 0); + zephir_array_update_string(&_1$$3, SL("method"), &method, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_FUNCTION(&_2$$3, "hrtime", NULL, 198, &__$true); + zephir_check_call_status(); + zephir_array_update_string(&_1$$3, SL("start"), &_2$$3, PH_COPY | PH_SEPARATE); + zephir_update_property_zval(this_ptr, ZEND_STRL("context"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Router, addPurge) +static PHP_METHOD(Phalcon_DataMapper_Pdo_Profiler_Profiler, encode) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; + zend_long options, depth, ZEPHIR_LAST_CALL_STATUS; + zval *data, data_sub, *options_param = NULL, *depth_param = NULL, encoded, _0, _1, _2, _3$$3, _4$$3, _5$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&encoded); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) + Z_PARAM_ZVAL(data) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) + Z_PARAM_LONG(options) + Z_PARAM_LONG(depth) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); + zephir_fetch_params(1, 1, 2, &data, &options_param, &depth_param); + if (!options_param) { + options = 0; } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; + options = zephir_get_intval(options_param); } - if (!position_param) { - position = 1; + if (!depth_param) { + depth = 512; } else { - position = zephir_get_intval(position_param); + depth = zephir_get_intval(depth_param); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "PURGE"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); + ZVAL_LONG(&_0, options); + ZVAL_LONG(&_1, depth); + ZEPHIR_INIT_VAR(&encoded); + zephir_json_encode(&encoded, data, zephir_get_intval(&_0) ); + ZEPHIR_CALL_FUNCTION(&_2, "json_last_error", NULL, 190); zephir_check_call_status(); - RETURN_MM(); + if (UNEXPECTED(!ZEPHIR_IS_LONG_IDENTICAL(&_2, 0))) { + ZEPHIR_INIT_VAR(&_3$$3); + object_init_ex(&_3$$3, spl_ce_InvalidArgumentException); + ZEPHIR_CALL_FUNCTION(&_4$$3, "json_last_error_msg", NULL, 191); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_5$$3); + ZEPHIR_CONCAT_SV(&_5$$3, "json_encode error: ", &_4$$3); + ZEPHIR_CALL_METHOD(NULL, &_3$$3, "__construct", NULL, 192, &_5$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_3$$3, "phalcon/DataMapper/Pdo/Profiler/Profiler.zep", 215); + ZEPHIR_MM_RESTORE(); + return; + } + RETURN_CCTOR(&encoded); } -static PHP_METHOD(Phalcon_Mvc_Router, addPut) +zend_object *zephir_init_properties_Phalcon_DataMapper_Pdo_Profiler_Profiler(zend_class_entry *class_type) { + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; - zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("context"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("context"), &_1$$3); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "PUT"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); -} -static PHP_METHOD(Phalcon_Mvc_Router, addTrace) +ZEPHIR_INIT_CLASS(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position, ZEPHIR_LAST_CALL_STATUS; - zval *pattern_param = NULL, *paths = NULL, paths_sub, *position_param = NULL, __$null, _0, _1; - zval pattern; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\DataMapper\\Pdo\\Profiler, ProfilerInterface, phalcon, datamapper_pdo_profiler_profilerinterface, phalcon_datamapper_pdo_profiler_profilerinterface_method_entry); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&paths_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(pattern) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(paths) - Z_PARAM_LONG(position) - ZEND_PARSE_PARAMETERS_END(); + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, finish); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, getLogger); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, getLogFormat); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, getLogLevel); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, isActive); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, setActive); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, setLogFormat); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, setLogLevel); +ZEPHIR_DOC_METHOD(Phalcon_DataMapper_Pdo_Profiler_ProfilerInterface, start); + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &pattern_param, &paths, &position_param); - if (UNEXPECTED(Z_TYPE_P(pattern_param) != IS_STRING && Z_TYPE_P(pattern_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'pattern' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(pattern_param) == IS_STRING)) { - zephir_get_strval(&pattern, pattern_param); - } else { - ZEPHIR_INIT_VAR(&pattern); - } - if (!paths) { - paths = &paths_sub; - paths = &__$null; - } - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "TRACE"); - ZVAL_LONG(&_1, position); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "add", NULL, 0, &pattern, paths, &_0, &_1); - zephir_check_call_status(); - RETURN_MM(); + +ZEPHIR_INIT_CLASS(Phalcon_Db_AbstractDb) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, AbstractDb, phalcon, db_abstractdb, phalcon_db_abstractdb_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Router, attach) +static PHP_METHOD(Phalcon_Db_AbstractDb, setup) { - zval _1$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long position; - zval *route, route_sub, *position_param = NULL, _0$$4, _2$$4; + zval *options_param = NULL, escapeIdentifiers, forceCasting; + zval options; zval *this_ptr = getThis(); - ZVAL_UNDEF(&route_sub); - ZVAL_UNDEF(&_0$$4); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&escapeIdentifiers); + ZVAL_UNDEF(&forceCasting); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_OBJECT_OF_CLASS(route, phalcon_mvc_router_routeinterface_ce) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(position) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &route, &position_param); - if (!position_param) { - position = 1; - } else { - position = zephir_get_intval(position_param); - } - + zephir_fetch_params(1, 1, 0, &options_param); + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); - do { - if (position == 1) { - zephir_update_property_array_append(this_ptr, SL("routes"), route); - break; - } - if (position == 0) { - ZEPHIR_INIT_VAR(&_0$$4); - ZEPHIR_INIT_VAR(&_1$$4); - zephir_create_array(&_1$$4, 1, 0); - zephir_array_fast_append(&_1$$4, route); - zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_0$$4, &_1$$4, &_2$$4); - zephir_update_property_zval(this_ptr, ZEND_STRL("routes"), &_0$$4); - break; - } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "Invalid route position", "phalcon/Mvc/Router.zep", 459); - return; - } while(0); - RETURN_THIS(); + ZEPHIR_OBS_VAR(&escapeIdentifiers); + if (zephir_array_isset_string_fetch(&escapeIdentifiers, &options, SL("escapeSqlIdentifiers"), 0)) { + ZEPHIR_GLOBAL(db).escape_identifiers = zend_is_true(&escapeIdentifiers); + } + ZEPHIR_OBS_VAR(&forceCasting); + if (zephir_array_isset_string_fetch(&forceCasting, &options, SL("forceCasting"), 0)) { + ZEPHIR_GLOBAL(db).force_casting = zend_is_true(&forceCasting); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Router, clear) -{ - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZEPHIR_MM_GROW(); - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("routes"), &_0); - ZEPHIR_MM_RESTORE(); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Mvc_Router, getEventsManager) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "eventsManager"); -} -static PHP_METHOD(Phalcon_Mvc_Router, getActionName) +ZEPHIR_INIT_CLASS(Phalcon_Db_Column) { - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Column, phalcon, db_column, phalcon_db_column_method_entry, 0); + zend_declare_property_null(phalcon_db_column_ce, SL("after"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("autoIncrement"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_column_ce, SL("bindType"), 2, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_column_ce, SL("_default"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("first"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("isNumeric"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_column_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_column_ce, SL("comment"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("notNull"), 1, ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("primary"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_column_ce, SL("scale"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_column_ce, SL("size"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_column_ce, SL("type"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_column_ce, SL("typeReference"), -1, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_column_ce, SL("typeValues"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_column_ce, SL("unsigned"), 0, ZEND_ACC_PROTECTED); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_BLOB"), 3); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_BOOL"), 5); - RETURN_MEMBER(getThis(), "action"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_DECIMAL"), 32); -static PHP_METHOD(Phalcon_Mvc_Router, getControllerName) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_INT"), 1); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_NULL"), 0); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_PARAM_STR"), 2); - RETURN_MEMBER(getThis(), "controller"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("BIND_SKIP"), 1024); -static PHP_METHOD(Phalcon_Mvc_Router, getMatchedRoute) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_BIGINTEGER"), 14); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_BIT"), 19); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_BINARY"), 26); - RETURN_MEMBER(getThis(), "matchedRoute"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_BLOB"), 11); -static PHP_METHOD(Phalcon_Mvc_Router, getMatches) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_BOOLEAN"), 8); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_CHAR"), 5); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_DATE"), 1); - RETURN_MEMBER(getThis(), "matches"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_DATETIME"), 4); -static PHP_METHOD(Phalcon_Mvc_Router, getModuleName) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_DECIMAL"), 3); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_DOUBLE"), 9); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_ENUM"), 18); - RETURN_MEMBER(getThis(), "module"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_FLOAT"), 7); -static PHP_METHOD(Phalcon_Mvc_Router, getNamespaceName) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_INTEGER"), 0); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_JSON"), 15); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_JSONB"), 16); - RETURN_MEMBER(getThis(), "namespaceName"); -} + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_LONGBLOB"), 13); -static PHP_METHOD(Phalcon_Mvc_Router, getParams) -{ - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_LONGTEXT"), 24); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_MEDIUMBLOB"), 12); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_MEDIUMINTEGER"), 21); - RETURN_MEMBER(getThis(), "params"); + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_MEDIUMTEXT"), 23); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_SMALLINTEGER"), 22); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TEXT"), 6); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TIME"), 20); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TIMESTAMP"), 17); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TINYBLOB"), 10); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TINYINTEGER"), 26); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_TINYTEXT"), 25); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_VARBINARY"), 27); + + zephir_declare_class_constant_long(phalcon_db_column_ce, SL("TYPE_VARCHAR"), 2); + + zend_class_implements(phalcon_db_column_ce, 1, phalcon_db_columninterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Router, getRouteById) +static PHP_METHOD(Phalcon_Db_Column, getDefault) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "_default"); +} + +static PHP_METHOD(Phalcon_Db_Column, getName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "name"); +} + +static PHP_METHOD(Phalcon_Db_Column, getComment) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "comment"); +} + +static PHP_METHOD(Phalcon_Db_Column, getScale) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "scale"); +} + +static PHP_METHOD(Phalcon_Db_Column, getSize) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "size"); +} + +static PHP_METHOD(Phalcon_Db_Column, getType) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "type"); +} + +static PHP_METHOD(Phalcon_Db_Column, getTypeReference) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "typeReference"); +} + +static PHP_METHOD(Phalcon_Db_Column, getTypeValues) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "typeValues"); +} + +static PHP_METHOD(Phalcon_Db_Column, __construct) { - zend_string *_7; - zend_ulong _6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *id, id_sub, route, routeId, key, _0, _3, *_4, _5, _1$$3, _2$$3; + zval definition; + zval *name_param = NULL, *definition_param = NULL, __$true, __$false, type, notNull, primary, size, scale, dunsigned, first, after, bindType, isNumeric, autoIncrement, defaultValue, typeReference, typeValues, comment; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&id_sub); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&routeId); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&name); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(¬Null); + ZVAL_UNDEF(&primary); + ZVAL_UNDEF(&size); + ZVAL_UNDEF(&scale); + ZVAL_UNDEF(&dunsigned); + ZVAL_UNDEF(&first); + ZVAL_UNDEF(&after); + ZVAL_UNDEF(&bindType); + ZVAL_UNDEF(&isNumeric); + ZVAL_UNDEF(&autoIncrement); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&typeReference); + ZVAL_UNDEF(&typeValues); + ZVAL_UNDEF(&comment); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(id) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &id); + zephir_fetch_params(1, 2, 0, &name_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_OBS_VAR(&key); - zephir_read_property(&_0, this_ptr, ZEND_STRL("keyRouteIds"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&key, &_0, id, 0)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_2$$3, &_1$$3, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Router.zep", 549); - RETURN_CTOR(&_2$$3); + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + ZEPHIR_OBS_VAR(&type); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&type, &definition, SL("type"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Column type is required", "phalcon/Db/Column.zep", 348); + return; } - zephir_read_property(&_3, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_3, 0, "phalcon/Mvc/Router.zep", 561); - if (Z_TYPE_P(&_3) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_3), _6, _7, _4) - { - ZEPHIR_INIT_NVAR(&key); - if (_7 != NULL) { - ZVAL_STR_COPY(&key, _7); - } else { - ZVAL_LONG(&key, _6); - } - ZEPHIR_INIT_NVAR(&route); - ZVAL_COPY(&route, _4); - ZEPHIR_CALL_METHOD(&routeId, &route, "getrouteid", NULL, 0); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("keyRouteIds"), &routeId, &key); - if (ZEPHIR_IS_EQUAL(&routeId, id)) { - RETURN_CCTOR(&route); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_3, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5, &_3, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &type); + ZEPHIR_OBS_VAR(&typeReference); + if (zephir_array_isset_string_fetch(&typeReference, &definition, SL("typeReference"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("typeReference"), &typeReference); + } + ZEPHIR_OBS_VAR(&typeValues); + if (zephir_array_isset_string_fetch(&typeValues, &definition, SL("typeValues"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("typeValues"), &typeValues); + } + ZEPHIR_OBS_VAR(¬Null); + if (zephir_array_isset_string_fetch(¬Null, &definition, SL("notNull"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("notNull"), ¬Null); + } + ZEPHIR_OBS_VAR(&primary); + if (zephir_array_isset_string_fetch(&primary, &definition, SL("primary"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("primary"), &primary); + } + ZEPHIR_OBS_VAR(&size); + if (zephir_array_isset_string_fetch(&size, &definition, SL("size"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("size"), &size); + } + ZEPHIR_OBS_VAR(&scale); + if (zephir_array_isset_string_fetch(&scale, &definition, SL("scale"), 0)) { + do { + if (ZEPHIR_IS_LONG(&type, 14) || ZEPHIR_IS_LONG(&type, 3) || ZEPHIR_IS_LONG(&type, 9) || ZEPHIR_IS_LONG(&type, 7) || ZEPHIR_IS_LONG(&type, 0) || ZEPHIR_IS_LONG(&type, 21) || ZEPHIR_IS_LONG(&type, 22) || ZEPHIR_IS_LONG(&type, 26)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("scale"), &scale); break; } - ZEPHIR_CALL_METHOD(&key, &_3, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &_3, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&routeId, &route, "getrouteid", NULL, 0); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("keyRouteIds"), &routeId, &key); - if (ZEPHIR_IS_EQUAL(&routeId, id)) { - RETURN_CCTOR(&route); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Column type does not support scale parameter", "phalcon/Db/Column.zep", 398); + return; + } while(0); + + } + ZEPHIR_OBS_VAR(&defaultValue); + if (zephir_array_isset_string_fetch(&defaultValue, &definition, SL("default"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("_default"), &defaultValue); + } + ZEPHIR_OBS_VAR(&dunsigned); + if (zephir_array_isset_string_fetch(&dunsigned, &definition, SL("unsigned"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("unsigned"), &dunsigned); + } + ZEPHIR_OBS_VAR(&isNumeric); + if (zephir_array_isset_string_fetch(&isNumeric, &definition, SL("isNumeric"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("isNumeric"), &isNumeric); + } + ZEPHIR_OBS_VAR(&autoIncrement); + if (zephir_array_isset_string_fetch(&autoIncrement, &definition, SL("autoIncrement"), 0)) { + if (!(zephir_is_true(&autoIncrement))) { + if (0) { + zephir_update_property_zval(this_ptr, ZEND_STRL("autoIncrement"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("autoIncrement"), &__$false); + } + } else { + do { + if (ZEPHIR_IS_LONG(&type, 14) || ZEPHIR_IS_LONG(&type, 0) || ZEPHIR_IS_LONG(&type, 21) || ZEPHIR_IS_LONG(&type, 22) || ZEPHIR_IS_LONG(&type, 26)) { + if (1) { + zephir_update_property_zval(this_ptr, ZEND_STRL("autoIncrement"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("autoIncrement"), &__$false); + } + break; } - ZEPHIR_CALL_METHOD(NULL, &_3, "next", NULL, 0); - zephir_check_call_status(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Column type cannot be auto-increment", "phalcon/Db/Column.zep", 442); + return; + } while(0); + } } - ZEPHIR_INIT_NVAR(&route); - ZEPHIR_INIT_NVAR(&key); - RETURN_MM_BOOL(0); + if (zephir_array_isset_string_fetch(&first, &definition, SL("first"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("first"), &first); + } + if (zephir_array_isset_string_fetch(&after, &definition, SL("after"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("after"), &after); + } + if (zephir_array_isset_string_fetch(&bindType, &definition, SL("bindType"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("bindType"), &bindType); + } + if (zephir_array_isset_string_fetch(&comment, &definition, SL("comment"), 1)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("comment"), &comment); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Router, getRouteByName) +static PHP_METHOD(Phalcon_Db_Column, getAfterPosition) { - zend_string *_7; - zend_ulong _6; + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "after"); +} + +static PHP_METHOD(Phalcon_Db_Column, getBindType) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "bindType"); +} + +static PHP_METHOD(Phalcon_Db_Column, hasDefault) +{ + zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *name_param = NULL, route, routeName, key, _0, _3, *_4, _5, _1$$3, _2$$3; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + + + ZEPHIR_MM_GROW(); + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_0)) { + RETURN_MM_BOOL(0); + } + zephir_read_property(&_1, this_ptr, ZEND_STRL("_default"), PH_NOISY_CC | PH_READONLY); + RETURN_MM_BOOL(Z_TYPE_P(&_1) != IS_NULL); +} + +static PHP_METHOD(Phalcon_Db_Column, isAutoIncrement) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "autoIncrement"); +} + +static PHP_METHOD(Phalcon_Db_Column, isFirst) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "first"); +} + +static PHP_METHOD(Phalcon_Db_Column, isNotNull) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "notNull"); +} + +static PHP_METHOD(Phalcon_Db_Column, isNumeric) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "isNumeric"); +} + +static PHP_METHOD(Phalcon_Db_Column, isPrimary) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "primary"); +} + +static PHP_METHOD(Phalcon_Db_Column, isUnsigned) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "unsigned"); +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_ColumnInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db, ColumnInterface, phalcon, db_columninterface, phalcon_db_columninterface_method_entry); + + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getAfterPosition); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getBindType); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getDefault); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getScale); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getSize); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getType); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getTypeReference); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, getTypeValues); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, hasDefault); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isAutoIncrement); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isFirst); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isNotNull); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isNumeric); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isPrimary); +ZEPHIR_DOC_METHOD(Phalcon_Db_ColumnInterface, isUnsigned); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Dialect) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Dialect, phalcon, db_dialect, phalcon_db_dialect_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + + zend_declare_property_null(phalcon_db_dialect_ce, SL("escapeChar"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_dialect_ce, SL("customFunctions"), ZEND_ACC_PROTECTED); + phalcon_db_dialect_ce->create_object = zephir_init_properties_Phalcon_Db_Dialect; + + zend_class_implements(phalcon_db_dialect_ce, 1, phalcon_db_dialectinterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Dialect, createSavepoint) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *name_param = NULL; zval name; zval *this_ptr = getThis(); ZVAL_UNDEF(&name); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&routeName); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) @@ -49154,7699 +44643,8328 @@ static PHP_METHOD(Phalcon_Mvc_Router, getRouteByName) } - ZEPHIR_OBS_VAR(&key); - zephir_read_property(&_0, this_ptr, ZEND_STRL("keyRouteNames"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&key, &_0, &name, 0)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_2$$3, &_1$$3, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Router.zep", 576); - RETURN_CTOR(&_2$$3); + ZEPHIR_CONCAT_SV(return_value, "SAVEPOINT ", &name); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Dialect, escape) +{ + zend_bool _2$$5, _12$$7, _13$$7, _17$$9, _18$$9; + zend_string *_11; + zend_ulong _10; + zval _7; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *str_param = NULL, *escapeChar_param = NULL, parts, key, part, newParts, _5, _6, *_8, _9, _0$$4, _3$$6, _14$$7, _16$$7, _19$$9, _21$$9; + zval str, escapeChar, _1$$4, _4$$6, _15$$7, _20$$9; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&str); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_4$$6); + ZVAL_UNDEF(&_15$$7); + ZVAL_UNDEF(&_20$$9); + ZVAL_UNDEF(&parts); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&part); + ZVAL_UNDEF(&newParts); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&_3$$6); + ZVAL_UNDEF(&_14$$7); + ZVAL_UNDEF(&_16$$7); + ZVAL_UNDEF(&_19$$9); + ZVAL_UNDEF(&_21$$9); + ZVAL_UNDEF(&_7); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(str) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &str_param, &escapeChar_param); + if (UNEXPECTED(Z_TYPE_P(str_param) != IS_STRING && Z_TYPE_P(str_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'str' must be of the type string")); + RETURN_MM_NULL(); } - zephir_read_property(&_3, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_3, 0, "phalcon/Mvc/Router.zep", 591); - if (Z_TYPE_P(&_3) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_3), _6, _7, _4) + if (EXPECTED(Z_TYPE_P(str_param) == IS_STRING)) { + zephir_get_strval(&str, str_param); + } else { + ZEPHIR_INIT_VAR(&str); + } + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + + + if (!(ZEPHIR_GLOBAL(db).escape_identifiers)) { + RETURN_CTOR(&str); + } + if (ZEPHIR_IS_EMPTY(&escapeChar)) { + ZEPHIR_OBS_VAR(&_0$$4); + zephir_read_property(&_0$$4, this_ptr, ZEND_STRL("escapeChar"), PH_NOISY_CC); + zephir_cast_to_string(&_1$$4, &_0$$4); + ZEPHIR_CPY_WRT(&escapeChar, &_1$$4); + } + if (!(zephir_memnstr_str(&str, SL("."), "phalcon/Db/Dialect.zep", 52))) { + _2$$5 = !ZEPHIR_IS_STRING(&escapeChar, ""); + if (_2$$5) { + _2$$5 = !ZEPHIR_IS_STRING(&str, "*"); + } + if (_2$$5) { + ZEPHIR_INIT_VAR(&_3$$6); + ZEPHIR_INIT_VAR(&_4$$6); + ZEPHIR_CONCAT_VV(&_4$$6, &escapeChar, &escapeChar); + zephir_fast_str_replace(&_3$$6, &escapeChar, &_4$$6, &str); + ZEPHIR_CONCAT_VVV(return_value, &escapeChar, &_3$$6, &escapeChar); + RETURN_MM(); + } + RETURN_CTOR(&str); + } + ZEPHIR_INIT_VAR(&_5); + ZEPHIR_INIT_VAR(&_6); + zephir_fast_trim(&_6, &str, &escapeChar, ZEPHIR_TRIM_BOTH); + zephir_fast_explode_str(&_5, SL("."), &_6, LONG_MAX); + zephir_get_arrval(&_7, &_5); + ZEPHIR_CPY_WRT(&parts, &_7); + ZEPHIR_CPY_WRT(&newParts, &parts); + zephir_is_iterable(&parts, 0, "phalcon/Db/Dialect.zep", 72); + if (Z_TYPE_P(&parts) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&parts), _10, _11, _8) { ZEPHIR_INIT_NVAR(&key); - if (_7 != NULL) { - ZVAL_STR_COPY(&key, _7); + if (_11 != NULL) { + ZVAL_STR_COPY(&key, _11); } else { - ZVAL_LONG(&key, _6); + ZVAL_LONG(&key, _10); } - ZEPHIR_INIT_NVAR(&route); - ZVAL_COPY(&route, _4); - ZEPHIR_CALL_METHOD(&routeName, &route, "getname", NULL, 0); - zephir_check_call_status(); - if (!(ZEPHIR_IS_EMPTY(&routeName))) { - zephir_update_property_array(this_ptr, SL("keyRouteNames"), &routeName, &key); - if (ZEPHIR_IS_EQUAL(&routeName, &name)) { - RETURN_CCTOR(&route); - } + ZEPHIR_INIT_NVAR(&part); + ZVAL_COPY(&part, _8); + _12$$7 = ZEPHIR_IS_STRING(&escapeChar, ""); + if (!(_12$$7)) { + _12$$7 = ZEPHIR_IS_STRING(&part, ""); + } + _13$$7 = _12$$7; + if (!(_13$$7)) { + _13$$7 = ZEPHIR_IS_STRING(&part, "*"); + } + if (_13$$7) { + continue; } + ZEPHIR_INIT_NVAR(&_14$$7); + ZEPHIR_INIT_NVAR(&_15$$7); + ZEPHIR_CONCAT_VV(&_15$$7, &escapeChar, &escapeChar); + zephir_fast_str_replace(&_14$$7, &escapeChar, &_15$$7, &part); + ZEPHIR_INIT_NVAR(&_16$$7); + ZEPHIR_CONCAT_VVV(&_16$$7, &escapeChar, &_14$$7, &escapeChar); + zephir_array_update_zval(&newParts, &key, &_16$$7, PH_COPY | PH_SEPARATE); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_3, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &parts, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_5, &_3, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_9, &parts, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_5)) { + if (!zend_is_true(&_9)) { break; } - ZEPHIR_CALL_METHOD(&key, &_3, "key", NULL, 0); + ZEPHIR_CALL_METHOD(&key, &parts, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&route, &_3, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&part, &parts, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&routeName, &route, "getname", NULL, 0); - zephir_check_call_status(); - if (!(ZEPHIR_IS_EMPTY(&routeName))) { - zephir_update_property_array(this_ptr, SL("keyRouteNames"), &routeName, &key); - if (ZEPHIR_IS_EQUAL(&routeName, &name)) { - RETURN_CCTOR(&route); - } + _17$$9 = ZEPHIR_IS_STRING(&escapeChar, ""); + if (!(_17$$9)) { + _17$$9 = ZEPHIR_IS_STRING(&part, ""); } - ZEPHIR_CALL_METHOD(NULL, &_3, "next", NULL, 0); + _18$$9 = _17$$9; + if (!(_18$$9)) { + _18$$9 = ZEPHIR_IS_STRING(&part, "*"); + } + if (_18$$9) { + continue; + } + ZEPHIR_INIT_NVAR(&_19$$9); + ZEPHIR_INIT_NVAR(&_20$$9); + ZEPHIR_CONCAT_VV(&_20$$9, &escapeChar, &escapeChar); + zephir_fast_str_replace(&_19$$9, &escapeChar, &_20$$9, &part); + ZEPHIR_INIT_NVAR(&_21$$9); + ZEPHIR_CONCAT_VVV(&_21$$9, &escapeChar, &_19$$9, &escapeChar); + zephir_array_update_zval(&newParts, &key, &_21$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &parts, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&route); + ZEPHIR_INIT_NVAR(&part); ZEPHIR_INIT_NVAR(&key); - RETURN_MM_BOOL(0); + zephir_fast_join_str(return_value, SL("."), &newParts); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, getRoutes) +static PHP_METHOD(Phalcon_Db_Dialect, escapeSchema) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *str_param = NULL, *escapeChar_param = NULL, _0$$4, _2; + zval str, escapeChar, _1$$4; zval *this_ptr = getThis(); + ZVAL_UNDEF(&str); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(str) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "routes"); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &str_param, &escapeChar_param); + if (UNEXPECTED(Z_TYPE_P(str_param) != IS_STRING && Z_TYPE_P(str_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'str' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(str_param) == IS_STRING)) { + zephir_get_strval(&str, str_param); + } else { + ZEPHIR_INIT_VAR(&str); + } + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + + + if (!(ZEPHIR_GLOBAL(db).escape_identifiers)) { + RETURN_CTOR(&str); + } + if (ZEPHIR_IS_STRING(&escapeChar, "")) { + ZEPHIR_OBS_VAR(&_0$$4); + zephir_read_property(&_0$$4, this_ptr, ZEND_STRL("escapeChar"), PH_NOISY_CC); + zephir_cast_to_string(&_1$$4, &_0$$4); + ZEPHIR_CPY_WRT(&escapeChar, &_1$$4); + } + ZEPHIR_INIT_VAR(&_2); + zephir_fast_trim(&_2, &str, &escapeChar, ZEPHIR_TRIM_BOTH); + ZEPHIR_CONCAT_VVV(return_value, &escapeChar, &_2, &escapeChar); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, handle) +static PHP_METHOD(Phalcon_Db_Dialect, forUpdate) { - zend_string *_27$$33, *_62$$82; - zend_ulong _26$$33, _61$$82; - zval _21$$28, _33$$39, _35$$42, _40$$50, _42$$53, _56$$77, _67$$88, _69$$91, _74$$99, _76$$102; - zend_bool _2, _31$$34, _38$$45, _65$$83, _72$$94; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_18 = NULL, *_20 = NULL, *_23 = NULL, *_30 = NULL, *_53 = NULL, *_55 = NULL, *_58 = NULL, *_78 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *uri_param = NULL, __$true, __$false, __$null, request, currentHostName, routeFound, parts, params, matches, notFoundPaths, vnamespace, module, controller, action, paramsStr, strParams, route, methods, container, hostname, regexHostName, matched, pattern, handledUri, beforeMatch, paths, converters, part, position, matchPosition, converter, eventsManager, _0, _1, _4, *_6, _7, _79, _80, _81, _82, _83, _3$$3, _5$$6, _8$$9, _9$$9, _10$$9, _11$$8, _12$$8, _13$$13, _14$$13, _15$$13, _16$$17, _17$$23, _19$$27, _22$$31, *_24$$33, _25$$33, _28$$35, _29$$35, _32$$39, _34$$42, _36$$46, _37$$46, _39$$50, _41$$53, _43$$58, _44$$58, _45$$58, _46$$57, _47$$57, _48$$62, _49$$62, _50$$62, _51$$66, _52$$72, _54$$76, _57$$80, *_59$$82, _60$$82, _63$$84, _64$$84, _66$$88, _68$$91, _70$$95, _71$$95, _73$$99, _75$$102, _77$$107, _84$$115, _85$$117, _86$$119; - zval uri; + zval *sqlQuery_param = NULL; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&uri); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&request); - ZVAL_UNDEF(¤tHostName); - ZVAL_UNDEF(&routeFound); - ZVAL_UNDEF(&parts); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&matches); - ZVAL_UNDEF(¬FoundPaths); - ZVAL_UNDEF(&vnamespace); - ZVAL_UNDEF(&module); - ZVAL_UNDEF(&controller); - ZVAL_UNDEF(&action); - ZVAL_UNDEF(¶msStr); - ZVAL_UNDEF(&strParams); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&methods); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&hostname); - ZVAL_UNDEF(®exHostName); - ZVAL_UNDEF(&matched); - ZVAL_UNDEF(&pattern); - ZVAL_UNDEF(&handledUri); - ZVAL_UNDEF(&beforeMatch); - ZVAL_UNDEF(&paths); - ZVAL_UNDEF(&converters); - ZVAL_UNDEF(&part); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&matchPosition); - ZVAL_UNDEF(&converter); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_79); - ZVAL_UNDEF(&_80); - ZVAL_UNDEF(&_81); - ZVAL_UNDEF(&_82); - ZVAL_UNDEF(&_83); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_8$$9); - ZVAL_UNDEF(&_9$$9); - ZVAL_UNDEF(&_10$$9); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_13$$13); - ZVAL_UNDEF(&_14$$13); - ZVAL_UNDEF(&_15$$13); - ZVAL_UNDEF(&_16$$17); - ZVAL_UNDEF(&_17$$23); - ZVAL_UNDEF(&_19$$27); - ZVAL_UNDEF(&_22$$31); - ZVAL_UNDEF(&_25$$33); - ZVAL_UNDEF(&_28$$35); - ZVAL_UNDEF(&_29$$35); - ZVAL_UNDEF(&_32$$39); - ZVAL_UNDEF(&_34$$42); - ZVAL_UNDEF(&_36$$46); - ZVAL_UNDEF(&_37$$46); - ZVAL_UNDEF(&_39$$50); - ZVAL_UNDEF(&_41$$53); - ZVAL_UNDEF(&_43$$58); - ZVAL_UNDEF(&_44$$58); - ZVAL_UNDEF(&_45$$58); - ZVAL_UNDEF(&_46$$57); - ZVAL_UNDEF(&_47$$57); - ZVAL_UNDEF(&_48$$62); - ZVAL_UNDEF(&_49$$62); - ZVAL_UNDEF(&_50$$62); - ZVAL_UNDEF(&_51$$66); - ZVAL_UNDEF(&_52$$72); - ZVAL_UNDEF(&_54$$76); - ZVAL_UNDEF(&_57$$80); - ZVAL_UNDEF(&_60$$82); - ZVAL_UNDEF(&_63$$84); - ZVAL_UNDEF(&_64$$84); - ZVAL_UNDEF(&_66$$88); - ZVAL_UNDEF(&_68$$91); - ZVAL_UNDEF(&_70$$95); - ZVAL_UNDEF(&_71$$95); - ZVAL_UNDEF(&_73$$99); - ZVAL_UNDEF(&_75$$102); - ZVAL_UNDEF(&_77$$107); - ZVAL_UNDEF(&_84$$115); - ZVAL_UNDEF(&_85$$117); - ZVAL_UNDEF(&_86$$119); - ZVAL_UNDEF(&_21$$28); - ZVAL_UNDEF(&_33$$39); - ZVAL_UNDEF(&_35$$42); - ZVAL_UNDEF(&_40$$50); - ZVAL_UNDEF(&_42$$53); - ZVAL_UNDEF(&_56$$77); - ZVAL_UNDEF(&_67$$88); - ZVAL_UNDEF(&_69$$91); - ZVAL_UNDEF(&_74$$99); - ZVAL_UNDEF(&_76$$102); + ZVAL_UNDEF(&sqlQuery); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(uri) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &uri_param); - if (UNEXPECTED(Z_TYPE_P(uri_param) != IS_STRING && Z_TYPE_P(uri_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'uri' must be of the type string")); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(uri_param) == IS_STRING)) { - zephir_get_strval(&uri, uri_param); + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); } else { - ZEPHIR_INIT_VAR(&uri); + ZEPHIR_INIT_VAR(&sqlQuery); } - ZVAL_LONG(&_0, 5); - ZEPHIR_CALL_FUNCTION(&_1, "parse_url", NULL, 97, &uri, &_0); - zephir_check_call_status(); - zephir_get_strval(&uri, &_1); - zephir_read_property(&_0, this_ptr, ZEND_STRL("removeExtraSlashes"), PH_NOISY_CC | PH_READONLY); - _2 = zephir_is_true(&_0); - if (_2) { - _2 = !ZEPHIR_IS_STRING(&uri, "/"); - } - if (_2) { - ZEPHIR_INIT_VAR(&_3$$3); - ZVAL_STRING(&_3$$3, "/"); - ZEPHIR_INIT_VAR(&handledUri); - zephir_fast_trim(&handledUri, &uri, &_3$$3, ZEPHIR_TRIM_RIGHT); + ZEPHIR_CONCAT_VS(return_value, &sqlQuery, " FOR UPDATE"); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Dialect, getColumnList) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *columnList_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, column, *_0, _1, _2$$3, _4$$4; + zval columnList, bindCounts, columns; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&columnList); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&escapeChar); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(columnList) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &columnList_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&columnList, columnList_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - ZEPHIR_CPY_WRT(&handledUri, &uri); - } - if (ZEPHIR_IS_EMPTY(&handledUri)) { - ZEPHIR_INIT_NVAR(&handledUri); - ZVAL_STRING(&handledUri, "/"); + zephir_get_strval(&escapeChar, escapeChar_param); } - ZEPHIR_INIT_VAR(&request); - ZVAL_NULL(&request); - ZEPHIR_INIT_VAR(¤tHostName); - ZVAL_NULL(¤tHostName); - ZEPHIR_INIT_VAR(&routeFound); - ZVAL_BOOL(&routeFound, 0); - ZEPHIR_INIT_VAR(&parts); - array_init(&parts); - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - ZEPHIR_INIT_VAR(&matches); - ZVAL_NULL(&matches); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &__$null); - zephir_read_property(&_4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_4); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_5$$6); - ZVAL_STRING(&_5$$6, "router:beforeCheckRoutes"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_5$$6, this_ptr); - zephir_check_call_status(); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_read_property(&_4, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_4, 0, "phalcon/Mvc/Router.zep", 888); - if (Z_TYPE_P(&_4) == IS_ARRAY) { - ZEND_HASH_REVERSE_FOREACH_VAL(Z_ARRVAL_P(&_4), _6) + + + ZEPHIR_INIT_VAR(&columns); + array_init(&columns); + zephir_is_iterable(&columnList, 0, "phalcon/Db/Dialect.zep", 128); + if (Z_TYPE_P(&columnList) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&columnList), _0) { - ZEPHIR_INIT_NVAR(&route); - ZVAL_COPY(&route, _6); - ZEPHIR_INIT_NVAR(¶ms); - array_init(¶ms); - ZEPHIR_INIT_NVAR(&matches); - ZVAL_NULL(&matches); - ZEPHIR_CALL_METHOD(&methods, &route, "gethttpmethods", NULL, 0); + ZEPHIR_INIT_NVAR(&column); + ZVAL_COPY(&column, _0); + ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "getsqlcolumn", &_3, 40, &column, &escapeChar, &bindCounts); zephir_check_call_status(); - if (Z_TYPE_P(&methods) != IS_NULL) { - if (Z_TYPE_P(&request) == IS_NULL) { - zephir_read_property(&_8$$9, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_8$$9); - if (UNEXPECTED(Z_TYPE_P(&container) != 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", 676); - return; - } - ZEPHIR_INIT_NVAR(&_10$$9); - ZVAL_STRING(&_10$$9, "request"); - ZEPHIR_CALL_METHOD(&_9$$9, &container, "getshared", NULL, 0, &_10$$9); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&request, &_9$$9); - } - ZVAL_BOOL(&_12$$8, 1); - ZEPHIR_CALL_METHOD(&_11$$8, &request, "ismethod", NULL, 0, &methods, &_12$$8); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_11$$8)) { - continue; - } - } - ZEPHIR_CALL_METHOD(&hostname, &route, "gethostname", NULL, 0); + zephir_array_append(&columns, &_2$$3, PH_SEPARATE, "phalcon/Db/Dialect.zep", 125); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columnList, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, &columnList, "valid", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(&hostname) != IS_NULL) { - if (Z_TYPE_P(&request) == IS_NULL) { - zephir_read_property(&_13$$13, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_13$$13); - if (UNEXPECTED(Z_TYPE_P(&container) != 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", 705); - return; - } - ZEPHIR_INIT_NVAR(&_15$$13); - ZVAL_STRING(&_15$$13, "request"); - ZEPHIR_CALL_METHOD(&_14$$13, &container, "getshared", NULL, 0, &_15$$13); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&request, &_14$$13); - } - if (Z_TYPE_P(¤tHostName) == IS_NULL) { - ZEPHIR_CALL_METHOD(¤tHostName, &request, "gethttphost", NULL, 0); - zephir_check_call_status(); - } - if (!(zephir_is_true(¤tHostName))) { - continue; - } - if (zephir_memnstr_str(&hostname, SL("("), "phalcon/Mvc/Router.zep", 729)) { - if (!(zephir_memnstr_str(&hostname, SL("#"), "phalcon/Mvc/Router.zep", 730))) { - ZEPHIR_INIT_NVAR(®exHostName); - ZEPHIR_CONCAT_SV(®exHostName, "#^", &hostname); - if (!(zephir_memnstr_str(&hostname, SL(":"), "phalcon/Mvc/Router.zep", 733))) { - zephir_concat_self_str(®exHostName, SL("(:[[:digit:]]+)?")); - } - zephir_concat_self_str(®exHostName, SL("$#i")); - } else { - ZEPHIR_CPY_WRT(®exHostName, &hostname); - } - ZEPHIR_INIT_NVAR(&_16$$17); - ZEPHIR_INIT_NVAR(&matched); - zephir_preg_match(&matched, ®exHostName, ¤tHostName, &_16$$17, 0, 0 , 0 ); - } else { - ZEPHIR_INIT_NVAR(&matched); - ZVAL_BOOL(&matched, ZEPHIR_IS_EQUAL(¤tHostName, &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_CALL_METHOD(NULL, &eventsManager, "fire", &_18, 0, &_17$$23, this_ptr, &route); - zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; } - ZEPHIR_CALL_METHOD(&pattern, &route, "getcompiledpattern", NULL, 0); + ZEPHIR_CALL_METHOD(&column, &columnList, "current", NULL, 0); zephir_check_call_status(); - if (zephir_memnstr_str(&pattern, SL("^"), "phalcon/Mvc/Router.zep", 761)) { - ZEPHIR_INIT_NVAR(&routeFound); - zephir_preg_match(&routeFound, &pattern, &handledUri, &matches, 0, 0 , 0 ); - } 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_CALL_METHOD(NULL, &eventsManager, "fire", &_20, 0, &_19$$27, this_ptr, &route); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&beforeMatch, &route, "getbeforematch", NULL, 0); + ZEPHIR_CALL_METHOD(&_4$$4, this_ptr, "getsqlcolumn", &_3, 40, &column, &escapeChar, &bindCounts); zephir_check_call_status(); - if (Z_TYPE_P(&beforeMatch) != IS_NULL) { - if (UNEXPECTED(!(zephir_is_callable(&beforeMatch)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "Before-Match callback is not callable in matched route", "phalcon/Mvc/Router.zep", 784); - return; - } - ZEPHIR_INIT_NVAR(&_21$$28); - zephir_create_array(&_21$$28, 3, 0); - 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_CALL_METHOD(&routeFound, &eventsManager, "fire", &_23, 0, &_22$$31, this_ptr, &route); - 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, 0, "phalcon/Mvc/Router.zep", 876); - if (Z_TYPE_P(&paths) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&paths), _26$$33, _27$$33, _24$$33) - { - ZEPHIR_INIT_NVAR(&part); - if (_27$$33 != NULL) { - ZVAL_STR_COPY(&part, _27$$33); - } else { - ZVAL_LONG(&part, _26$$33); - } - ZEPHIR_INIT_NVAR(&position); - ZVAL_COPY(&position, _24$$33); - if (UNEXPECTED(Z_TYPE_P(&part) != IS_STRING)) { - ZEPHIR_INIT_NVAR(&_28$$35); - object_init_ex(&_28$$35, phalcon_mvc_router_exception_ce); - ZEPHIR_INIT_NVAR(&_29$$35); - ZEPHIR_CONCAT_SV(&_29$$35, "Wrong key in paths: ", &part); - ZEPHIR_CALL_METHOD(NULL, &_28$$35, "__construct", &_30, 29, &_29$$35); - zephir_check_call_status(); - zephir_throw_exception_debug(&_28$$35, "phalcon/Mvc/Router.zep", 824); - ZEPHIR_MM_RESTORE(); - return; - } - _31$$34 = Z_TYPE_P(&position) != IS_STRING; - if (_31$$34) { - _31$$34 = Z_TYPE_P(&position) != IS_LONG; - } - if (_31$$34) { - continue; - } - ZEPHIR_OBS_NVAR(&matchPosition); - if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { - if (Z_TYPE_P(&converters) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&converter); - if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { - ZEPHIR_INIT_NVAR(&_32$$39); - ZEPHIR_INIT_NVAR(&_33$$39); - zephir_create_array(&_33$$39, 1, 0); - zephir_array_fast_append(&_33$$39, &matchPosition); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_32$$39, &converter, &_33$$39); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_32$$39, 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)) { - ZEPHIR_INIT_NVAR(&_34$$42); - ZEPHIR_INIT_NVAR(&_35$$42); - zephir_create_array(&_35$$42, 1, 0); - zephir_array_fast_append(&_35$$42, &position); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_34$$42, &converter, &_35$$42); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_34$$42, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&position) == IS_LONG) { - zephir_array_unset(&parts, &part, PH_SEPARATE); - } - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &paths, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_25$$33, &paths, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_25$$33)) { - break; - } - ZEPHIR_CALL_METHOD(&part, &paths, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&position, &paths, "current", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&part) != IS_STRING)) { - ZEPHIR_INIT_NVAR(&_36$$46); - object_init_ex(&_36$$46, phalcon_mvc_router_exception_ce); - ZEPHIR_INIT_NVAR(&_37$$46); - ZEPHIR_CONCAT_SV(&_37$$46, "Wrong key in paths: ", &part); - ZEPHIR_CALL_METHOD(NULL, &_36$$46, "__construct", &_30, 29, &_37$$46); - zephir_check_call_status(); - zephir_throw_exception_debug(&_36$$46, "phalcon/Mvc/Router.zep", 824); - ZEPHIR_MM_RESTORE(); - return; - } - _38$$45 = Z_TYPE_P(&position) != IS_STRING; - if (_38$$45) { - _38$$45 = Z_TYPE_P(&position) != IS_LONG; - } - if (_38$$45) { - continue; - } - ZEPHIR_OBS_NVAR(&matchPosition); - if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { - if (Z_TYPE_P(&converters) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&converter); - if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { - ZEPHIR_INIT_NVAR(&_39$$50); - ZEPHIR_INIT_NVAR(&_40$$50); - zephir_create_array(&_40$$50, 1, 0); - zephir_array_fast_append(&_40$$50, &matchPosition); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_39$$50, &converter, &_40$$50); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_39$$50, 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)) { - ZEPHIR_INIT_NVAR(&_41$$53); - ZEPHIR_INIT_NVAR(&_42$$53); - zephir_create_array(&_42$$53, 1, 0); - zephir_array_fast_append(&_42$$53, &position); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_41$$53, &converter, &_42$$53); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_41$$53, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&position) == IS_LONG) { - zephir_array_unset(&parts, &part, PH_SEPARATE); - } - } - } - ZEPHIR_CALL_METHOD(NULL, &paths, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&position); - ZEPHIR_INIT_NVAR(&part); - zephir_update_property_zval(this_ptr, ZEND_STRL("matches"), &matches); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &route); - break; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_4, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_7, &_4, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_7)) { - break; - } - ZEPHIR_CALL_METHOD(&route, &_4, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(¶ms); - array_init(¶ms); - 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) { - zephir_read_property(&_43$$58, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_43$$58); - if (UNEXPECTED(Z_TYPE_P(&container) != 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", 676); - return; - } - ZEPHIR_INIT_NVAR(&_45$$58); - ZVAL_STRING(&_45$$58, "request"); - ZEPHIR_CALL_METHOD(&_44$$58, &container, "getshared", NULL, 0, &_45$$58); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&request, &_44$$58); - } - ZVAL_BOOL(&_47$$57, 1); - ZEPHIR_CALL_METHOD(&_46$$57, &request, "ismethod", NULL, 0, &methods, &_47$$57); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_46$$57)) { - 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) { - zephir_read_property(&_48$$62, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_48$$62); - if (UNEXPECTED(Z_TYPE_P(&container) != 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", 705); - return; - } - ZEPHIR_INIT_NVAR(&_50$$62); - ZVAL_STRING(&_50$$62, "request"); - ZEPHIR_CALL_METHOD(&_49$$62, &container, "getshared", NULL, 0, &_50$$62); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&request, &_49$$62); - } - if (Z_TYPE_P(¤tHostName) == IS_NULL) { - ZEPHIR_CALL_METHOD(¤tHostName, &request, "gethttphost", NULL, 0); - zephir_check_call_status(); - } - if (!(zephir_is_true(¤tHostName))) { - continue; - } - if (zephir_memnstr_str(&hostname, SL("("), "phalcon/Mvc/Router.zep", 729)) { - if (!(zephir_memnstr_str(&hostname, SL("#"), "phalcon/Mvc/Router.zep", 730))) { - ZEPHIR_INIT_NVAR(®exHostName); - ZEPHIR_CONCAT_SV(®exHostName, "#^", &hostname); - if (!(zephir_memnstr_str(&hostname, SL(":"), "phalcon/Mvc/Router.zep", 733))) { - zephir_concat_self_str(®exHostName, SL("(:[[:digit:]]+)?")); - } - zephir_concat_self_str(®exHostName, SL("$#i")); - } else { - ZEPHIR_CPY_WRT(®exHostName, &hostname); - } - ZEPHIR_INIT_NVAR(&_51$$66); - ZEPHIR_INIT_NVAR(&matched); - zephir_preg_match(&matched, ®exHostName, ¤tHostName, &_51$$66, 0, 0 , 0 ); - } else { - ZEPHIR_INIT_NVAR(&matched); - ZVAL_BOOL(&matched, ZEPHIR_IS_EQUAL(¤tHostName, &hostname)); - } - if (!(zephir_is_true(&matched))) { - continue; - } - } - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_52$$72); - ZVAL_STRING(&_52$$72, "router:beforeCheckRoute"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_53, 0, &_52$$72, this_ptr, &route); - 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", 761)) { - ZEPHIR_INIT_NVAR(&routeFound); - zephir_preg_match(&routeFound, &pattern, &handledUri, &matches, 0, 0 , 0 ); - } 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(&_54$$76); - ZVAL_STRING(&_54$$76, "router:matchedRoute"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_55, 0, &_54$$76, this_ptr, &route); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&beforeMatch, &route, "getbeforematch", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&beforeMatch) != IS_NULL) { - if (UNEXPECTED(!(zephir_is_callable(&beforeMatch)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "Before-Match callback is not callable in matched route", "phalcon/Mvc/Router.zep", 784); - return; - } - ZEPHIR_INIT_NVAR(&_56$$77); - zephir_create_array(&_56$$77, 3, 0); - zephir_array_fast_append(&_56$$77, &handledUri); - zephir_array_fast_append(&_56$$77, &route); - zephir_array_fast_append(&_56$$77, this_ptr); - ZEPHIR_INIT_NVAR(&routeFound); - ZEPHIR_CALL_USER_FUNC_ARRAY(&routeFound, &beforeMatch, &_56$$77); - zephir_check_call_status(); - } - } else { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_57$$80); - ZVAL_STRING(&_57$$80, "router:notMatchedRoute"); - ZEPHIR_CALL_METHOD(&routeFound, &eventsManager, "fire", &_58, 0, &_57$$80, this_ptr, &route); - 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, 0, "phalcon/Mvc/Router.zep", 876); - if (Z_TYPE_P(&paths) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&paths), _61$$82, _62$$82, _59$$82) - { - ZEPHIR_INIT_NVAR(&part); - if (_62$$82 != NULL) { - ZVAL_STR_COPY(&part, _62$$82); - } else { - ZVAL_LONG(&part, _61$$82); - } - ZEPHIR_INIT_NVAR(&position); - ZVAL_COPY(&position, _59$$82); - if (UNEXPECTED(Z_TYPE_P(&part) != IS_STRING)) { - ZEPHIR_INIT_NVAR(&_63$$84); - object_init_ex(&_63$$84, phalcon_mvc_router_exception_ce); - ZEPHIR_INIT_NVAR(&_64$$84); - ZEPHIR_CONCAT_SV(&_64$$84, "Wrong key in paths: ", &part); - ZEPHIR_CALL_METHOD(NULL, &_63$$84, "__construct", &_30, 29, &_64$$84); - zephir_check_call_status(); - zephir_throw_exception_debug(&_63$$84, "phalcon/Mvc/Router.zep", 824); - ZEPHIR_MM_RESTORE(); - return; - } - _65$$83 = Z_TYPE_P(&position) != IS_STRING; - if (_65$$83) { - _65$$83 = Z_TYPE_P(&position) != IS_LONG; - } - if (_65$$83) { - continue; - } - ZEPHIR_OBS_NVAR(&matchPosition); - if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { - if (Z_TYPE_P(&converters) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&converter); - if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { - ZEPHIR_INIT_NVAR(&_66$$88); - ZEPHIR_INIT_NVAR(&_67$$88); - zephir_create_array(&_67$$88, 1, 0); - zephir_array_fast_append(&_67$$88, &matchPosition); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_66$$88, &converter, &_67$$88); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_66$$88, 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)) { - ZEPHIR_INIT_NVAR(&_68$$91); - ZEPHIR_INIT_NVAR(&_69$$91); - zephir_create_array(&_69$$91, 1, 0); - zephir_array_fast_append(&_69$$91, &position); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_68$$91, &converter, &_69$$91); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_68$$91, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&position) == IS_LONG) { - zephir_array_unset(&parts, &part, PH_SEPARATE); - } - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &paths, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_60$$82, &paths, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_60$$82)) { - break; - } - ZEPHIR_CALL_METHOD(&part, &paths, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&position, &paths, "current", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&part) != IS_STRING)) { - ZEPHIR_INIT_NVAR(&_70$$95); - object_init_ex(&_70$$95, phalcon_mvc_router_exception_ce); - ZEPHIR_INIT_NVAR(&_71$$95); - ZEPHIR_CONCAT_SV(&_71$$95, "Wrong key in paths: ", &part); - ZEPHIR_CALL_METHOD(NULL, &_70$$95, "__construct", &_30, 29, &_71$$95); - zephir_check_call_status(); - zephir_throw_exception_debug(&_70$$95, "phalcon/Mvc/Router.zep", 824); - ZEPHIR_MM_RESTORE(); - return; - } - _72$$94 = Z_TYPE_P(&position) != IS_STRING; - if (_72$$94) { - _72$$94 = Z_TYPE_P(&position) != IS_LONG; - } - if (_72$$94) { - continue; - } - ZEPHIR_OBS_NVAR(&matchPosition); - if (zephir_array_isset_fetch(&matchPosition, &matches, &position, 0)) { - if (Z_TYPE_P(&converters) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&converter); - if (zephir_array_isset_fetch(&converter, &converters, &part, 0)) { - ZEPHIR_INIT_NVAR(&_73$$99); - ZEPHIR_INIT_NVAR(&_74$$99); - zephir_create_array(&_74$$99, 1, 0); - zephir_array_fast_append(&_74$$99, &matchPosition); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_73$$99, &converter, &_74$$99); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_73$$99, 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)) { - ZEPHIR_INIT_NVAR(&_75$$102); - ZEPHIR_INIT_NVAR(&_76$$102); - zephir_create_array(&_76$$102, 1, 0); - zephir_array_fast_append(&_76$$102, &position); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_75$$102, &converter, &_76$$102); - zephir_check_call_status(); - zephir_array_update_zval(&parts, &part, &_75$$102, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&position) == IS_LONG) { - zephir_array_unset(&parts, &part, PH_SEPARATE); - } - } - } - ZEPHIR_CALL_METHOD(NULL, &paths, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&position); - ZEPHIR_INIT_NVAR(&part); - zephir_update_property_zval(this_ptr, ZEND_STRL("matches"), &matches); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("matchedRoute"), &route); - break; - } - ZEPHIR_CALL_METHOD(NULL, &_4, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&route); - if (zephir_is_true(&routeFound)) { - if (1) { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); - } - } else { - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("wasMatched"), &__$false); - } - } - if (!(zephir_is_true(&routeFound))) { - zephir_read_property(&_77$$107, this_ptr, ZEND_STRL("notFoundPaths"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(¬FoundPaths, &_77$$107); - if (Z_TYPE_P(¬FoundPaths) != IS_NULL) { - ZEPHIR_CALL_CE_STATIC(&parts, phalcon_mvc_router_route_ce, "getroutepaths", &_78, 0, ¬FoundPaths); + zephir_array_append(&columns, &_4$$4, PH_SEPARATE, "phalcon/Db/Dialect.zep", 125); + ZEPHIR_CALL_METHOD(NULL, &columnList, "next", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&routeFound); - ZVAL_BOOL(&routeFound, 1); - } - } - zephir_read_property(&_79, this_ptr, ZEND_STRL("defaultNamespace"), PH_NOISY_CC | PH_READONLY); - zephir_update_property_zval(this_ptr, ZEND_STRL("namespaceName"), &_79); - zephir_read_property(&_80, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC | PH_READONLY); - zephir_update_property_zval(this_ptr, ZEND_STRL("module"), &_80); - zephir_read_property(&_81, this_ptr, ZEND_STRL("defaultController"), PH_NOISY_CC | PH_READONLY); - zephir_update_property_zval(this_ptr, ZEND_STRL("controller"), &_81); - zephir_read_property(&_82, this_ptr, ZEND_STRL("defaultAction"), PH_NOISY_CC | PH_READONLY); - zephir_update_property_zval(this_ptr, ZEND_STRL("action"), &_82); - zephir_read_property(&_83, this_ptr, ZEND_STRL("defaultParams"), PH_NOISY_CC | PH_READONLY); - zephir_update_property_zval(this_ptr, ZEND_STRL("params"), &_83); - if (zephir_is_true(&routeFound)) { - ZEPHIR_OBS_VAR(&vnamespace); - if (zephir_array_isset_string_fetch(&vnamespace, &parts, SL("namespace"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("namespaceName"), &vnamespace); - zephir_array_unset_string(&parts, SL("namespace"), PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&module); - if (zephir_array_isset_string_fetch(&module, &parts, SL("module"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("module"), &module); - zephir_array_unset_string(&parts, SL("module"), PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&controller); - if (zephir_array_isset_string_fetch(&controller, &parts, SL("controller"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("controller"), &controller); - zephir_array_unset_string(&parts, SL("controller"), PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&action); - if (zephir_array_isset_string_fetch(&action, &parts, SL("action"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("action"), &action); - zephir_array_unset_string(&parts, SL("action"), PH_SEPARATE); - } - ZEPHIR_OBS_VAR(¶msStr); - if (zephir_array_isset_string_fetch(¶msStr, &parts, SL("params"), 0)) { - if (Z_TYPE_P(¶msStr) == IS_STRING) { - ZEPHIR_INIT_VAR(&_84$$115); - ZVAL_STRING(&_84$$115, "/"); - ZEPHIR_INIT_VAR(&strParams); - zephir_fast_trim(&strParams, ¶msStr, &_84$$115, ZEPHIR_TRIM_BOTH); - if (!ZEPHIR_IS_STRING_IDENTICAL(&strParams, "")) { - ZEPHIR_INIT_NVAR(¶ms); - zephir_fast_explode_str(¶ms, SL("/"), &strParams, LONG_MAX); - } - } - zephir_array_unset_string(&parts, SL("params"), PH_SEPARATE); - } - if (zephir_fast_count_int(¶ms)) { - ZEPHIR_INIT_VAR(&_85$$117); - zephir_fast_array_merge(&_85$$117, ¶ms, &parts); - zephir_update_property_zval(this_ptr, ZEND_STRL("params"), &_85$$117); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("params"), &parts); } } - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_86$$119); - ZVAL_STRING(&_86$$119, "router:afterCheckRoutes"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_86$$119, this_ptr); - zephir_check_call_status(); - } - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_NVAR(&column); + zephir_fast_join_str(return_value, SL(", "), &columns); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, isExactControllerName) +static PHP_METHOD(Phalcon_Db_Dialect, getCustomFunctions) { zval *this_ptr = getThis(); - RETURN_BOOL(1); + RETURN_MEMBER(getThis(), "customFunctions"); } -static PHP_METHOD(Phalcon_Mvc_Router, mount) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlColumn) { + zend_bool _5, _3$$4, _4$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *group, group_sub, groupRoutes, beforeMatch, hostname, routes, route, eventsManager, _0, _6, _1$$3, *_2$$5, _3$$5, *_4$$8, _5$$8; + zval bindCounts; + zval escapeChar; + zval *column = NULL, column_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, columnExpression, columnAlias, columnField, columnDomain, _6, _0$$3, _1$$6, _2$$7; zval *this_ptr = getThis(); - ZVAL_UNDEF(&group_sub); - ZVAL_UNDEF(&groupRoutes); - ZVAL_UNDEF(&beforeMatch); - ZVAL_UNDEF(&hostname); - ZVAL_UNDEF(&routes); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&columnExpression); + ZVAL_UNDEF(&columnAlias); + ZVAL_UNDEF(&columnField); + ZVAL_UNDEF(&columnDomain); ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_5$$8); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF(&_2$$7); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&bindCounts); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(group, phalcon_mvc_router_groupinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(column) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &group); + zephir_fetch_params(1, 1, 2, &column, &escapeChar_param, &bindCounts_param); + ZEPHIR_SEPARATE_PARAM(column); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_0); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_1$$3); - ZVAL_STRING(&_1$$3, "router:beforeMount"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_1$$3, this_ptr, group); + if (Z_TYPE_P(column) != IS_ARRAY) { + ZVAL_NULL(&_0$$3); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparequalified", NULL, 0, column, &_0$$3, &escapeChar); zephir_check_call_status(); + RETURN_MM(); } - ZEPHIR_CALL_METHOD(&groupRoutes, group, "getroutes", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(!(zephir_fast_count_int(&groupRoutes)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_router_exception_ce, "The group of routes does not contain any routes", "phalcon/Mvc/Router.zep", 1009); - return; - } - ZEPHIR_CALL_METHOD(&beforeMatch, group, "getbeforematch", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&beforeMatch) != IS_NULL) { - zephir_is_iterable(&groupRoutes, 0, "phalcon/Mvc/Router.zep", 1021); - if (Z_TYPE_P(&groupRoutes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&groupRoutes), _2$$5) - { - ZEPHIR_INIT_NVAR(&route); - ZVAL_COPY(&route, _2$$5); - ZEPHIR_CALL_METHOD(NULL, &route, "beforematch", NULL, 0, &beforeMatch); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); + if (!(zephir_array_isset_string(column, SL("type")))) { + ZEPHIR_OBS_VAR(&columnField); + zephir_array_fetch_long(&columnField, column, 0, PH_NOISY, "phalcon/Db/Dialect.zep", 160); + if (Z_TYPE_P(&columnField) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&columnExpression); + zephir_create_array(&columnExpression, 2, 0); + add_assoc_stringl_ex(&columnExpression, SL("type"), SL("scalar")); + zephir_array_update_string(&columnExpression, SL("value"), &columnField, PH_COPY | PH_SEPARATE); + } else if (ZEPHIR_IS_STRING_IDENTICAL(&columnField, "*")) { + ZEPHIR_INIT_VAR(&_1$$6); + zephir_create_array(&_1$$6, 1, 0); + add_assoc_stringl_ex(&_1$$6, SL("type"), SL("all")); + ZEPHIR_CPY_WRT(&columnExpression, &_1$$6); } else { - ZEPHIR_CALL_METHOD(NULL, &groupRoutes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$5, &groupRoutes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$5)) { - break; - } - ZEPHIR_CALL_METHOD(&route, &groupRoutes, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &route, "beforematch", NULL, 0, &beforeMatch); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &groupRoutes, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_INIT_VAR(&_2$$7); + zephir_create_array(&_2$$7, 2, 0); + add_assoc_stringl_ex(&_2$$7, SL("type"), SL("qualified")); + zephir_array_update_string(&_2$$7, SL("name"), &columnField, PH_COPY | PH_SEPARATE); + ZEPHIR_CPY_WRT(&columnExpression, &_2$$7); } - ZEPHIR_INIT_NVAR(&route); + ZEPHIR_OBS_VAR(&columnDomain); + _3$$4 = zephir_array_isset_long_fetch(&columnDomain, column, 1, 0); + if (_3$$4) { + _3$$4 = !ZEPHIR_IS_STRING_IDENTICAL(&columnDomain, ""); + } + if (_3$$4) { + zephir_array_update_string(&columnExpression, SL("domain"), &columnDomain, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&columnAlias); + _4$$4 = zephir_array_isset_long_fetch(&columnAlias, column, 2, 0); + if (_4$$4) { + _4$$4 = zephir_is_true(&columnAlias); + } + if (_4$$4) { + zephir_array_update_string(&columnExpression, SL("sqlAlias"), &columnAlias, PH_COPY | PH_SEPARATE); + } + } else { + ZEPHIR_CPY_WRT(&columnExpression, column); } - ZEPHIR_CALL_METHOD(&hostname, group, "gethostname", NULL, 0); + ZEPHIR_CALL_METHOD(column, this_ptr, "getsqlexpression", NULL, 0, &columnExpression, &escapeChar, &bindCounts); zephir_check_call_status(); - if (Z_TYPE_P(&hostname) != IS_NULL) { - zephir_is_iterable(&groupRoutes, 0, "phalcon/Mvc/Router.zep", 1030); - if (Z_TYPE_P(&groupRoutes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&groupRoutes), _4$$8) - { - ZEPHIR_INIT_NVAR(&route); - ZVAL_COPY(&route, _4$$8); - ZEPHIR_CALL_METHOD(NULL, &route, "sethostname", NULL, 0, &hostname); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &groupRoutes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$8, &groupRoutes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$8)) { - break; - } - ZEPHIR_CALL_METHOD(&route, &groupRoutes, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &route, "sethostname", NULL, 0, &hostname); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &groupRoutes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&route); + ZEPHIR_OBS_NVAR(&columnAlias); + _5 = zephir_array_isset_string_fetch(&columnAlias, &columnExpression, SL("sqlAlias"), 0); + if (!(_5)) { + ZEPHIR_OBS_NVAR(&columnAlias); + _5 = zephir_array_isset_string_fetch(&columnAlias, &columnExpression, SL("alias"), 0); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&routes, &_0); - ZEPHIR_INIT_VAR(&_6); - zephir_fast_array_merge(&_6, &routes, &groupRoutes); - zephir_update_property_zval(this_ptr, ZEND_STRL("routes"), &_6); - RETURN_THIS(); + if (_5) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparecolumnalias", NULL, 0, column, &columnAlias, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); + } + ZVAL_NULL(&_6); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparecolumnalias", NULL, 0, column, &_6, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, notFound) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpression) { - zend_bool _0; - zval *paths, paths_sub; + zend_bool _1$$9; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS, i = 0, _2$$9; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, type, times, postTimes, rawValue, value, _11, _12, _0$$7, _3$$9, _4$$11, _5$$11, _6$$8, _7$$14, _8$$14, _9$$18, _10$$18; + zval expression, bindCounts, placeholders; zval *this_ptr = getThis(); - ZVAL_UNDEF(&paths_sub); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&placeholders); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(×); + ZVAL_UNDEF(&postTimes); + ZVAL_UNDEF(&rawValue); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_0$$7); + ZVAL_UNDEF(&_3$$9); + ZVAL_UNDEF(&_4$$11); + ZVAL_UNDEF(&_5$$11); + ZVAL_UNDEF(&_6$$8); + ZVAL_UNDEF(&_7$$14); + ZVAL_UNDEF(&_8$$14); + ZVAL_UNDEF(&_9$$18); + ZVAL_UNDEF(&_10$$18); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(paths) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &paths); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); + } - _0 = Z_TYPE_P(paths) != IS_ARRAY; - if (_0) { - _0 = Z_TYPE_P(paths) != IS_STRING; - } - if (UNEXPECTED(_0)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STRW(phalcon_mvc_router_exception_ce, "The not-found paths must be an array or string", "phalcon/Mvc/Router.zep", 1052); + ZEPHIR_OBS_VAR(&type); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&type, &expression, SL("type"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL expression", "phalcon/Db/Dialect.zep", 224); return; } - zephir_update_property_zval(this_ptr, ZEND_STRL("notFoundPaths"), paths); - RETURN_THISW(); + do { + if (ZEPHIR_IS_STRING(&type, "scalar")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionscalar", NULL, 41, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "object")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionobject", NULL, 42, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "qualified")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionqualified", NULL, 43, &expression, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "literal")) { + zephir_array_fetch_string(&_0$$7, &expression, SL("value"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 258); + RETURN_CTOR(&_0$$7); + } + if (ZEPHIR_IS_STRING(&type, "placeholder")) { + ZEPHIR_OBS_VAR(×); + if (zephir_array_isset_string_fetch(×, &expression, SL("times"), 0)) { + ZEPHIR_INIT_VAR(&placeholders); + array_init(&placeholders); + ZEPHIR_OBS_VAR(&rawValue); + zephir_array_fetch_string(&rawValue, &expression, SL("rawValue"), PH_NOISY, "phalcon/Db/Dialect.zep", 264); + ZEPHIR_OBS_VAR(&value); + zephir_array_fetch_string(&value, &expression, SL("value"), PH_NOISY, "phalcon/Db/Dialect.zep", 265); + ZEPHIR_OBS_VAR(&postTimes); + if (zephir_array_isset_fetch(&postTimes, &bindCounts, &rawValue, 0)) { + ZEPHIR_CPY_WRT(×, &postTimes); + } + ZEPHIR_CPY_WRT(&_3$$9, ×); + _2$$9 = 1; + _1$$9 = 0; + if (ZEPHIR_GE_LONG(&_3$$9, _2$$9)) { + while (1) { + if (_1$$9) { + _2$$9++; + if (!(ZEPHIR_GE_LONG(&_3$$9, _2$$9))) { + break; + } + } else { + _1$$9 = 1; + } + i = _2$$9; + ZEPHIR_INIT_NVAR(&_4$$11); + ZVAL_LONG(&_4$$11, ((i - 1))); + ZEPHIR_INIT_NVAR(&_5$$11); + ZEPHIR_CONCAT_VV(&_5$$11, &value, &_4$$11); + zephir_array_append(&placeholders, &_5$$11, PH_SEPARATE, "phalcon/Db/Dialect.zep", 272); + } + } + zephir_fast_join_str(return_value, SL(", "), &placeholders); + RETURN_MM(); + } + zephir_array_fetch_string(&_6$$8, &expression, SL("value"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 278); + RETURN_CTOR(&_6$$8); + } + if (ZEPHIR_IS_STRING(&type, "binary-op")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionbinaryoperations", NULL, 44, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "unary-op")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionunaryoperations", NULL, 45, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "parentheses")) { + zephir_array_fetch_string(&_8$$14, &expression, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 304); + ZEPHIR_CALL_METHOD(&_7$$14, this_ptr, "getsqlexpression", NULL, 46, &_8$$14, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "(", &_7$$14, ")"); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "functionCall")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionfunctioncall", NULL, 47, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "list")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionlist", NULL, 48, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "all")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionall", NULL, 49, &expression, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "select")) { + zephir_array_fetch_string(&_10$$18, &expression, SL("value"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 336); + ZEPHIR_CALL_METHOD(&_9$$18, this_ptr, "select", NULL, 0, &_10$$18); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "(", &_9$$18, ")"); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "cast")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressioncastvalue", NULL, 50, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "convert")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressionconvertvalue", NULL, 51, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + if (ZEPHIR_IS_STRING(&type, "case")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpressioncase", NULL, 52, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + } while(0); + + ZEPHIR_INIT_VAR(&_11); + object_init_ex(&_11, phalcon_db_exception_ce); + ZEPHIR_INIT_VAR(&_12); + ZEPHIR_CONCAT_SVS(&_12, "Invalid SQL expression type '", &type, "'"); + ZEPHIR_CALL_METHOD(NULL, &_11, "__construct", NULL, 29, &_12); + zephir_check_call_status(); + zephir_throw_exception_debug(&_11, "phalcon/Db/Dialect.zep", 369); + ZEPHIR_MM_RESTORE(); + return; } -static PHP_METHOD(Phalcon_Mvc_Router, removeExtraSlashes) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlTable) { - zval *remove_param = NULL, __$true, __$false; - zend_bool remove; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *table, table_sub, *escapeChar_param = NULL, tableName, schemaName, aliasName; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&table_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&aliasName); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(remove) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &remove_param); - if (UNEXPECTED(Z_TYPE_P(remove_param) != IS_TRUE && Z_TYPE_P(remove_param) != IS_FALSE)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'remove' must be of the type bool")); - RETURN_NULL(); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table, &escapeChar_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - remove = (Z_TYPE_P(remove_param) == IS_TRUE); - if (remove) { - zephir_update_property_zval(this_ptr, ZEND_STRL("removeExtraSlashes"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("removeExtraSlashes"), &__$false); + if (Z_TYPE_P(table) == IS_ARRAY) { + ZEPHIR_OBS_VAR(&tableName); + zephir_array_fetch_long(&tableName, table, 0, PH_NOISY, "phalcon/Db/Dialect.zep", 385); + ZEPHIR_OBS_VAR(&schemaName); + zephir_array_isset_long_fetch(&schemaName, table, 1, 0); + ZEPHIR_OBS_VAR(&aliasName); + zephir_array_isset_long_fetch(&aliasName, table, 2, 0); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparetable", NULL, 0, &tableName, &schemaName, &aliasName, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); } - RETURN_THISW(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "escape", NULL, 53, table, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, setDefaultAction) +static PHP_METHOD(Phalcon_Db_Dialect, limit) { + zend_bool _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *actionName_param = NULL; - zval actionName; + zval *sqlQuery_param = NULL, *number, number_sub, _0$$3, _1$$3, _3$$3, _4$$4, _5$$4; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&actionName); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&number_sub); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_5$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(actionName) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(sqlQuery) + Z_PARAM_ZVAL(number) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &actionName_param); - if (UNEXPECTED(Z_TYPE_P(actionName_param) != IS_STRING && Z_TYPE_P(actionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'actionName' must be of the type string")); + zephir_fetch_params(1, 2, 0, &sqlQuery_param, &number); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(actionName_param) == IS_STRING)) { - zephir_get_strval(&actionName, actionName_param); + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); } else { - ZEPHIR_INIT_VAR(&actionName); + ZEPHIR_INIT_VAR(&sqlQuery); } - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultAction"), &actionName); - RETURN_THIS(); + if (Z_TYPE_P(number) == IS_ARRAY) { + zephir_array_fetch_long(&_0$$3, number, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 428); + ZEPHIR_INIT_VAR(&_1$$3); + ZEPHIR_CONCAT_SV(&_1$$3, " LIMIT ", &_0$$3); + zephir_concat_self(&sqlQuery, &_1$$3); + _2$$3 = zephir_array_isset_long(number, 1); + if (_2$$3) { + zephir_array_fetch_long(&_3$$3, number, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 430); + _2$$3 = ((zephir_fast_strlen_ev(&_3$$3)) ? 1 : 0); + } + if (_2$$3) { + zephir_array_fetch_long(&_4$$4, number, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 431); + ZEPHIR_INIT_VAR(&_5$$4); + ZEPHIR_CONCAT_SV(&_5$$4, " OFFSET ", &_4$$4); + zephir_concat_self(&sqlQuery, &_5$$4); + } + RETURN_CTOR(&sqlQuery); + } + ZEPHIR_CONCAT_VSV(return_value, &sqlQuery, " LIMIT ", number); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, setDefaultController) +static PHP_METHOD(Phalcon_Db_Dialect, registerCustomFunction) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *controllerName_param = NULL; - zval controllerName; + zval *name_param = NULL, *customFunction, customFunction_sub; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerName); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&customFunction_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(controllerName) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_ZVAL(customFunction) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &controllerName_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); - } else { - ZEPHIR_INIT_VAR(&controllerName); - } + zephir_fetch_params(1, 2, 0, &name_param, &customFunction); + zephir_get_strval(&name, name_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultController"), &controllerName); + zephir_update_property_array(this_ptr, SL("customFunctions"), &name, customFunction); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Router, setDefaultModule) +static PHP_METHOD(Phalcon_Db_Dialect, releaseSavepoint) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *moduleName_param = NULL; - zval moduleName; - zval *this_ptr = getThis(); + zval *name_param = NULL; + zval name; + zval *this_ptr = getThis(); - ZVAL_UNDEF(&moduleName); + ZVAL_UNDEF(&name); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(moduleName) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &moduleName_param); - if (UNEXPECTED(Z_TYPE_P(moduleName_param) != IS_STRING && Z_TYPE_P(moduleName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'moduleName' must be of the type string")); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(moduleName_param) == IS_STRING)) { - zephir_get_strval(&moduleName, moduleName_param); + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - ZEPHIR_INIT_VAR(&moduleName); + ZEPHIR_INIT_VAR(&name); } - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultModule"), &moduleName); - RETURN_THIS(); + ZEPHIR_CONCAT_SV(return_value, "RELEASE SAVEPOINT ", &name); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, setDefaultNamespace) +static PHP_METHOD(Phalcon_Db_Dialect, rollbackSavepoint) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *namespaceName_param = NULL; - zval namespaceName; + zval *name_param = NULL; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&namespaceName); + ZVAL_UNDEF(&name); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(namespaceName) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &namespaceName_param); - if (UNEXPECTED(Z_TYPE_P(namespaceName_param) != IS_STRING && Z_TYPE_P(namespaceName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'namespaceName' must be of the type string")); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(namespaceName_param) == IS_STRING)) { - zephir_get_strval(&namespaceName, namespaceName_param); + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - ZEPHIR_INIT_VAR(&namespaceName); + ZEPHIR_INIT_VAR(&name); } - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultNamespace"), &namespaceName); - RETURN_THIS(); + ZEPHIR_CONCAT_SV(return_value, "ROLLBACK TO SAVEPOINT ", &name); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, setDefaults) +static PHP_METHOD(Phalcon_Db_Dialect, select) { - zval _0$$3; + zend_bool _5, _9, _12, _15, _18, _21, _23; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *defaults_param = NULL, namespaceName, module, controller, action, params; - zval defaults; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *definition_param = NULL, tables, columns, sql, distinct, joins, where, escapeChar, groupBy, having, orderBy, limit, forUpdate, bindCounts, _0, _1, _2, _3, _4, _6$$10, _7$$10, _8$$10, _10$$11, _11$$11, _13$$12, _14$$12, _16$$13, _17$$13, _19$$14, _20$$14; + zval definition, _22$$15; zval *this_ptr = getThis(); - ZVAL_UNDEF(&defaults); - ZVAL_UNDEF(&namespaceName); - ZVAL_UNDEF(&module); - ZVAL_UNDEF(&controller); - ZVAL_UNDEF(&action); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&_22$$15); + ZVAL_UNDEF(&tables); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&distinct); + ZVAL_UNDEF(&joins); + ZVAL_UNDEF(&where); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&groupBy); + ZVAL_UNDEF(&having); + ZVAL_UNDEF(&orderBy); + ZVAL_UNDEF(&limit); + ZVAL_UNDEF(&forUpdate); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_6$$10); + ZVAL_UNDEF(&_7$$10); + ZVAL_UNDEF(&_8$$10); + ZVAL_UNDEF(&_10$$11); + ZVAL_UNDEF(&_11$$11); + ZVAL_UNDEF(&_13$$12); + ZVAL_UNDEF(&_14$$12); + ZVAL_UNDEF(&_16$$13); + ZVAL_UNDEF(&_17$$13); + ZVAL_UNDEF(&_19$$14); + ZVAL_UNDEF(&_20$$14); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(defaults) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &defaults_param); - ZEPHIR_OBS_COPY_OR_DUP(&defaults, defaults_param); + zephir_fetch_params(1, 1, 0, &definition_param); + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - if (zephir_array_isset_string_fetch(&namespaceName, &defaults, SL("namespace"), 1)) { - zephir_cast_to_string(&_0$$3, &namespaceName); - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultNamespace"), &_0$$3); + ZEPHIR_OBS_VAR(&tables); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&tables, &definition, SL("tables"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'tables' is required in the definition array", "phalcon/Db/Dialect.zep", 477); + return; } - if (zephir_array_isset_string_fetch(&module, &defaults, SL("module"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultModule"), &module); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'columns' is required in the definition array", "phalcon/Db/Dialect.zep", 483); + return; } - if (zephir_array_isset_string_fetch(&controller, &defaults, SL("controller"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultController"), &controller); + ZEPHIR_OBS_VAR(&distinct); + if (zephir_array_isset_string_fetch(&distinct, &definition, SL("distinct"), 0)) { + ZEPHIR_INIT_VAR(&sql); + if (zephir_is_true(&distinct)) { + ZVAL_STRING(&sql, "SELECT DISTINCT"); + } else { + ZVAL_STRING(&sql, "SELECT ALL"); + } + } else { + ZEPHIR_INIT_NVAR(&sql); + ZVAL_STRING(&sql, "SELECT"); } - if (zephir_array_isset_string_fetch(&action, &defaults, SL("action"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultAction"), &action); + ZEPHIR_OBS_VAR(&bindCounts); + zephir_array_isset_string_fetch(&bindCounts, &definition, SL("bindCounts"), 0); + if (Z_TYPE_P(&bindCounts) != IS_ARRAY) { + ZEPHIR_INIT_NVAR(&bindCounts); + array_init(&bindCounts); } - if (zephir_array_isset_string_fetch(¶ms, &defaults, SL("params"), 1)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("defaultParams"), ¶ms); + zephir_read_property(&_0, this_ptr, ZEND_STRL("escapeChar"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&escapeChar, &_0); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getcolumnlist", NULL, 54, &columns, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + ZEPHIR_CONCAT_SV(&_2, " ", &_1); + zephir_concat_self(&sql, &_2); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getsqlexpressionfrom", NULL, 55, &tables, &escapeChar); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4); + ZEPHIR_CONCAT_SV(&_4, " ", &_3); + zephir_concat_self(&sql, &_4); + ZEPHIR_OBS_VAR(&joins); + _5 = zephir_array_isset_string_fetch(&joins, &definition, SL("joins"), 0); + if (_5) { + _5 = zephir_is_true(&joins); } - RETURN_THIS(); + if (_5) { + zephir_array_fetch_string(&_7$$10, &definition, SL("joins"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 517); + ZEPHIR_CALL_METHOD(&_6$$10, this_ptr, "getsqlexpressionjoins", NULL, 56, &_7$$10, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_8$$10); + ZEPHIR_CONCAT_SV(&_8$$10, " ", &_6$$10); + zephir_concat_self(&sql, &_8$$10); + } + ZEPHIR_OBS_VAR(&where); + _9 = zephir_array_isset_string_fetch(&where, &definition, SL("where"), 0); + if (_9) { + _9 = zephir_is_true(&where); + } + if (_9) { + ZEPHIR_CALL_METHOD(&_10$$11, this_ptr, "getsqlexpressionwhere", NULL, 57, &where, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_11$$11); + ZEPHIR_CONCAT_SV(&_11$$11, " ", &_10$$11); + zephir_concat_self(&sql, &_11$$11); + } + ZEPHIR_OBS_VAR(&groupBy); + _12 = zephir_array_isset_string_fetch(&groupBy, &definition, SL("group"), 0); + if (_12) { + _12 = zephir_is_true(&groupBy); + } + if (_12) { + ZEPHIR_CALL_METHOD(&_13$$12, this_ptr, "getsqlexpressiongroupby", NULL, 58, &groupBy, &escapeChar); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_14$$12); + ZEPHIR_CONCAT_SV(&_14$$12, " ", &_13$$12); + zephir_concat_self(&sql, &_14$$12); + } + ZEPHIR_OBS_VAR(&having); + _15 = zephir_array_isset_string_fetch(&having, &definition, SL("having"), 0); + if (_15) { + _15 = zephir_is_true(&having); + } + if (_15) { + ZEPHIR_CALL_METHOD(&_16$$13, this_ptr, "getsqlexpressionhaving", NULL, 59, &having, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_17$$13); + ZEPHIR_CONCAT_SV(&_17$$13, " ", &_16$$13); + zephir_concat_self(&sql, &_17$$13); + } + ZEPHIR_OBS_VAR(&orderBy); + _18 = zephir_array_isset_string_fetch(&orderBy, &definition, SL("order"), 0); + if (_18) { + _18 = zephir_is_true(&orderBy); + } + if (_18) { + ZEPHIR_CALL_METHOD(&_19$$14, this_ptr, "getsqlexpressionorderby", NULL, 60, &orderBy, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_20$$14); + ZEPHIR_CONCAT_SV(&_20$$14, " ", &_19$$14); + zephir_concat_self(&sql, &_20$$14); + } + ZEPHIR_OBS_VAR(&limit); + _21 = zephir_array_isset_string_fetch(&limit, &definition, SL("limit"), 0); + if (_21) { + _21 = zephir_is_true(&limit); + } + if (_21) { + ZEPHIR_INIT_VAR(&_22$$15); + zephir_create_array(&_22$$15, 2, 0); + zephir_array_update_string(&_22$$15, SL("sql"), &sql, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_22$$15, SL("value"), &limit, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&sql, this_ptr, "getsqlexpressionlimit", NULL, 61, &_22$$15, &escapeChar, &bindCounts); + zephir_check_call_status(); + } + _23 = zephir_array_isset_string_fetch(&forUpdate, &definition, SL("forUpdate"), 1); + if (_23) { + _23 = zephir_is_true(&forUpdate); + } + if (_23) { + zephir_concat_self_str(&sql, SL(" FOR UPDATE")); + } + RETURN_CCTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Router, getDefaults) +static PHP_METHOD(Phalcon_Db_Dialect, supportsSavepoints) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(1); +} + +static PHP_METHOD(Phalcon_Db_Dialect, supportsReleaseSavepoints) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); ZEPHIR_MM_GROW(); - zephir_create_array(return_value, 5, 0); - ZEPHIR_OBS_VAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultNamespace"), PH_NOISY_CC); - zephir_array_update_string(return_value, SL("namespace"), &_0, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultModule"), PH_NOISY_CC); - zephir_array_update_string(return_value, SL("module"), &_0, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultController"), PH_NOISY_CC); - zephir_array_update_string(return_value, SL("controller"), &_0, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultAction"), PH_NOISY_CC); - zephir_array_update_string(return_value, SL("action"), &_0, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("defaultParams"), PH_NOISY_CC); - zephir_array_update_string(return_value, SL("params"), &_0, PH_COPY | PH_SEPARATE); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "supportssavepoints", NULL, 0); + zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Router, setEventsManager) +static PHP_METHOD(Phalcon_Db_Dialect, getColumnSize) { - zval *eventsManager, eventsManager_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventsManager_sub); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); -} - -static PHP_METHOD(Phalcon_Mvc_Router, wasMatched) -{ - zval *this_ptr = getThis(); - + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &column); - RETURN_MEMBER(getThis(), "wasMatched"); + ZEPHIR_CALL_METHOD(&_0, column, "getsize", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "(", &_0, ")"); + RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Mvc_Router(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Db_Dialect, getColumnSizeAndScale) { - zval _0, _2, _4, _6, _8, _10, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("routes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("routes"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("params"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("matches"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("matches"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("keyRouteIds"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("keyRouteIds"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("keyRouteNames"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("keyRouteNames"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("defaultParams"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("defaultParams"), &_11$$8); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_RouterInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, RouterInterface, phalcon, mvc_routerinterface, phalcon_mvc_routerinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, add); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addConnect); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addDelete); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addHead); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addGet); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addOptions); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addPatch); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addPost); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addPurge); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addPut); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, addTrace); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, attach); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, clear); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getActionName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getControllerName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getMatchedRoute); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getMatches); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getModuleName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getNamespaceName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getParams); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getRoutes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getRouteById); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, getRouteByName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, handle); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, mount); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, setDefaultAction); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, setDefaultController); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, setDefaultModule); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, setDefaults); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_RouterInterface, wasMatched); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Url) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, Url, phalcon, mvc_url, phalcon_di_abstractinjectionaware_ce, phalcon_mvc_url_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_url_ce, SL("baseUri"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_url_ce, SL("basePath"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_url_ce, SL("router"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_url_ce, SL("staticBaseUri"), ZEND_ACC_PROTECTED); - zend_class_implements(phalcon_mvc_url_ce, 1, phalcon_mvc_url_urlinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Mvc_Url, __construct) -{ - zval *router = NULL, router_sub, __$null; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&router_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(router, phalcon_mvc_routerinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(0, 1, &router); - if (!router) { - router = &router_sub; - router = &__$null; - } + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &column); - zephir_update_property_zval(this_ptr, ZEND_STRL("router"), router); + ZEPHIR_CALL_METHOD(&_0, column, "getsize", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, column, "getscale", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "(", &_0, ",", &_1, ")"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, get) +static PHP_METHOD(Phalcon_Db_Dialect, checkColumnType) { - zval strUri, _16$$15; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool local, _0$$3, _1$$3, _20$$16; - zval *uri = NULL, uri_sub, *args = NULL, args_sub, *local_param = NULL, *baseUri = NULL, baseUri_sub, __$null, router, container, routeName, route, queryString, _2$$4, _3$$4, _4$$4, _5$$4, _6$$9, _11$$9, _14$$9, _15$$9, _7$$11, _8$$11, _9$$11, _10$$11, _12$$14, _13$$14, _17$$15, _18$$15, _19$$15, _21$$17, _22$$17, _23$$18, _24$$19; + zval *column, column_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&uri_sub); - ZVAL_UNDEF(&args_sub); - ZVAL_UNDEF(&baseUri_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&router); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&routeName); - ZVAL_UNDEF(&route); - ZVAL_UNDEF(&queryString); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_11$$9); - ZVAL_UNDEF(&_14$$9); - ZVAL_UNDEF(&_15$$9); - ZVAL_UNDEF(&_7$$11); - ZVAL_UNDEF(&_8$$11); - ZVAL_UNDEF(&_9$$11); - ZVAL_UNDEF(&_10$$11); - ZVAL_UNDEF(&_12$$14); - ZVAL_UNDEF(&_13$$14); - ZVAL_UNDEF(&_17$$15); - ZVAL_UNDEF(&_18$$15); - ZVAL_UNDEF(&_19$$15); - ZVAL_UNDEF(&_21$$17); - ZVAL_UNDEF(&_22$$17); - ZVAL_UNDEF(&_23$$18); - ZVAL_UNDEF(&_24$$19); - ZVAL_UNDEF(&strUri); - ZVAL_UNDEF(&_16$$15); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 4) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(uri) - Z_PARAM_ZVAL_OR_NULL(args) - Z_PARAM_BOOL_OR_NULL(local, is_null_true) - Z_PARAM_ZVAL_OR_NULL(baseUri) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 4, &uri, &args, &local_param, &baseUri); - if (!uri) { - uri = &uri_sub; - ZEPHIR_CPY_WRT(uri, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(uri); - } - if (!args) { - args = &args_sub; - args = &__$null; - } - if (!local_param) { - local = 0; - } else { - local = zephir_get_boolval(local_param); - } - if (!baseUri) { - baseUri = &baseUri_sub; - ZEPHIR_CPY_WRT(baseUri, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(baseUri); - } + zephir_fetch_params(1, 1, 0, &column); - if (local == 0) { - _0$$3 = Z_TYPE_P(uri) == IS_STRING; - if (_0$$3) { - _1$$3 = zephir_memnstr_str(uri, SL("//"), "phalcon/Mvc/Url.zep", 107); - if (!(_1$$3)) { - _1$$3 = zephir_memnstr_str(uri, SL(":"), "phalcon/Mvc/Url.zep", 107); - } - _0$$3 = _1$$3; - } - if (_0$$3) { - ZEPHIR_INIT_VAR(&_2$$4); - ZEPHIR_INIT_VAR(&_3$$4); - ZVAL_STRING(&_3$$4, "#^((//)|([a-z0-9]+://)|([a-z0-9]+:))#i"); - ZEPHIR_INIT_VAR(&_4$$4); - ZEPHIR_INIT_VAR(&_5$$4); - ZVAL_STRING(&_5$$4, "#^((//)|([a-z0-9]+://)|([a-z0-9]+:))#i"); - zephir_preg_match(&_4$$4, &_5$$4, uri, &_2$$4, 0, 0 , 0 ); - if (zephir_is_true(&_4$$4)) { - local = 0; - } else { - local = 1; - } - } else { - local = 1; - } - } - if (Z_TYPE_P(baseUri) != IS_STRING) { - ZEPHIR_CALL_METHOD(baseUri, this_ptr, "getbaseuri", NULL, 0); - zephir_check_call_status(); - } - if (Z_TYPE_P(uri) == IS_ARRAY) { - ZEPHIR_OBS_VAR(&routeName); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&routeName, uri, SL("for"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_url_exception_ce, "It's necessary to define the route name with the parameter 'for'", "phalcon/Mvc/Url.zep", 126); - return; - } - zephir_read_property(&_6$$9, this_ptr, ZEND_STRL("router"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&router, &_6$$9); - if (UNEXPECTED(!zephir_is_true(&router))) { - zephir_read_property(&_7$$11, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_7$$11); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_url_exception_ce, "A dependency injection container is required to access the 'router' service", "phalcon/Mvc/Url.zep", 140); - return; - } - ZEPHIR_INIT_VAR(&_9$$11); - ZVAL_STRING(&_9$$11, "router"); - ZEPHIR_CALL_METHOD(&_8$$11, &container, "has", NULL, 0, &_9$$11); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_8$$11))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_url_exception_ce, "A dependency injection container is required to access the 'router' service", "phalcon/Mvc/Url.zep", 146); - return; - } - ZEPHIR_INIT_NVAR(&_9$$11); - ZVAL_STRING(&_9$$11, "router"); - ZEPHIR_CALL_METHOD(&_10$$11, &container, "getshared", NULL, 0, &_9$$11); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&router, &_10$$11); - zephir_update_property_zval(this_ptr, ZEND_STRL("router"), &router); - } - ZEPHIR_CALL_METHOD(&_11$$9, &router, "getroutebyname", NULL, 0, &routeName); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&route, &_11$$9); - if (UNEXPECTED(Z_TYPE_P(&route) != IS_OBJECT)) { - ZEPHIR_INIT_VAR(&_12$$14); - object_init_ex(&_12$$14, phalcon_mvc_url_exception_ce); - ZEPHIR_INIT_VAR(&_13$$14); - ZEPHIR_CONCAT_SVS(&_13$$14, "Cannot obtain a route using the name '", &routeName, "'"); - ZEPHIR_CALL_METHOD(NULL, &_12$$14, "__construct", NULL, 29, &_13$$14); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$14, "phalcon/Mvc/Url.zep", 161); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_14$$9); - ZEPHIR_CALL_METHOD(&_11$$9, &route, "getpattern", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_15$$9, &route, "getreversedpaths", NULL, 0); - zephir_check_call_status(); - phalcon_replace_paths(&_14$$9, &_11$$9, &_15$$9, uri); - ZEPHIR_CPY_WRT(uri, &_14$$9); - } - if (local) { - zephir_cast_to_string(&_16$$15, uri); - ZEPHIR_CPY_WRT(&strUri, &_16$$15); - ZEPHIR_INIT_VAR(&_17$$15); - ZEPHIR_CONCAT_VV(&_17$$15, baseUri, &strUri); - ZEPHIR_INIT_VAR(&_18$$15); - ZVAL_STRING(&_18$$15, "#(?= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - zephir_get_global(&_SERVER, SL("_SERVER")); + zephir_fetch_params(1, 1, 0, &column); - zephir_read_property(&_0, this_ptr, ZEND_STRL("baseUri"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&baseUri, &_0); - if (Z_TYPE_P(&baseUri) == IS_NULL) { - ZEPHIR_OBS_VAR(&phpSelf); - if (zephir_array_isset_string_fetch(&phpSelf, &_SERVER, SL("PHP_SELF"), 0)) { - ZEPHIR_INIT_VAR(&uri); - phalcon_get_uri(&uri, &phpSelf); - } else { - ZEPHIR_INIT_NVAR(&uri); - ZVAL_NULL(&uri); - } - ZEPHIR_INIT_NVAR(&baseUri); - if (!(zephir_is_true(&uri))) { - ZVAL_STRING(&baseUri, "/"); - } else { - ZEPHIR_CONCAT_SVS(&baseUri, "/", &uri, "/"); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("baseUri"), &baseUri); + + ZEPHIR_CALL_METHOD(&_0, column, "gettype", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&_0) != IS_STRING) { + RETURN_MM_STRING(""); } - RETURN_CCTOR(&baseUri); + ZEPHIR_RETURN_CALL_METHOD(column, "gettype", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, getStatic) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionAll) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *uri = NULL, uri_sub, __$null, _0, _1, _2; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, domain, _0; + zval expression; zval *this_ptr = getThis(); - ZVAL_UNDEF(&uri_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&domain); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ARRAY(expression) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(uri) + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &uri); - if (!uri) { - uri = &uri_sub; - uri = &__$null; + zephir_fetch_params(1, 1, 1, &expression_param, &escapeChar_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getstaticbaseuri", NULL, 0); - zephir_check_call_status(); - ZVAL_NULL(&_1); - ZVAL_NULL(&_2); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "get", NULL, 0, uri, &_1, &_2, &_0); + ZEPHIR_OBS_VAR(&domain); + zephir_array_isset_string_fetch(&domain, &expression, SL("domain"), 0); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "*"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparequalified", NULL, 0, &_0, &domain, &escapeChar); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, getStaticBaseUri) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionBinaryOperations) { - zval staticBaseUri, _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, left, right, _0, _1, _2; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&staticBaseUri); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&left); + ZVAL_UNDEF(&right); ZVAL_UNDEF(&_0); - - - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("staticBaseUri"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&staticBaseUri, &_0); - if (Z_TYPE_P(&staticBaseUri) != IS_NULL) { - RETURN_CCTOR(&staticBaseUri); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getbaseuri", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Url, setBasePath) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *basePath_param = NULL; - zval basePath; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&basePath); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(basePath) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &basePath_param); - if (UNEXPECTED(Z_TYPE_P(basePath_param) != IS_STRING && Z_TYPE_P(basePath_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'basePath' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(basePath_param) == IS_STRING)) { - zephir_get_strval(&basePath, basePath_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&basePath); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("basePath"), &basePath); - RETURN_THIS(); + zephir_array_fetch_string(&_0, &expression, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 654); + ZEPHIR_CALL_METHOD(&left, this_ptr, "getsqlexpression", NULL, 0, &_0, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_1, &expression, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 660); + ZEPHIR_CALL_METHOD(&right, this_ptr, "getsqlexpression", NULL, 46, &_1, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_2, &expression, SL("op"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 665); + ZEPHIR_CONCAT_VSVSV(return_value, &left, " ", &_2, " ", &right); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, setBaseUri) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionCase) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *baseUri_param = NULL, _0; - zval baseUri; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar, sql; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, whenClause, _0, _1, _2, _3, *_4, _5, _6$$3, _7$$4, _8$$4, _9$$4, _10$$4, _11$$4, _12$$5, _13$$5, _14$$5, _15$$6, _16$$7, _17$$7, _18$$7, _19$$7, _20$$7, _21$$8, _22$$8, _23$$8; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&baseUri); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&whenClause); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$4); + ZVAL_UNDEF(&_11$$4); + ZVAL_UNDEF(&_12$$5); + ZVAL_UNDEF(&_13$$5); + ZVAL_UNDEF(&_14$$5); + ZVAL_UNDEF(&_15$$6); + ZVAL_UNDEF(&_16$$7); + ZVAL_UNDEF(&_17$$7); + ZVAL_UNDEF(&_18$$7); + ZVAL_UNDEF(&_19$$7); + ZVAL_UNDEF(&_20$$7); + ZVAL_UNDEF(&_21$$8); + ZVAL_UNDEF(&_22$$8); + ZVAL_UNDEF(&_23$$8); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&sql); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(baseUri) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &baseUri_param); - if (UNEXPECTED(Z_TYPE_P(baseUri_param) != IS_STRING && Z_TYPE_P(baseUri_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'baseUri' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(baseUri_param) == IS_STRING)) { - zephir_get_strval(&baseUri, baseUri_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&baseUri); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("baseUri"), &baseUri); - zephir_read_property(&_0, this_ptr, ZEND_STRL("staticBaseUri"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - zephir_update_property_zval(this_ptr, ZEND_STRL("staticBaseUri"), &baseUri); + zephir_array_fetch_string(&_1, &expression, SL("expr"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 682); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getsqlexpression", NULL, 0, &_1, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2); + ZEPHIR_CONCAT_SV(&_2, "CASE ", &_0); + zephir_get_strval(&sql, &_2); + zephir_array_fetch_string(&_3, &expression, SL("when-clauses"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 684); + zephir_is_iterable(&_3, 0, "phalcon/Db/Dialect.zep", 695); + if (Z_TYPE_P(&_3) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_3), _4) + { + ZEPHIR_INIT_NVAR(&whenClause); + ZVAL_COPY(&whenClause, _4); + zephir_array_fetch_string(&_6$$3, &whenClause, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 685); + if (ZEPHIR_IS_STRING(&_6$$3, "when")) { + zephir_array_fetch_string(&_8$$4, &whenClause, SL("expr"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 687); + ZEPHIR_CALL_METHOD(&_7$$4, this_ptr, "getsqlexpression", NULL, 46, &_8$$4, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_10$$4, &whenClause, SL("then"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 689); + ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "getsqlexpression", NULL, 46, &_10$$4, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_11$$4); + ZEPHIR_CONCAT_SVSV(&_11$$4, " WHEN ", &_7$$4, " THEN ", &_9$$4); + zephir_concat_self(&sql, &_11$$4); + } else { + zephir_array_fetch_string(&_13$$5, &whenClause, SL("expr"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 691); + ZEPHIR_CALL_METHOD(&_12$$5, this_ptr, "getsqlexpression", NULL, 46, &_13$$5, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_14$$5); + ZEPHIR_CONCAT_SV(&_14$$5, " ELSE ", &_12$$5); + zephir_concat_self(&sql, &_14$$5); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_3, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_3, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&whenClause, &_3, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_fetch_string(&_15$$6, &whenClause, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 685); + if (ZEPHIR_IS_STRING(&_15$$6, "when")) { + zephir_array_fetch_string(&_17$$7, &whenClause, SL("expr"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 687); + ZEPHIR_CALL_METHOD(&_16$$7, this_ptr, "getsqlexpression", NULL, 46, &_17$$7, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_19$$7, &whenClause, SL("then"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 689); + ZEPHIR_CALL_METHOD(&_18$$7, this_ptr, "getsqlexpression", NULL, 46, &_19$$7, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_20$$7); + ZEPHIR_CONCAT_SVSV(&_20$$7, " WHEN ", &_16$$7, " THEN ", &_18$$7); + zephir_concat_self(&sql, &_20$$7); + } else { + zephir_array_fetch_string(&_22$$8, &whenClause, SL("expr"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 691); + ZEPHIR_CALL_METHOD(&_21$$8, this_ptr, "getsqlexpression", NULL, 46, &_22$$8, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_23$$8); + ZEPHIR_CONCAT_SV(&_23$$8, " ELSE ", &_21$$8); + zephir_concat_self(&sql, &_23$$8); + } + ZEPHIR_CALL_METHOD(NULL, &_3, "next", NULL, 0); + zephir_check_call_status(); + } } - RETURN_THIS(); + ZEPHIR_INIT_NVAR(&whenClause); + ZEPHIR_CONCAT_VS(return_value, &sql, " END"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, setStaticBaseUri) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionCastValue) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *staticBaseUri_param = NULL; - zval staticBaseUri; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, left, right, _0, _1; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&staticBaseUri); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&left); + ZVAL_UNDEF(&right); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(staticBaseUri) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &staticBaseUri_param); - if (UNEXPECTED(Z_TYPE_P(staticBaseUri_param) != IS_STRING && Z_TYPE_P(staticBaseUri_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'staticBaseUri' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(staticBaseUri_param) == IS_STRING)) { - zephir_get_strval(&staticBaseUri, staticBaseUri_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&staticBaseUri); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("staticBaseUri"), &staticBaseUri); - RETURN_THIS(); + zephir_array_fetch_string(&_0, &expression, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 712); + ZEPHIR_CALL_METHOD(&left, this_ptr, "getsqlexpression", NULL, 0, &_0, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_1, &expression, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 718); + ZEPHIR_CALL_METHOD(&right, this_ptr, "getsqlexpression", NULL, 46, &_1, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "CAST(", &left, " AS ", &right, ")"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Url, path) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionConvertValue) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *path_param = NULL, _0; - zval path; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, left, right, _0, _1; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&path); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&left); + ZVAL_UNDEF(&right); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(path) + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &path_param); - if (!path_param) { - ZEPHIR_INIT_VAR(&path); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - zephir_get_strval(&path, path_param); + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("basePath"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CONCAT_VV(return_value, &_0, &path); - RETURN_MM(); -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_View) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc, View, phalcon, mvc_view, phalcon_di_injectable_ce, phalcon_mvc_view_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_view_ce, SL("actionName"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("activeRenderPaths"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_view_ce, SL("basePath"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_view_ce, SL("content"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("controllerName"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_mvc_view_ce, SL("currentRenderLevel"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_view_ce, SL("disabled"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("disabledLevels"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_view_ce, SL("engines"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("layout"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_view_ce, SL("layoutsDir"), "", ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_view_ce, SL("mainView"), "index", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("options"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("params"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("pickView"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_view_ce, SL("partialsDir"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("registeredEngines"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_mvc_view_ce, SL("renderLevel"), 5, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("templatesAfter"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("templatesBefore"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("viewsDirs"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_view_ce, SL("viewParams"), ZEND_ACC_PROTECTED); - phalcon_mvc_view_ce->create_object = zephir_init_properties_Phalcon_Mvc_View; - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_ACTION_VIEW"), 1); - - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_BEFORE_TEMPLATE"), 2); - - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_LAYOUT"), 3); - - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_MAIN_LAYOUT"), 5); - - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_NO_RENDER"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_view_ce, SL("LEVEL_AFTER_TEMPLATE"), 4); - - zend_class_implements(phalcon_mvc_view_ce, 1, phalcon_mvc_viewinterface_ce); - zend_class_implements(phalcon_mvc_view_ce, 1, phalcon_events_eventsawareinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Mvc_View, getCurrentRenderLevel) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "currentRenderLevel"); + zephir_array_fetch_string(&_0, &expression, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 740); + ZEPHIR_CALL_METHOD(&left, this_ptr, "getsqlexpression", NULL, 0, &_0, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_1, &expression, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 746); + ZEPHIR_CALL_METHOD(&right, this_ptr, "getsqlexpression", NULL, 46, &_1, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "CONVERT(", &left, " USING ", &right, ")"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, getRegisteredEngines) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionFrom) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression, expression_sub, *escapeChar_param = NULL, table, tables, *_0$$3, _1$$3, _5$$3, _2$$4, _4$$5; zval *this_ptr = getThis(); + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&tables); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&escapeChar); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "registeredEngines"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getRenderLevel) -{ - zval *this_ptr = getThis(); - + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &expression, &escapeChar_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } - RETURN_MEMBER(getThis(), "renderLevel"); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&tables); + array_init(&tables); + zephir_is_iterable(expression, 0, "phalcon/Db/Dialect.zep", 768); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(expression), _0$$3) + { + ZEPHIR_INIT_NVAR(&table); + ZVAL_COPY(&table, _0$$3); + ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "getsqltable", &_3, 62, &table, &escapeChar); + zephir_check_call_status(); + zephir_array_append(&tables, &_2$$4, PH_SEPARATE, "phalcon/Db/Dialect.zep", 765); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, expression, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1$$3, expression, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&table, expression, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4$$5, this_ptr, "getsqltable", &_3, 62, &table, &escapeChar); + zephir_check_call_status(); + zephir_array_append(&tables, &_4$$5, PH_SEPARATE, "phalcon/Db/Dialect.zep", 765); + ZEPHIR_CALL_METHOD(NULL, expression, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&table); + ZEPHIR_INIT_VAR(&_5$$3); + zephir_fast_join_str(&_5$$3, SL(", "), &tables); + ZEPHIR_CPY_WRT(&tables, &_5$$3); + } else { + ZEPHIR_CPY_WRT(&tables, expression); + } + ZEPHIR_CONCAT_SV(return_value, "FROM ", &tables); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, __construct) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionFunctionCall) { + zend_bool _1, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL; - zval options; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, __$false, name, customFunction, arguments, _0, _4$$4; + zval expression, bindCounts, _2$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&_2$$4); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&customFunction); + ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &options_param); - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - zephir_get_arrval(&options, options_param); + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); - ZEPHIR_MM_RESTORE(); + ZEPHIR_OBS_VAR(&name); + zephir_array_fetch_string(&name, &expression, SL("name"), PH_NOISY, "phalcon/Db/Dialect.zep", 789); + ZEPHIR_OBS_VAR(&customFunction); + zephir_read_property(&_0, this_ptr, ZEND_STRL("customFunctions"), PH_NOISY_CC | PH_READONLY); + if (zephir_array_isset_fetch(&customFunction, &_0, &name, 0)) { + ZEPHIR_RETURN_CALL_ZVAL_FUNCTION(&customFunction, NULL, 0, this_ptr, &expression, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_OBS_VAR(&arguments); + _1 = zephir_array_isset_string_fetch(&arguments, &expression, SL("arguments"), 0); + if (_1) { + _1 = Z_TYPE_P(&arguments) == IS_ARRAY; + } + if (_1) { + ZEPHIR_INIT_VAR(&_2$$4); + zephir_create_array(&_2$$4, 3, 0); + add_assoc_stringl_ex(&_2$$4, SL("type"), SL("list")); + zephir_array_update_string(&_2$$4, SL("parentheses"), &__$false, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_2$$4, SL("value"), &arguments, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(&arguments, this_ptr, "getsqlexpression", NULL, 0, &_2$$4, &escapeChar, &bindCounts); + zephir_check_call_status(); + _3$$4 = zephir_array_isset_string(&expression, SL("distinct")); + if (_3$$4) { + zephir_array_fetch_string(&_4$$4, &expression, SL("distinct"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 806); + _3$$4 = zephir_is_true(&_4$$4); + } + if (_3$$4) { + ZEPHIR_CONCAT_VSVS(return_value, &name, "(DISTINCT ", &arguments, ")"); + RETURN_MM(); + } + ZEPHIR_CONCAT_VSVS(return_value, &name, "(", &arguments, ")"); + RETURN_MM(); + } + ZEPHIR_CONCAT_VS(return_value, &name, "()"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, __get) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionGroupBy) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL; - zval key; + zval bindCounts; + zval escapeChar; + zval *expression, expression_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, field, fields, *_0$$3, _1$$3, _5$$3, _2$$4, _4$$6; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_4$$6); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&bindCounts); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression, &escapeChar_param, &bindCounts_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getvar", NULL, 0, &key); - zephir_check_call_status(); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&fields); + array_init(&fields); + zephir_is_iterable(expression, 0, "phalcon/Db/Dialect.zep", 844); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(expression), _0$$3) + { + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _0$$3); + if (UNEXPECTED(Z_TYPE_P(&field) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-GROUP-BY expression", "phalcon/Db/Dialect.zep", 834); + return; + } + ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "getsqlexpression", &_3, 0, &field, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&fields, &_2$$4, PH_SEPARATE, "phalcon/Db/Dialect.zep", 841); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, expression, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1$$3, expression, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&field, expression, "current", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(&field) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-GROUP-BY expression", "phalcon/Db/Dialect.zep", 834); + return; + } + ZEPHIR_CALL_METHOD(&_4$$6, this_ptr, "getsqlexpression", &_3, 46, &field, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&fields, &_4$$6, PH_SEPARATE, "phalcon/Db/Dialect.zep", 841); + ZEPHIR_CALL_METHOD(NULL, expression, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&field); + ZEPHIR_INIT_VAR(&_5$$3); + zephir_fast_join_str(&_5$$3, SL(", "), &fields); + ZEPHIR_CPY_WRT(&fields, &_5$$3); + } else { + ZEPHIR_CPY_WRT(&fields, expression); + } + ZEPHIR_CONCAT_SV(return_value, "GROUP BY ", &fields); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, __isset) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionHaving) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *key_param = NULL, _0; - zval key; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, _0; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - RETURN_MM_BOOL(zephir_array_isset(&_0, &key)); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "getsqlexpression", NULL, 0, &expression, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, "HAVING ", &_0); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, __set) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionJoins) { + zend_bool _2$$3, _9$$3, _13$$11, _19$$11; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL, *_11 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, *value, value_sub; - zval key; + zval bindCounts; + zval escapeChar, sql; + zval *expression, expression_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, condition, join, joinCondition, joinTable, joinType, joinConditionsArray, *_0, _1, _10$$3, _12$$3, *_4$$6, _5$$6, _8$$6, _6$$7, _7$$8, _20$$11, _21$$11, *_14$$14, _15$$14, _18$$14, _16$$15, _17$$16; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&condition); + ZVAL_UNDEF(&join); + ZVAL_UNDEF(&joinCondition); + ZVAL_UNDEF(&joinTable); + ZVAL_UNDEF(&joinType); + ZVAL_UNDEF(&joinConditionsArray); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&_8$$6); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_7$$8); + ZVAL_UNDEF(&_20$$11); + ZVAL_UNDEF(&_21$$11); + ZVAL_UNDEF(&_15$$14); + ZVAL_UNDEF(&_18$$14); + ZVAL_UNDEF(&_16$$15); + ZVAL_UNDEF(&_17$$16); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&bindCounts); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(key) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &key_param, &value); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &expression, &escapeChar_param, &bindCounts_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvar", NULL, 0, &key, value); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&joinType); + ZVAL_STRING(&joinType, ""); + ZEPHIR_INIT_VAR(&sql); + zephir_is_iterable(expression, 0, "phalcon/Db/Dialect.zep", 918); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(expression), _0) + { + ZEPHIR_INIT_NVAR(&join); + ZVAL_COPY(&join, _0); + ZEPHIR_OBS_NVAR(&joinConditionsArray); + _2$$3 = zephir_array_isset_string_fetch(&joinConditionsArray, &join, SL("conditions"), 0); + if (_2$$3) { + _2$$3 = !(ZEPHIR_IS_EMPTY(&joinConditionsArray)); + } + if (_2$$3) { + if (!(zephir_array_isset_long(&joinConditionsArray, 0))) { + ZEPHIR_CALL_METHOD(&joinCondition, this_ptr, "getsqlexpression", &_3, 0, &joinConditionsArray, &escapeChar, &bindCounts); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&joinCondition); + array_init(&joinCondition); + zephir_is_iterable(&joinConditionsArray, 0, "phalcon/Db/Dialect.zep", 903); + if (Z_TYPE_P(&joinConditionsArray) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&joinConditionsArray), _4$$6) + { + ZEPHIR_INIT_NVAR(&condition); + ZVAL_COPY(&condition, _4$$6); + ZEPHIR_CALL_METHOD(&_6$$7, this_ptr, "getsqlexpression", &_3, 46, &condition, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&joinCondition, &_6$$7, PH_SEPARATE, "phalcon/Db/Dialect.zep", 900); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &joinConditionsArray, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5$$6, &joinConditionsArray, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5$$6)) { + break; + } + ZEPHIR_CALL_METHOD(&condition, &joinConditionsArray, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_7$$8, this_ptr, "getsqlexpression", &_3, 46, &condition, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&joinCondition, &_7$$8, PH_SEPARATE, "phalcon/Db/Dialect.zep", 900); + ZEPHIR_CALL_METHOD(NULL, &joinConditionsArray, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&condition); + ZEPHIR_INIT_NVAR(&_8$$6); + zephir_fast_join_str(&_8$$6, SL(" AND "), &joinCondition); + ZEPHIR_CPY_WRT(&joinCondition, &_8$$6); + } + } else { + ZEPHIR_INIT_NVAR(&joinCondition); + ZVAL_LONG(&joinCondition, 1); + } + ZEPHIR_OBS_NVAR(&joinType); + _9$$3 = zephir_array_isset_string_fetch(&joinType, &join, SL("type"), 0); + if (_9$$3) { + _9$$3 = zephir_is_true(&joinType); + } + if (_9$$3) { + zephir_concat_self_str(&joinType, SL(" ")); + } + zephir_array_fetch_string(&_10$$3, &join, SL("source"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 913); + ZEPHIR_CALL_METHOD(&joinTable, this_ptr, "getsqltable", &_11, 62, &_10$$3, &escapeChar); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_12$$3); + ZEPHIR_CONCAT_SVSVSV(&_12$$3, " ", &joinType, "JOIN ", &joinTable, " ON ", &joinCondition); + zephir_concat_self(&sql, &_12$$3); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, expression, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, expression, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&join, expression, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&joinConditionsArray); + _13$$11 = zephir_array_isset_string_fetch(&joinConditionsArray, &join, SL("conditions"), 0); + if (_13$$11) { + _13$$11 = !(ZEPHIR_IS_EMPTY(&joinConditionsArray)); + } + if (_13$$11) { + if (!(zephir_array_isset_long(&joinConditionsArray, 0))) { + ZEPHIR_CALL_METHOD(&joinCondition, this_ptr, "getsqlexpression", &_3, 46, &joinConditionsArray, &escapeChar, &bindCounts); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&joinCondition); + array_init(&joinCondition); + zephir_is_iterable(&joinConditionsArray, 0, "phalcon/Db/Dialect.zep", 903); + if (Z_TYPE_P(&joinConditionsArray) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&joinConditionsArray), _14$$14) + { + ZEPHIR_INIT_NVAR(&condition); + ZVAL_COPY(&condition, _14$$14); + ZEPHIR_CALL_METHOD(&_16$$15, this_ptr, "getsqlexpression", &_3, 46, &condition, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&joinCondition, &_16$$15, PH_SEPARATE, "phalcon/Db/Dialect.zep", 900); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &joinConditionsArray, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_15$$14, &joinConditionsArray, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_15$$14)) { + break; + } + ZEPHIR_CALL_METHOD(&condition, &joinConditionsArray, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_17$$16, this_ptr, "getsqlexpression", &_3, 46, &condition, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&joinCondition, &_17$$16, PH_SEPARATE, "phalcon/Db/Dialect.zep", 900); + ZEPHIR_CALL_METHOD(NULL, &joinConditionsArray, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&condition); + ZEPHIR_INIT_NVAR(&_18$$14); + zephir_fast_join_str(&_18$$14, SL(" AND "), &joinCondition); + ZEPHIR_CPY_WRT(&joinCondition, &_18$$14); + } + } else { + ZEPHIR_INIT_NVAR(&joinCondition); + ZVAL_LONG(&joinCondition, 1); + } + ZEPHIR_OBS_NVAR(&joinType); + _19$$11 = zephir_array_isset_string_fetch(&joinType, &join, SL("type"), 0); + if (_19$$11) { + _19$$11 = zephir_is_true(&joinType); + } + if (_19$$11) { + zephir_concat_self_str(&joinType, SL(" ")); + } + zephir_array_fetch_string(&_20$$11, &join, SL("source"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 913); + ZEPHIR_CALL_METHOD(&joinTable, this_ptr, "getsqltable", &_11, 62, &_20$$11, &escapeChar); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_21$$11); + ZEPHIR_CONCAT_SVSVSV(&_21$$11, " ", &joinType, "JOIN ", &joinTable, " ON ", &joinCondition); + zephir_concat_self(&sql, &_21$$11); + ZEPHIR_CALL_METHOD(NULL, expression, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&join); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_View, cleanTemplateAfter) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionLimit) { - zval _0; + zend_bool _2$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval bindCounts, _4; + zval escapeChar; + zval *expression, expression_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, sql, value, limit, offset, _0$$4, _1$$5, _3$$7; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&limit); + ZVAL_UNDEF(&offset); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&_3$$7); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&_4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &expression, &escapeChar_param, &bindCounts_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); + } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesAfter"), &_0); - RETURN_THIS(); + + ZEPHIR_INIT_VAR(&sql); + ZVAL_STRING(&sql, ""); + ZEPHIR_INIT_VAR(&offset); + ZVAL_NULL(&offset); + ZEPHIR_OBS_VAR(&value); + zephir_array_fetch_string(&value, expression, SL("value"), PH_NOISY, "phalcon/Db/Dialect.zep", 934); + if (zephir_array_isset_string(expression, SL("sql"))) { + ZEPHIR_OBS_NVAR(&sql); + zephir_array_fetch_string(&sql, expression, SL("sql"), PH_NOISY, "phalcon/Db/Dialect.zep", 937); + } + if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_OBS_VAR(&_0$$4); + zephir_array_fetch_string(&_0$$4, &value, SL("number"), PH_NOISY, "phalcon/Db/Dialect.zep", 941); + if (Z_TYPE_P(&_0$$4) == IS_ARRAY) { + zephir_array_fetch_string(&_1$$5, &value, SL("number"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 943); + ZEPHIR_CALL_METHOD(&limit, this_ptr, "getsqlexpression", NULL, 0, &_1$$5, &escapeChar, &bindCounts); + zephir_check_call_status(); + } else { + ZEPHIR_OBS_NVAR(&limit); + zephir_array_fetch_string(&limit, &value, SL("number"), PH_NOISY, "phalcon/Db/Dialect.zep", 948); + } + ZEPHIR_OBS_NVAR(&offset); + _2$$4 = zephir_array_isset_string_fetch(&offset, &value, SL("offset"), 0); + if (_2$$4) { + _2$$4 = Z_TYPE_P(&offset) == IS_ARRAY; + } + if (_2$$4) { + ZEPHIR_CALL_METHOD(&_3$$7, this_ptr, "getsqlexpression", NULL, 46, &offset, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&offset, &_3$$7); + } + } else { + ZEPHIR_CPY_WRT(&limit, &value); + } + ZEPHIR_INIT_VAR(&_4); + zephir_create_array(&_4, 2, 0); + zephir_array_fast_append(&_4, &limit); + zephir_array_fast_append(&_4, &offset); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "limit", NULL, 0, &sql, &_4); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, cleanTemplateBefore) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionList) { - zval _0; + zend_bool _0, _1, _7$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_5 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, item, values, separator, *_2$$4, _3$$4, _8$$4, _9$$4, _4$$5, _6$$6; + zval expression, bindCounts, items; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&items); + ZVAL_UNDEF(&item); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&separator); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&escapeChar); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); + } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesBefore"), &_0); - RETURN_THIS(); + + ZEPHIR_INIT_VAR(&items); + array_init(&items); + ZEPHIR_INIT_VAR(&separator); + ZVAL_STRING(&separator, ", "); + if (zephir_array_isset_string(&expression, SL("separator"))) { + ZEPHIR_OBS_NVAR(&separator); + zephir_array_fetch_string(&separator, &expression, SL("separator"), PH_NOISY, "phalcon/Db/Dialect.zep", 987); + } + ZEPHIR_OBS_VAR(&values); + _0 = zephir_array_isset_long_fetch(&values, &expression, 0, 0); + if (!(_0)) { + ZEPHIR_OBS_NVAR(&values); + _0 = zephir_array_isset_string_fetch(&values, &expression, SL("value"), 0); + } + _1 = _0; + if (_1) { + _1 = Z_TYPE_P(&values) == IS_ARRAY; + } + if (_1) { + zephir_is_iterable(&values, 0, "phalcon/Db/Dialect.zep", 996); + if (Z_TYPE_P(&values) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&values), _2$$4) + { + ZEPHIR_INIT_NVAR(&item); + ZVAL_COPY(&item, _2$$4); + ZEPHIR_CALL_METHOD(&_4$$5, this_ptr, "getsqlexpression", &_5, 0, &item, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&items, &_4$$5, PH_SEPARATE, "phalcon/Db/Dialect.zep", 993); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3$$4, &values, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3$$4)) { + break; + } + ZEPHIR_CALL_METHOD(&item, &values, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_6$$6, this_ptr, "getsqlexpression", &_5, 46, &item, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_append(&items, &_6$$6, PH_SEPARATE, "phalcon/Db/Dialect.zep", 993); + ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&item); + _7$$4 = zephir_array_isset_string(&expression, SL("parentheses")); + if (_7$$4) { + zephir_array_fetch_string(&_8$$4, &expression, SL("parentheses"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 996); + _7$$4 = ZEPHIR_IS_FALSE_IDENTICAL(&_8$$4); + } + if (_7$$4) { + zephir_fast_join(return_value, &separator, &items); + RETURN_MM(); + } + ZEPHIR_INIT_VAR(&_9$$4); + zephir_fast_join(&_9$$4, &separator, &items); + ZEPHIR_CONCAT_SVS(return_value, "(", &_9$$4, ")"); + RETURN_MM(); + } + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-list expression", "phalcon/Db/Dialect.zep", 1003); + return; } -static PHP_METHOD(Phalcon_Mvc_View, disableLevel) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionObject) { - zval *level, level_sub, __$true; + zend_bool _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, domain, objectExpression; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&level_sub); - ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&domain); + ZVAL_UNDEF(&objectExpression); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(level) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &level); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); + } - if (Z_TYPE_P(level) == IS_ARRAY) { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabledLevels"), level); - } else { - zephir_update_property_array(this_ptr, SL("disabledLevels"), level, &__$true); + ZEPHIR_INIT_VAR(&domain); + ZVAL_NULL(&domain); + ZEPHIR_INIT_VAR(&objectExpression); + zephir_create_array(&objectExpression, 1, 0); + add_assoc_stringl_ex(&objectExpression, SL("type"), SL("all")); + ZEPHIR_OBS_NVAR(&domain); + _0 = zephir_array_isset_string_fetch(&domain, &expression, SL("column"), 0); + if (!(_0)) { + ZEPHIR_OBS_NVAR(&domain); + _0 = zephir_array_isset_string_fetch(&domain, &expression, SL("domain"), 0); } - RETURN_THISW(); + _1 = _0; + if (_1) { + _1 = !ZEPHIR_IS_STRING(&domain, ""); + } + if (_1) { + zephir_array_update_string(&objectExpression, SL("domain"), &domain, PH_COPY | PH_SEPARATE); + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpression", NULL, 0, &objectExpression, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, disable) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionOrderBy) { - zval __$true, __$false; + zend_bool _4$$4, _7$$7; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_3 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval bindCounts; + zval escapeChar; + zval *expression, expression_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, field, fields, type, fieldSql, *_0$$3, _1$$3, _9$$3, _2$$4, _5$$6, _6$$7, _8$$9; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&fieldSql); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_5$$6); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_8$$9); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&bindCounts); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) + ZEND_PARSE_PARAMETERS_END(); +#endif - if (1) { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$true); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &expression, &escapeChar_param, &bindCounts_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$false); + zephir_get_strval(&escapeChar, escapeChar_param); + } + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Mvc_View, enable) -{ - zval __$true, __$false; - zval *this_ptr = getThis(); - - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$true); + ZEPHIR_INIT_VAR(&fieldSql); + ZVAL_NULL(&fieldSql); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&fields); + array_init(&fields); + zephir_is_iterable(expression, 0, "phalcon/Db/Dialect.zep", 1068); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(expression), _0$$3) + { + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _0$$3); + if (UNEXPECTED(Z_TYPE_P(&field) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-ORDER-BY expression", "phalcon/Db/Dialect.zep", 1049); + return; + } + zephir_array_fetch_long(&_2$$4, &field, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 1053); + ZEPHIR_CALL_METHOD(&fieldSql, this_ptr, "getsqlexpression", &_3, 0, &_2$$4, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&type); + _4$$4 = zephir_array_isset_long_fetch(&type, &field, 1, 0); + if (_4$$4) { + _4$$4 = !ZEPHIR_IS_STRING(&type, ""); + } + if (_4$$4) { + ZEPHIR_INIT_NVAR(&_5$$6); + ZEPHIR_CONCAT_SV(&_5$$6, " ", &type); + zephir_concat_self(&fieldSql, &_5$$6); + } + zephir_array_append(&fields, &fieldSql, PH_SEPARATE, "phalcon/Db/Dialect.zep", 1065); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, expression, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1$$3, expression, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&field, expression, "current", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(&field) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-ORDER-BY expression", "phalcon/Db/Dialect.zep", 1049); + return; + } + zephir_array_fetch_long(&_6$$7, &field, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 1053); + ZEPHIR_CALL_METHOD(&fieldSql, this_ptr, "getsqlexpression", &_3, 46, &_6$$7, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&type); + _7$$7 = zephir_array_isset_long_fetch(&type, &field, 1, 0); + if (_7$$7) { + _7$$7 = !ZEPHIR_IS_STRING(&type, ""); + } + if (_7$$7) { + ZEPHIR_INIT_NVAR(&_8$$9); + ZEPHIR_CONCAT_SV(&_8$$9, " ", &type); + zephir_concat_self(&fieldSql, &_8$$9); + } + zephir_array_append(&fields, &fieldSql, PH_SEPARATE, "phalcon/Db/Dialect.zep", 1065); + ZEPHIR_CALL_METHOD(NULL, expression, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&field); + ZEPHIR_INIT_VAR(&_9$$3); + zephir_fast_join_str(&_9$$3, SL(", "), &fields); + ZEPHIR_CPY_WRT(&fields, &_9$$3); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$false); + ZEPHIR_CPY_WRT(&fields, expression); } - RETURN_THISW(); + ZEPHIR_CONCAT_SV(return_value, "ORDER BY ", &fields); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, exists) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionQualified) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *view_param = NULL; - zval view; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, column, domain; + zval expression; zval *this_ptr = getThis(); - ZVAL_UNDEF(&view); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&domain); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(view) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &view_param); - if (UNEXPECTED(Z_TYPE_P(view_param) != IS_STRING && Z_TYPE_P(view_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'view' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(view_param) == IS_STRING)) { - zephir_get_strval(&view, view_param); + zephir_fetch_params(1, 1, 1, &expression_param, &escapeChar_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - ZEPHIR_INIT_VAR(&view); + zephir_get_strval(&escapeChar, escapeChar_param); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "has", NULL, 0, &view); + ZEPHIR_OBS_VAR(&column); + zephir_array_fetch_string(&column, &expression, SL("name"), PH_NOISY, "phalcon/Db/Dialect.zep", 1083); + ZEPHIR_OBS_VAR(&domain); + if (!(zephir_array_isset_string_fetch(&domain, &expression, SL("domain"), 0))) { + ZEPHIR_INIT_NVAR(&domain); + ZVAL_NULL(&domain); + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "preparequalified", NULL, 0, &column, &domain, &escapeChar); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, finish) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionScalar) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, value, _0$$3; + zval expression, bindCounts; zval *this_ptr = getThis(); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&escapeChar); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - ZEPHIR_CALL_FUNCTION(NULL, "ob_end_clean", NULL, 487); - zephir_check_call_status(); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_View, getActionName) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "actionName"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getActiveRenderPath) -{ - zend_bool _1$$3; - zval activeRenderPath, _0, _2$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, viewsDirsCount = 0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&activeRenderPath); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$4); - - - ZEPHIR_MM_GROW(); - - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getviewsdirs", NULL, 0); - zephir_check_call_status(); - viewsDirsCount = zephir_fast_count_int(&_0); - ZEPHIR_OBS_VAR(&activeRenderPath); - zephir_read_property(&activeRenderPath, this_ptr, ZEND_STRL("activeRenderPaths"), PH_NOISY_CC); - if (viewsDirsCount == 1) { - _1$$3 = Z_TYPE_P(&activeRenderPath) == IS_ARRAY; - if (_1$$3) { - _1$$3 = ((zephir_fast_count_int(&activeRenderPath)) ? 1 : 0); - } - if (_1$$3) { - zephir_array_fetch_long(&_2$$4, &activeRenderPath, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/View.zep", 339); - ZEPHIR_CPY_WRT(&activeRenderPath, &_2$$4); - } + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (Z_TYPE_P(&activeRenderPath) == IS_NULL) { - ZEPHIR_INIT_NVAR(&activeRenderPath); - ZVAL_STRING(&activeRenderPath, ""); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - RETURN_CCTOR(&activeRenderPath); -} - -static PHP_METHOD(Phalcon_Mvc_View, getBasePath) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "basePath"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getContent) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "content"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getControllerName) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "controllerName"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getEventsManager) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "eventsManager"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getLayout) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "layout"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getLayoutsDir) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "layoutsDir"); -} -static PHP_METHOD(Phalcon_Mvc_View, getMainView) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "mainView"); -} -static PHP_METHOD(Phalcon_Mvc_View, getParamsToView) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "viewParams"); + if (zephir_array_isset_string(&expression, SL("column"))) { + zephir_array_fetch_string(&_0$$3, &expression, SL("column"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 1107); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlcolumn", NULL, 40, &_0$$3); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_OBS_VAR(&value); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&value, &expression, SL("value"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL expression", "phalcon/Db/Dialect.zep", 1111); + return; + } + if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getsqlexpression", NULL, 0, &value, &escapeChar, &bindCounts); + zephir_check_call_status(); + RETURN_MM(); + } + RETURN_CCTOR(&value); } -static PHP_METHOD(Phalcon_Mvc_View, getPartial) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionUnaryOperations) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *partialPath_param = NULL, *params = NULL, params_sub, __$null; - zval partialPath; + zval escapeChar; + zval *expression_param = NULL, *escapeChar_param = NULL, *bindCounts_param = NULL, left, right, _0$$3, _1$$3, _2$$4, _3$$4; + zval expression, bindCounts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&partialPath); - ZVAL_UNDEF(¶ms_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&expression); + ZVAL_UNDEF(&bindCounts); + ZVAL_UNDEF(&left); + ZVAL_UNDEF(&right); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&escapeChar); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(partialPath) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ARRAY(expression) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(params) + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &partialPath_param, ¶ms); - if (UNEXPECTED(Z_TYPE_P(partialPath_param) != IS_STRING && Z_TYPE_P(partialPath_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'partialPath' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(partialPath_param) == IS_STRING)) { - zephir_get_strval(&partialPath, partialPath_param); + zephir_fetch_params(1, 1, 2, &expression_param, &escapeChar_param, &bindCounts_param); + ZEPHIR_OBS_COPY_OR_DUP(&expression, expression_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - ZEPHIR_INIT_VAR(&partialPath); + zephir_get_strval(&escapeChar, escapeChar_param); } - if (!params) { - params = ¶ms_sub; - params = &__$null; + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - ZEPHIR_CALL_FUNCTION(NULL, "ob_start", NULL, 384); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "partial", NULL, 0, &partialPath, params); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_FUNCTION("ob_get_clean", NULL, 390); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_View, getPartialsDir) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "partialsDir"); + ZEPHIR_OBS_VAR(&left); + if (zephir_array_isset_string_fetch(&left, &expression, SL("left"), 0)) { + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getsqlexpression", NULL, 0, &left, &escapeChar, &bindCounts); + zephir_check_call_status(); + zephir_array_fetch_string(&_1$$3, &expression, SL("op"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 1138); + ZEPHIR_CONCAT_VSV(return_value, &_0$$3, " ", &_1$$3); + RETURN_MM(); + } + ZEPHIR_OBS_VAR(&right); + if (zephir_array_isset_string_fetch(&right, &expression, SL("right"), 0)) { + zephir_array_fetch_string(&_2$$4, &expression, SL("op"), PH_NOISY | PH_READONLY, "phalcon/Db/Dialect.zep", 1145); + ZEPHIR_CALL_METHOD(&_3$$4, this_ptr, "getsqlexpression", NULL, 46, &right, &escapeChar, &bindCounts); + zephir_check_call_status(); + ZEPHIR_CONCAT_VSV(return_value, &_2$$4, " ", &_3$$4); + RETURN_MM(); + } + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid SQL-unary expression", "phalcon/Db/Dialect.zep", 1148); + return; } -static PHP_METHOD(Phalcon_Mvc_View, getRender) +static PHP_METHOD(Phalcon_Db_Dialect, getSqlExpressionWhere) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval params, _1$$3; - zval *controllerName_param = NULL, *actionName_param = NULL, *params_param = NULL, *configCallback = NULL, configCallback_sub, __$null, view, _0$$3; - zval controllerName, actionName; + zval bindCounts; + zval escapeChar; + zval *expression, expression_sub, *escapeChar_param = NULL, *bindCounts_param = NULL, whereSql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerName); - ZVAL_UNDEF(&actionName); - ZVAL_UNDEF(&configCallback_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&view); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&expression_sub); + ZVAL_UNDEF(&whereSql); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&bindCounts); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_STR(controllerName) - Z_PARAM_STR(actionName) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_ZVAL(expression) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(params) - Z_PARAM_ZVAL_OR_NULL(configCallback) + Z_PARAM_STR_OR_NULL(escapeChar) + Z_PARAM_ARRAY(bindCounts) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &controllerName_param, &actionName_param, ¶ms_param, &configCallback); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); - } else { - ZEPHIR_INIT_VAR(&controllerName); - } - if (UNEXPECTED(Z_TYPE_P(actionName_param) != IS_STRING && Z_TYPE_P(actionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'actionName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(actionName_param) == IS_STRING)) { - zephir_get_strval(&actionName, actionName_param); + zephir_fetch_params(1, 1, 2, &expression, &escapeChar_param, &bindCounts_param); + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); } else { - ZEPHIR_INIT_VAR(&actionName); + zephir_get_strval(&escapeChar, escapeChar_param); } - if (!params_param) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); + if (!bindCounts_param) { + ZEPHIR_INIT_VAR(&bindCounts); + array_init(&bindCounts); } else { - zephir_get_arrval(¶ms, params_param); - } - if (!configCallback) { - configCallback = &configCallback_sub; - configCallback = &__$null; + ZEPHIR_OBS_COPY_OR_DUP(&bindCounts, bindCounts_param); } - ZEPHIR_INIT_VAR(&view); - if (zephir_clone(&view, this_ptr) == FAILURE) { - RETURN_MM(); - } - ZEPHIR_CALL_METHOD(NULL, &view, "reset", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &view, "setvars", NULL, 0, ¶ms); - zephir_check_call_status(); - if (Z_TYPE_P(configCallback) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_0$$3); - ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 1, 0); - zephir_array_fast_append(&_1$$3, &view); - ZEPHIR_CALL_USER_FUNC_ARRAY(&_0$$3, configCallback, &_1$$3); + if (Z_TYPE_P(expression) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(&whereSql, this_ptr, "getsqlexpression", NULL, 0, expression, &escapeChar, &bindCounts); zephir_check_call_status(); + } else { + ZEPHIR_CPY_WRT(&whereSql, expression); } - ZEPHIR_CALL_METHOD(NULL, &view, "start", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &view, "render", NULL, 0, &controllerName, &actionName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &view, "finish", NULL, 0); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&view, "getcontent", NULL, 0); - zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, "WHERE ", &whereSql); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, getVar) +static PHP_METHOD(Phalcon_Db_Dialect, prepareColumnAlias) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *key_param = NULL, value, _0; - zval key; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *qualified_param = NULL, *alias_param = NULL, *escapeChar_param = NULL, _0$$3; + zval qualified, alias, escapeChar; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&qualified); + ZVAL_UNDEF(&alias); + ZVAL_UNDEF(&escapeChar); + ZVAL_UNDEF(&_0$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(qualified) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(alias) + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + zephir_fetch_params(1, 1, 2, &qualified_param, &alias_param, &escapeChar_param); + if (UNEXPECTED(Z_TYPE_P(qualified_param) != IS_STRING && Z_TYPE_P(qualified_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'qualified' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (EXPECTED(Z_TYPE_P(qualified_param) == IS_STRING)) { + zephir_get_strval(&qualified, qualified_param); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_INIT_VAR(&qualified); } - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&value, &_0, &key, 1))) { - RETURN_MM_NULL(); + if (!alias_param) { + ZEPHIR_INIT_VAR(&alias); + } else { + zephir_get_strval(&alias, alias_param); + } + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - RETURN_CTOR(&value); -} - -static PHP_METHOD(Phalcon_Mvc_View, getViewsDir) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "viewsDirs"); -} - -static PHP_METHOD(Phalcon_Mvc_View, getViewsDirs) -{ - zval _0, _1$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - - ZEPHIR_MM_GROW(); - ZEPHIR_OBS_VAR(&_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("viewsDirs"), PH_NOISY_CC); - if (Z_TYPE_P(&_0) == IS_STRING) { - zephir_create_array(return_value, 1, 0); - ZEPHIR_OBS_VAR(&_1$$3); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("viewsDirs"), PH_NOISY_CC); - zephir_array_fast_append(return_value, &_1$$3); + if (!ZEPHIR_IS_STRING(&alias, "")) { + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "escape", NULL, 53, &alias, &escapeChar); + zephir_check_call_status(); + ZEPHIR_CONCAT_VSV(return_value, &qualified, " AS ", &_0$$3); RETURN_MM(); } - RETURN_MM_MEMBER(getThis(), "viewsDirs"); + RETURN_CTOR(&qualified); } -static PHP_METHOD(Phalcon_Mvc_View, has) +static PHP_METHOD(Phalcon_Db_Dialect, prepareTable) { - zend_string *_9$$4, *_16$$9; - zend_ulong _8$$4, _15$$9; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *view_param = NULL, basePath, viewsDir, engines, extension, _0, _2, *_3, _4, _1$$3, _5$$4, *_6$$4, _7$$4, _10$$5, _11$$7, _12$$9, *_13$$9, _14$$9, _17$$10, _18$$12; - zval view; + zval *table_param = NULL, *schema_param = NULL, *alias_param = NULL, *escapeChar_param = NULL, _0, _1$$3, _2$$3, _3$$4, _4$$4; + zval table, schema, alias, escapeChar; zval *this_ptr = getThis(); - ZVAL_UNDEF(&view); - ZVAL_UNDEF(&basePath); - ZVAL_UNDEF(&viewsDir); - ZVAL_UNDEF(&engines); - ZVAL_UNDEF(&extension); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&alias); + ZVAL_UNDEF(&escapeChar); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_10$$5); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_12$$9); - ZVAL_UNDEF(&_14$$9); - ZVAL_UNDEF(&_17$$10); - ZVAL_UNDEF(&_18$$12); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(view) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + Z_PARAM_STR_OR_NULL(alias) + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &view_param); - if (UNEXPECTED(Z_TYPE_P(view_param) != IS_STRING && Z_TYPE_P(view_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'view' must be of the type string")); + zephir_fetch_params(1, 1, 3, &table_param, &schema_param, &alias_param, &escapeChar_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(view_param) == IS_STRING)) { - zephir_get_strval(&view, view_param); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - ZEPHIR_INIT_VAR(&view); + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } + if (!alias_param) { + ZEPHIR_INIT_VAR(&alias); + } else { + zephir_get_strval(&alias, alias_param); + } + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("basePath"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&basePath, &_0); - ZEPHIR_OBS_VAR(&engines); - zephir_read_property(&engines, this_ptr, ZEND_STRL("registeredEngines"), PH_NOISY_CC); - if (ZEPHIR_IS_EMPTY(&engines)) { - ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 1, 0); - add_assoc_stringl_ex(&_1$$3, SL(".phtml"), SL("Phalcon\\Mvc\\View\\Engine\\Php")); - ZEPHIR_CPY_WRT(&engines, &_1$$3); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "registerengines", NULL, 0, &engines); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "escape", NULL, 53, &table, &escapeChar); + zephir_check_call_status(); + zephir_get_strval(&table, &_0); + if (!ZEPHIR_IS_STRING(&schema, "")) { + ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "escapeschema", NULL, 63, &schema, &escapeChar); zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_VSV(&_2$$3, &_1$$3, ".", &table); + zephir_get_strval(&table, &_2$$3); } - ZEPHIR_CALL_METHOD(&_2, this_ptr, "getviewsdirs", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_2, 0, "phalcon/Mvc/View.zep", 573); - if (Z_TYPE_P(&_2) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_2), _3) - { - ZEPHIR_INIT_NVAR(&viewsDir); - ZVAL_COPY(&viewsDir, _3); - ZEPHIR_INIT_NVAR(&_5$$4); - zephir_is_iterable(&engines, 0, "phalcon/Mvc/View.zep", 571); - if (Z_TYPE_P(&engines) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&engines), _8$$4, _9$$4, _6$$4) - { - ZEPHIR_INIT_NVAR(&extension); - if (_9$$4 != NULL) { - ZVAL_STR_COPY(&extension, _9$$4); - } else { - ZVAL_LONG(&extension, _8$$4); - } - ZEPHIR_INIT_NVAR(&_5$$4); - ZVAL_COPY(&_5$$4, _6$$4); - ZEPHIR_INIT_NVAR(&_10$$5); - ZEPHIR_CONCAT_VVVV(&_10$$5, &basePath, &viewsDir, &view, &extension); - if ((zephir_file_exists(&_10$$5) == SUCCESS)) { - RETURN_MM_BOOL(1); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &engines, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_7$$4, &engines, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_7$$4)) { - break; - } - ZEPHIR_CALL_METHOD(&extension, &engines, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_5$$4, &engines, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_11$$7); - ZEPHIR_CONCAT_VVVV(&_11$$7, &basePath, &viewsDir, &view, &extension); - if ((zephir_file_exists(&_11$$7) == SUCCESS)) { - RETURN_MM_BOOL(1); - } - ZEPHIR_CALL_METHOD(NULL, &engines, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&_5$$4); - ZEPHIR_INIT_NVAR(&extension); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_2, "rewind", NULL, 0); + if (!ZEPHIR_IS_STRING(&alias, "")) { + ZEPHIR_CALL_METHOD(&_3$$4, this_ptr, "escape", NULL, 53, &alias, &escapeChar); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_4, &_2, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_4)) { - break; - } - ZEPHIR_CALL_METHOD(&viewsDir, &_2, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_12$$9); - zephir_is_iterable(&engines, 0, "phalcon/Mvc/View.zep", 571); - if (Z_TYPE_P(&engines) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&engines), _15$$9, _16$$9, _13$$9) - { - ZEPHIR_INIT_NVAR(&extension); - if (_16$$9 != NULL) { - ZVAL_STR_COPY(&extension, _16$$9); - } else { - ZVAL_LONG(&extension, _15$$9); - } - ZEPHIR_INIT_NVAR(&_12$$9); - ZVAL_COPY(&_12$$9, _13$$9); - ZEPHIR_INIT_NVAR(&_17$$10); - ZEPHIR_CONCAT_VVVV(&_17$$10, &basePath, &viewsDir, &view, &extension); - if ((zephir_file_exists(&_17$$10) == SUCCESS)) { - RETURN_MM_BOOL(1); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &engines, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_14$$9, &engines, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_14$$9)) { - break; - } - ZEPHIR_CALL_METHOD(&extension, &engines, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_12$$9, &engines, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_18$$12); - ZEPHIR_CONCAT_VVVV(&_18$$12, &basePath, &viewsDir, &view, &extension); - if ((zephir_file_exists(&_18$$12) == SUCCESS)) { - RETURN_MM_BOOL(1); - } - ZEPHIR_CALL_METHOD(NULL, &engines, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&_12$$9); - ZEPHIR_INIT_NVAR(&extension); - ZEPHIR_CALL_METHOD(NULL, &_2, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_INIT_VAR(&_4$$4); + ZEPHIR_CONCAT_VSV(&_4$$4, &table, " AS ", &_3$$4); + zephir_get_strval(&table, &_4$$4); } - ZEPHIR_INIT_NVAR(&viewsDir); - RETURN_MM_BOOL(0); -} - -static PHP_METHOD(Phalcon_Mvc_View, isDisabled) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "disabled"); + RETURN_CTOR(&table); } -static PHP_METHOD(Phalcon_Mvc_View, partial) +static PHP_METHOD(Phalcon_Db_Dialect, prepareQualified) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *partialPath_param = NULL, *params = NULL, params_sub, __$null, viewParams, _3, _4, _5, _6, _7, _0$$3, _1$$3, _2$$3; - zval partialPath; + zval *column_param = NULL, *domain_param = NULL, *escapeChar_param = NULL; + zval column, domain, escapeChar, _0$$3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&partialPath); - ZVAL_UNDEF(¶ms_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&viewParams); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&domain); + ZVAL_UNDEF(&escapeChar); ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(partialPath) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(column) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(params) + Z_PARAM_STR_OR_NULL(domain) + Z_PARAM_STR_OR_NULL(escapeChar) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &partialPath_param, ¶ms); - if (UNEXPECTED(Z_TYPE_P(partialPath_param) != IS_STRING && Z_TYPE_P(partialPath_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'partialPath' must be of the type string")); + zephir_fetch_params(1, 1, 2, &column_param, &domain_param, &escapeChar_param); + if (UNEXPECTED(Z_TYPE_P(column_param) != IS_STRING && Z_TYPE_P(column_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'column' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(partialPath_param) == IS_STRING)) { - zephir_get_strval(&partialPath, partialPath_param); + if (EXPECTED(Z_TYPE_P(column_param) == IS_STRING)) { + zephir_get_strval(&column, column_param); } else { - ZEPHIR_INIT_VAR(&partialPath); + ZEPHIR_INIT_VAR(&column); } - if (!params) { - params = ¶ms_sub; - params = &__$null; + if (!domain_param) { + ZEPHIR_INIT_VAR(&domain); + } else { + zephir_get_strval(&domain, domain_param); + } + if (!escapeChar_param) { + ZEPHIR_INIT_VAR(&escapeChar); + } else { + zephir_get_strval(&escapeChar, escapeChar_param); } - if (Z_TYPE_P(params) == IS_ARRAY) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&viewParams, &_0$$3); - ZEPHIR_INIT_VAR(&_1$$3); - zephir_fast_array_merge(&_1$$3, &viewParams, params); - zephir_update_property_zval(this_ptr, ZEND_STRL("viewParams"), &_1$$3); - ZEPHIR_INIT_VAR(&_2$$3); - ZEPHIR_CREATE_SYMBOL_TABLE(); - + if (!ZEPHIR_IS_STRING(&domain, "")) { + ZEPHIR_INIT_VAR(&_0$$3); + ZEPHIR_CONCAT_VSV(&_0$$3, &domain, ".", &column); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "escape", NULL, 53, &_0$$3, &escapeChar); + zephir_check_call_status(); + RETURN_MM(); } - ZEPHIR_CALL_METHOD(&_3, this_ptr, "loadtemplateengines", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_4, this_ptr, ZEND_STRL("partialsDir"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_5); - ZEPHIR_CONCAT_VV(&_5, &_4, &partialPath); - ZVAL_BOOL(&_6, 0); - ZVAL_BOOL(&_7, 0); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &_3, &_5, &_6, &_7); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "escape", NULL, 53, &column, &escapeChar); zephir_check_call_status(); - if (Z_TYPE_P(params) == IS_ARRAY) { - zephir_update_property_zval(this_ptr, ZEND_STRL("viewParams"), &viewParams); - } - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, pick) +zend_object *zephir_init_properties_Phalcon_Db_Dialect(zend_class_entry *class_type) { + zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *renderView, renderView_sub, pickView, layout, parts, _0$$4; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&renderView_sub); - ZVAL_UNDEF(&pickView); - ZVAL_UNDEF(&layout); - ZVAL_UNDEF(&parts); - ZVAL_UNDEF(&_0$$4); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(renderView) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &renderView); - + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + - if (Z_TYPE_P(renderView) == IS_ARRAY) { - ZEPHIR_CPY_WRT(&pickView, renderView); - } else { - ZEPHIR_INIT_VAR(&layout); - ZVAL_NULL(&layout); - if (zephir_memnstr_str(renderView, SL("/"), "phalcon/Mvc/View.zep", 675)) { - ZEPHIR_INIT_VAR(&parts); - zephir_fast_explode_str(&parts, SL("/"), renderView, LONG_MAX); - ZEPHIR_OBS_NVAR(&layout); - zephir_array_fetch_long(&layout, &parts, 0, PH_NOISY, "phalcon/Mvc/View.zep", 677); - } - ZEPHIR_INIT_VAR(&_0$$4); - zephir_create_array(&_0$$4, 1, 0); - zephir_array_fast_append(&_0$$4, renderView); - ZEPHIR_CPY_WRT(&pickView, &_0$$4); - if (Z_TYPE_P(&layout) != IS_NULL) { - zephir_array_append(&pickView, &layout, PH_SEPARATE, "phalcon/Mvc/View.zep", 683); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("customFunctions"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("customFunctions"), &_1$$3); } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); } - zephir_update_property_zval(this_ptr, ZEND_STRL("pickView"), &pickView); - RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_View, registerEngines) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *engines_param = NULL; - zval engines; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&engines); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(engines) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &engines_param); - ZEPHIR_OBS_COPY_OR_DUP(&engines, engines_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("registeredEngines"), &engines); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Mvc_View, render) +ZEPHIR_INIT_CLASS(Phalcon_Db_DialectInterface) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval params; - zval *controllerName_param = NULL, *actionName_param = NULL, *params_param = NULL, result; - zval controllerName, actionName; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&controllerName); - ZVAL_UNDEF(&actionName); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(¶ms); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(controllerName) - Z_PARAM_STR(actionName) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(params) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db, DialectInterface, phalcon, db_dialectinterface, phalcon_db_dialectinterface_method_entry); + return SUCCESS; +} - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &controllerName_param, &actionName_param, ¶ms_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); - } else { - ZEPHIR_INIT_VAR(&controllerName); - } - if (UNEXPECTED(Z_TYPE_P(actionName_param) != IS_STRING && Z_TYPE_P(actionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'actionName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(actionName_param) == IS_STRING)) { - zephir_get_strval(&actionName, actionName_param); - } else { - ZEPHIR_INIT_VAR(&actionName); - } - if (!params_param) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - } else { - zephir_get_arrval(¶ms, params_param); - } +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, addColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, addForeignKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, addIndex); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, addPrimaryKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, createSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, createTable); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, createView); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, describeColumns); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, describeIndexes); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, describeReferences); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropForeignKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropIndex); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropPrimaryKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropTable); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, dropView); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, forUpdate); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, getColumnDefinition); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, getColumnList); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, getCustomFunctions); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, getSqlExpression); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, limit); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, listTables); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, modifyColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, registerCustomFunction); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, releaseSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, rollbackSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, select); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, sharedLock); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, supportsReleaseSavepoints); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, supportsSavepoints); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, tableExists); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, tableOptions); +ZEPHIR_DOC_METHOD(Phalcon_Db_DialectInterface, viewExists); - ZEPHIR_CALL_METHOD(&result, this_ptr, "processrender", NULL, 0, &controllerName, &actionName, ¶ms); - zephir_check_call_status(); - if (!(zephir_is_true(&result))) { - RETURN_MM_BOOL(0); - } - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Mvc_View, reset) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$true, __$false, __$null, _0, _1, _2; - zval *this_ptr = getThis(); +#ifdef HAVE_CONFIG_H +#endif - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZEPHIR_MM_GROW(); - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("disabled"), &__$false); - } - if (0) { - zephir_update_property_zval(this_ptr, ZEND_STRL("engines"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("engines"), &__$false); - } - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 5); - zephir_update_property_zval(this_ptr, ZEND_STRL("renderLevel"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("content"), &__$null); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesBefore"), &_1); - ZEPHIR_INIT_VAR(&_2); - array_init(&_2); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesAfter"), &_2); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Mvc_View, setBasePath) +ZEPHIR_INIT_CLASS(Phalcon_Db_Enum) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *basePath_param = NULL; - zval basePath; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Enum, phalcon, db_enum, NULL, 0); - ZVAL_UNDEF(&basePath); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(basePath) - ZEND_PARSE_PARAMETERS_END(); -#endif + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_ASSOC"), 2); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_BOTH"), 4); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &basePath_param); - zephir_get_strval(&basePath, basePath_param); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_BOUND"), 6); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_CLASS"), 8); - zephir_update_property_zval(this_ptr, ZEND_STRL("basePath"), &basePath); - RETURN_THIS(); -} + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_CLASSTYPE"), 262144); -static PHP_METHOD(Phalcon_Mvc_View, setContent) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *content_param = NULL; - zval content; - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_COLUMN"), 7); - ZVAL_UNDEF(&content); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(content) - ZEND_PARSE_PARAMETERS_END(); -#endif + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_FUNC"), 10); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_GROUP"), 65536); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &content_param); - zephir_get_strval(&content, content_param); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_INTO"), 9); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_KEY_PAIR"), 12); - zephir_update_property_zval(this_ptr, ZEND_STRL("content"), &content); - RETURN_THIS(); -} + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_LAZY"), 1); -static PHP_METHOD(Phalcon_Mvc_View, setEventsManager) -{ - zval *eventsManager, eventsManager_sub; - zval *this_ptr = getThis(); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_NAMED"), 11); - ZVAL_UNDEF(&eventsManager_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_NUM"), 3); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_OBJ"), 5); - zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_PROPS_LATE"), 1048576); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_SERIALIZE"), 524288); - zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_UNIQUE"), 196608); + + zephir_declare_class_constant_long(phalcon_db_enum_ce, SL("FETCH_DEFAULT"), 0); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_View, setLayout) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *layout_param = NULL; - zval layout; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&layout); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(layout) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &layout_param); - zephir_get_strval(&layout, layout_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("layout"), &layout); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Mvc_View, setLayoutsDir) +ZEPHIR_INIT_CLASS(Phalcon_Db_Exception) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *layoutsDir_param = NULL; - zval layoutsDir; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db, Exception, phalcon, db_exception, zend_ce_exception, NULL, 0); - ZVAL_UNDEF(&layoutsDir); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(layoutsDir) - ZEND_PARSE_PARAMETERS_END(); + return SUCCESS; +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &layoutsDir_param); - zephir_get_strval(&layoutsDir, layoutsDir_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("layoutsDir"), &layoutsDir); - RETURN_THIS(); -} -static PHP_METHOD(Phalcon_Mvc_View, setMainView) +ZEPHIR_INIT_CLASS(Phalcon_Db_Index) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *viewPath_param = NULL; - zval viewPath; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Index, phalcon, db_index, phalcon_db_index_method_entry, 0); - ZVAL_UNDEF(&viewPath); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(viewPath) - ZEND_PARSE_PARAMETERS_END(); -#endif + zend_declare_property_null(phalcon_db_index_ce, SL("columns"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_index_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_index_ce, SL("type"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_db_index_ce, 1, phalcon_db_indexinterface_ce); + return SUCCESS; +} +static PHP_METHOD(Phalcon_Db_Index, getColumns) +{ + zval *this_ptr = getThis(); - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &viewPath_param); - zephir_get_strval(&viewPath, viewPath_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("mainView"), &viewPath); - RETURN_THIS(); + RETURN_MEMBER(getThis(), "columns"); } -static PHP_METHOD(Phalcon_Mvc_View, setPartialsDir) +static PHP_METHOD(Phalcon_Db_Index, getName) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *partialsDir_param = NULL; - zval partialsDir; zval *this_ptr = getThis(); - ZVAL_UNDEF(&partialsDir); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(partialsDir) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &partialsDir_param); - zephir_get_strval(&partialsDir, partialsDir_param); + RETURN_MEMBER(getThis(), "name"); +} + +static PHP_METHOD(Phalcon_Db_Index, getType) +{ + zval *this_ptr = getThis(); - zephir_update_property_zval(this_ptr, ZEND_STRL("partialsDir"), &partialsDir); - RETURN_THIS(); + + RETURN_MEMBER(getThis(), "type"); } -static PHP_METHOD(Phalcon_Mvc_View, setParamToView) +static PHP_METHOD(Phalcon_Db_Index, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *key_param = NULL, *value, value_sub; - zval key; + zval columns; + zval *name_param = NULL, *columns_param = NULL, *type_param = NULL; + zval name, type; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&columns); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(key) - Z_PARAM_ZVAL(value) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(name) + Z_PARAM_ARRAY(columns) + Z_PARAM_OPTIONAL + Z_PARAM_STR(type) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &key_param, &value); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + zephir_fetch_params(1, 2, 1, &name_param, &columns_param, &type_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_INIT_VAR(&name); + } + ZEPHIR_OBS_COPY_OR_DUP(&columns, columns_param); + if (!type_param) { + ZEPHIR_INIT_VAR(&type); + ZVAL_STRING(&type, ""); + } else { + zephir_get_strval(&type, type_param); } - zephir_update_property_array(this_ptr, SL("viewParams"), &key, value); - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + zephir_update_property_zval(this_ptr, ZEND_STRL("columns"), &columns); + zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &type); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_View, setRenderLevel) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_IndexInterface) { - zval *level_param = NULL, _0; - zend_long level; + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db, IndexInterface, phalcon, db_indexinterface, phalcon_db_indexinterface_method_entry); + + return SUCCESS; +} + +ZEPHIR_DOC_METHOD(Phalcon_Db_IndexInterface, getColumns); +ZEPHIR_DOC_METHOD(Phalcon_Db_IndexInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Db_IndexInterface, getType); + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Profiler) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Profiler, phalcon, db_profiler, phalcon_db_profiler_method_entry, 0); + + zend_declare_property_null(phalcon_db_profiler_ce, SL("activeProfile"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_profiler_ce, SL("allProfiles"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_profiler_ce, SL("totalSeconds"), 0, ZEND_ACC_PROTECTED); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Profiler, getLastProfile) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "activeProfile"); +} + +static PHP_METHOD(Phalcon_Db_Profiler, getNumberTotalStatements) +{ + zval _0; zval *this_ptr = getThis(); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(level) - ZEND_PARSE_PARAMETERS_END(); -#endif - zephir_fetch_params_without_memory_grow(1, 0, &level_param); - level = zephir_get_intval(level_param); + zephir_read_property(&_0, this_ptr, ZEND_STRL("allProfiles"), PH_NOISY_CC | PH_READONLY); + RETURN_LONG(zephir_fast_count_int(&_0)); +} - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, level); - zephir_update_property_zval(this_ptr, ZEND_STRL("renderLevel"), &_0); - RETURN_THISW(); +static PHP_METHOD(Phalcon_Db_Profiler, getTotalElapsedSeconds) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "totalSeconds"); } -static PHP_METHOD(Phalcon_Mvc_View, setTemplateAfter) +static PHP_METHOD(Phalcon_Db_Profiler, getProfiles) { - zval _0$$3; + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "allProfiles"); +} + +static PHP_METHOD(Phalcon_Db_Profiler, reset) +{ + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *templateAfter, templateAfter_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&templateAfter_sub); - ZVAL_UNDEF(&_0$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(templateAfter) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_0); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &templateAfter); - - if (Z_TYPE_P(templateAfter) != IS_ARRAY) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - zephir_array_fast_append(&_0$$3, templateAfter); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesAfter"), &_0$$3); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesAfter"), templateAfter); - } + ZEPHIR_INIT_VAR(&_0); + array_init(&_0); + zephir_update_property_zval(this_ptr, ZEND_STRL("allProfiles"), &_0); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_View, setTemplateBefore) +static PHP_METHOD(Phalcon_Db_Profiler, startProfile) { - zval _0$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *templateBefore, templateBefore_sub; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *sqlStatement_param = NULL, *sqlVariables = NULL, sqlVariables_sub, *sqlBindTypes = NULL, sqlBindTypes_sub, __$true, __$null, activeProfile, _0; + zval sqlStatement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&templateBefore_sub); - ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&sqlStatement); + ZVAL_UNDEF(&sqlVariables_sub); + ZVAL_UNDEF(&sqlBindTypes_sub); + ZVAL_BOOL(&__$true, 1); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&activeProfile); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(templateBefore) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(sqlStatement) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(sqlVariables) + Z_PARAM_ZVAL_OR_NULL(sqlBindTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &templateBefore); + zephir_fetch_params(1, 1, 2, &sqlStatement_param, &sqlVariables, &sqlBindTypes); + zephir_get_strval(&sqlStatement, sqlStatement_param); + if (!sqlVariables) { + sqlVariables = &sqlVariables_sub; + sqlVariables = &__$null; + } + if (!sqlBindTypes) { + sqlBindTypes = &sqlBindTypes_sub; + sqlBindTypes = &__$null; + } - if (Z_TYPE_P(templateBefore) != IS_ARRAY) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - zephir_array_fast_append(&_0$$3, templateBefore); - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesBefore"), &_0$$3); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("templatesBefore"), templateBefore); + ZEPHIR_INIT_VAR(&activeProfile); + object_init_ex(&activeProfile, phalcon_db_profiler_item_ce); + if (zephir_has_constructor(&activeProfile)) { + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "__construct", NULL, 0); + zephir_check_call_status(); } + + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "setsqlstatement", NULL, 214, &sqlStatement); + zephir_check_call_status(); + if (Z_TYPE_P(sqlVariables) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "setsqlvariables", NULL, 215, sqlVariables); + zephir_check_call_status(); + } + if (Z_TYPE_P(sqlBindTypes) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "setsqlbindtypes", NULL, 216, sqlBindTypes); + zephir_check_call_status(); + } + ZEPHIR_CALL_FUNCTION(&_0, "hrtime", NULL, 198, &__$true); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "setinitialtime", NULL, 217, &_0); + zephir_check_call_status(); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("beforestartprofile")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "beforestartprofile", NULL, 0, &activeProfile); + zephir_check_call_status(); + } + zephir_update_property_zval(this_ptr, ZEND_STRL("activeProfile"), &activeProfile); RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_View, setVar) +static PHP_METHOD(Phalcon_Db_Profiler, stopProfile) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *key_param = NULL, *value, value_sub; - zval key; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval __$true, activeProfile, finalTime, initialTime, _0, _1, _2; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(key) - Z_PARAM_ZVAL(value) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_BOOL(&__$true, 1); + ZVAL_UNDEF(&activeProfile); + ZVAL_UNDEF(&finalTime); + ZVAL_UNDEF(&initialTime); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &key_param, &value); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); - } else { - ZEPHIR_INIT_VAR(&key); + + ZEPHIR_CALL_FUNCTION(&finalTime, "hrtime", NULL, 198, &__$true); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("activeProfile"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&activeProfile, &_0); + ZEPHIR_CALL_METHOD(NULL, &activeProfile, "setfinaltime", NULL, 0, &finalTime); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&initialTime, &activeProfile, "getinitialtime", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("totalSeconds"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_1); + zephir_sub_function(&_1, &finalTime, &initialTime); + ZEPHIR_INIT_VAR(&_2); + zephir_add_function(&_2, &_0, &_1); + zephir_update_property_zval(this_ptr, ZEND_STRL("totalSeconds"), &_2); + zephir_update_property_array_append(this_ptr, SL("allProfiles"), &activeProfile); + if ((zephir_method_exists_ex(this_ptr, ZEND_STRL("afterendprofile")) == SUCCESS)) { + ZEPHIR_CALL_METHOD(NULL, this_ptr, "afterendprofile", NULL, 0, &activeProfile); + zephir_check_call_status(); } + RETURN_THIS(); +} - zephir_update_property_array(this_ptr, SL("viewParams"), &key, value); - RETURN_THIS(); + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_RawValue) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, RawValue, phalcon, db_rawvalue, phalcon_db_rawvalue_method_entry, 0); + + zend_declare_property_null(phalcon_db_rawvalue_ce, SL("value"), ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_View, setVars) +static PHP_METHOD(Phalcon_Db_RawValue, getValue) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "value"); +} + +static PHP_METHOD(Phalcon_Db_RawValue, __toString) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "value"); +} + +static PHP_METHOD(Phalcon_Db_RawValue, __construct) { + zval _2$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool merge; - zval *params_param = NULL, *merge_param = NULL, _0$$3, _1$$3; - zval params; + zval *value, value_sub, _0$$3, _1$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&value_sub); ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(params) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(merge) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(value) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, ¶ms_param, &merge_param); - ZEPHIR_OBS_COPY_OR_DUP(¶ms, params_param); - if (!merge_param) { - merge = 1; - } else { - merge = zephir_get_boolval(merge_param); - } + zephir_fetch_params(1, 1, 0, &value); - if (merge) { + if (ZEPHIR_IS_STRING_IDENTICAL(value, "")) { ZEPHIR_INIT_VAR(&_0$$3); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_0$$3, &_1$$3, ¶ms); - zephir_update_property_zval(this_ptr, ZEND_STRL("viewParams"), &_0$$3); + ZEPHIR_INIT_NVAR(&_0$$3); + ZVAL_STRING(&_0$$3, "''"); + zephir_update_property_zval(this_ptr, ZEND_STRL("value"), &_0$$3); + } else if (Z_TYPE_P(value) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$4); + ZEPHIR_INIT_NVAR(&_1$$4); + ZVAL_STRING(&_1$$4, "NULL"); + zephir_update_property_zval(this_ptr, ZEND_STRL("value"), &_1$$4); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("viewParams"), ¶ms); + zephir_cast_to_string(&_2$$5, value); + zephir_update_property_zval(this_ptr, ZEND_STRL("value"), &_2$$5); } - RETURN_THIS(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_View, setViewsDir) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Reference) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db, Reference, phalcon, db_reference, phalcon_db_reference_method_entry, 0); + + zend_declare_property_null(phalcon_db_reference_ce, SL("columns"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("name"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("referencedColumns"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("referencedSchema"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("referencedTable"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("schemaName"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("onDelete"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_reference_ce, SL("onUpdate"), ZEND_ACC_PROTECTED); + zend_class_implements(phalcon_db_reference_ce, 1, phalcon_db_referenceinterface_ce); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Reference, getColumns) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "columns"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "name"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getReferencedColumns) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "referencedColumns"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getReferencedSchema) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "referencedSchema"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getReferencedTable) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "referencedTable"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getSchemaName) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "schemaName"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getOnDelete) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "onDelete"); +} + +static PHP_METHOD(Phalcon_Db_Reference, getOnUpdate) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "onUpdate"); +} + +static PHP_METHOD(Phalcon_Db_Reference, __construct) { - zend_string *_5$$5; - zend_ulong _4$$5; - zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *viewsDir, viewsDir_sub, position, directory, newViewsDir, _1$$4, *_2$$5, _3$$5, _6$$6, _7$$8; + zval definition; + zval *name_param = NULL, *definition_param = NULL, columns, schema, referencedTable, referencedSchema, referencedColumns, onDelete, onUpdate; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&viewsDir_sub); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&directory); - ZVAL_UNDEF(&newViewsDir); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_6$$6); - ZVAL_UNDEF(&_7$$8); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&referencedTable); + ZVAL_UNDEF(&referencedSchema); + ZVAL_UNDEF(&referencedColumns); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(viewsDir) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(name) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &viewsDir); + zephir_fetch_params(1, 2, 0, &name_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - _0 = Z_TYPE_P(viewsDir) != IS_STRING; - if (_0) { - _0 = Z_TYPE_P(viewsDir) != IS_ARRAY; + zephir_update_property_zval(this_ptr, ZEND_STRL("name"), &name); + ZEPHIR_OBS_VAR(&referencedTable); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&referencedTable, &definition, SL("referencedTable"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Referenced table is required", "phalcon/Db/Reference.zep", 103); + return; } - if (_0) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_view_exception_ce, "Views directory must be a string or an array", "phalcon/Mvc/View.zep", 956); + zephir_update_property_zval(this_ptr, ZEND_STRL("referencedTable"), &referencedTable); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Foreign key columns are required", "phalcon/Db/Reference.zep", 109); return; } - if (Z_TYPE_P(viewsDir) == IS_STRING) { - ZEPHIR_CALL_METHOD(&_1$$4, this_ptr, "getdirseparator", NULL, 488, viewsDir); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("viewsDirs"), &_1$$4); - } else { - ZEPHIR_INIT_VAR(&newViewsDir); - array_init(&newViewsDir); - zephir_is_iterable(viewsDir, 0, "phalcon/Mvc/View.zep", 974); - if (Z_TYPE_P(viewsDir) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(viewsDir), _4$$5, _5$$5, _2$$5) - { - ZEPHIR_INIT_NVAR(&position); - if (_5$$5 != NULL) { - ZVAL_STR_COPY(&position, _5$$5); - } else { - ZVAL_LONG(&position, _4$$5); - } - ZEPHIR_INIT_NVAR(&directory); - ZVAL_COPY(&directory, _2$$5); - if (Z_TYPE_P(&directory) != IS_STRING) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_view_exception_ce, "Views directory item must be a string", "phalcon/Mvc/View.zep", 968); - return; - } - ZEPHIR_CALL_METHOD(&_6$$6, this_ptr, "getdirseparator", NULL, 488, &directory); - zephir_check_call_status(); - zephir_array_update_zval(&newViewsDir, &position, &_6$$6, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, viewsDir, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$5, viewsDir, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$5)) { - break; - } - ZEPHIR_CALL_METHOD(&position, viewsDir, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&directory, viewsDir, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&directory) != IS_STRING) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_view_exception_ce, "Views directory item must be a string", "phalcon/Mvc/View.zep", 968); - return; - } - ZEPHIR_CALL_METHOD(&_7$$8, this_ptr, "getdirseparator", NULL, 488, &directory); - zephir_check_call_status(); - zephir_array_update_zval(&newViewsDir, &position, &_7$$8, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, viewsDir, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&directory); - ZEPHIR_INIT_NVAR(&position); - zephir_update_property_zval(this_ptr, ZEND_STRL("viewsDirs"), &newViewsDir); + zephir_update_property_zval(this_ptr, ZEND_STRL("columns"), &columns); + ZEPHIR_OBS_VAR(&referencedColumns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&referencedColumns, &definition, SL("referencedColumns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Referenced columns of the foreign key are required", "phalcon/Db/Reference.zep", 117); + return; } - RETURN_THIS(); + zephir_update_property_zval(this_ptr, ZEND_STRL("referencedColumns"), &referencedColumns); + ZEPHIR_OBS_VAR(&schema); + if (zephir_array_isset_string_fetch(&schema, &definition, SL("schema"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("schemaName"), &schema); + } + ZEPHIR_OBS_VAR(&referencedSchema); + if (zephir_array_isset_string_fetch(&referencedSchema, &definition, SL("referencedSchema"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("referencedSchema"), &referencedSchema); + } + ZEPHIR_OBS_VAR(&onDelete); + if (zephir_array_isset_string_fetch(&onDelete, &definition, SL("onDelete"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("onDelete"), &onDelete); + } + ZEPHIR_OBS_VAR(&onUpdate); + if (zephir_array_isset_string_fetch(&onUpdate, &definition, SL("onUpdate"), 0)) { + zephir_update_property_zval(this_ptr, ZEND_STRL("onUpdate"), &onUpdate); + } + if (UNEXPECTED(zephir_fast_count_int(&columns) != zephir_fast_count_int(&referencedColumns))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Number of columns is not equals than the number of columns referenced", "phalcon/Db/Reference.zep", 141); + return; + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_View, start) + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_ReferenceInterface) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$null; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db, ReferenceInterface, phalcon, db_referenceinterface, phalcon_db_referenceinterface_method_entry); - ZVAL_NULL(&__$null); + return SUCCESS; +} +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getColumns); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getName); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getOnDelete); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getOnUpdate); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getReferencedColumns); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getReferencedSchema); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getReferencedTable); +ZEPHIR_DOC_METHOD(Phalcon_Db_ReferenceInterface, getSchemaName); - ZEPHIR_MM_GROW(); - ZEPHIR_CALL_FUNCTION(NULL, "ob_start", NULL, 384); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("content"), &__$null); - RETURN_THIS(); + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_ResultInterface) +{ + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db, ResultInterface, phalcon, db_resultinterface, phalcon_db_resultinterface_method_entry); + + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_View, toString) +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, dataSeek); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, execute); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, fetch); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, fetchAll); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, fetchArray); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, getInternalResult); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, numRows); +ZEPHIR_DOC_METHOD(Phalcon_Db_ResultInterface, setFetchMode); + + + + +static int phalcon_db_checktype(zval *return_value, zval *placeholder) { + + if (Z_TYPE_P(placeholder) != IS_STRING) { + + } + + return 0; +} + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Dialect_Mysql) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Dialect, Mysql, phalcon, db_dialect_mysql, phalcon_db_dialect_ce, phalcon_db_dialect_mysql_method_entry, 0); + + zend_declare_property_string(phalcon_db_dialect_mysql_ce, SL("escapeChar"), "`", ZEND_ACC_PROTECTED); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, addColumn) { + zend_bool _6$$5, _7$$5, _8$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval params; - zval *controllerName_param = NULL, *actionName_param = NULL, *params_param = NULL, result, _0; - zval controllerName, actionName; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, afterPosition, defaultValue, upperDefaultValue, _0, _1, _2, _3, _4, _5, _14, _15, _9$$5, _10$$6, _11$$7, _12$$7, _13$$7, _16$$11; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerName); - ZVAL_UNDEF(&actionName); - ZVAL_UNDEF(&result); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&afterPosition); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&upperDefaultValue); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_14); + ZVAL_UNDEF(&_15); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$6); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_13$$7); + ZVAL_UNDEF(&_16$$11); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_STR(controllerName) - Z_PARAM_STR(actionName) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(params) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &controllerName_param, &actionName_param, ¶ms_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &column); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&controllerName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(actionName_param) != IS_STRING && Z_TYPE_P(actionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'actionName' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(actionName_param) == IS_STRING)) { - zephir_get_strval(&actionName, actionName_param); - } else { - ZEPHIR_INIT_VAR(&actionName); - } - if (!params_param) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(¶ms, params_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "start", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - ZVAL_BOOL(&_0, 0); - ZEPHIR_CALL_METHOD(&result, this_ptr, "processrender", NULL, 0, &controllerName, &actionName, ¶ms, &_0); + ZEPHIR_CALL_METHOD(&_1, column, "getname", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "finish", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, this_ptr, "getcolumndefinition", NULL, 0, column); zephir_check_call_status(); - if (!(zephir_is_true(&result))) { - RETURN_MM_STRING(""); + ZEPHIR_INIT_VAR(&_3); + ZEPHIR_CONCAT_SVSVSV(&_3, "ALTER TABLE ", &_0, " ADD `", &_1, "` ", &_2); + zephir_get_strval(&sql, &_3); + ZEPHIR_CALL_METHOD(&_4, column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_4)) { + zephir_concat_self_str(&sql, " NOT NULL", sizeof(" NOT NULL") - 1); + } else { + zephir_concat_self_str(&sql, " NULL", sizeof(" NULL") - 1); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getcontent", NULL, 0); + ZEPHIR_CALL_METHOD(&_5, column, "hasdefault", NULL, 0); zephir_check_call_status(); - RETURN_MM(); + if (zephir_is_true(&_5)) { + ZEPHIR_CALL_METHOD(&defaultValue, column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&upperDefaultValue); + zephir_fast_strtoupper(&upperDefaultValue, &defaultValue); + _6$$5 = zephir_memnstr_str(&upperDefaultValue, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Mysql.zep", 54); + if (!(_6$$5)) { + _6$$5 = zephir_memnstr_str(&upperDefaultValue, SL("NULL"), "phalcon/Db/Dialect/Mysql.zep", 54); + } + _7$$5 = _6$$5; + if (!(_7$$5)) { + _7$$5 = Z_TYPE_P(&defaultValue) == IS_LONG; + } + _8$$5 = _7$$5; + if (!(_8$$5)) { + ZEPHIR_CALL_FUNCTION(&_9$$5, "is_float", NULL, 210, &defaultValue); + zephir_check_call_status(); + _8$$5 = zephir_is_true(&_9$$5); + } + if (_8$$5) { + ZEPHIR_INIT_VAR(&_10$$6); + ZEPHIR_CONCAT_SV(&_10$$6, " DEFAULT ", &defaultValue); + zephir_concat_self(&sql, &_10$$6); + } else { + ZEPHIR_INIT_VAR(&_11$$7); + ZVAL_STRING(&_11$$7, "\""); + ZEPHIR_CALL_FUNCTION(&_12$$7, "addcslashes", NULL, 211, &defaultValue, &_11$$7); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_13$$7); + ZEPHIR_CONCAT_SVS(&_13$$7, " DEFAULT \"", &_12$$7, "\""); + zephir_concat_self(&sql, &_13$$7); + } + } + ZEPHIR_CALL_METHOD(&_14, column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_14)) { + zephir_concat_self_str(&sql, " AUTO_INCREMENT", sizeof(" AUTO_INCREMENT") - 1); + } + ZEPHIR_CALL_METHOD(&_15, column, "isfirst", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_15)) { + zephir_concat_self_str(&sql, " FIRST", sizeof(" FIRST") - 1); + } else { + ZEPHIR_CALL_METHOD(&afterPosition, column, "getafterposition", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&afterPosition)) { + ZEPHIR_INIT_VAR(&_16$$11); + ZEPHIR_CONCAT_SVS(&_16$$11, " AFTER `", &afterPosition, "`"); + zephir_concat_self(&sql, &_16$$11); + } + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_View, engineRender) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, addForeignKey) { - zend_string *_9$$3, *_28$$16; - zend_ulong _8$$3, _27$$16; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_5 = NULL, *_13 = NULL, *_16 = NULL, *_20 = NULL, *_23 = NULL, *_32 = NULL, *_35 = NULL, *_39 = NULL, *_42 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool silence, mustClean; - zval viewPath, _45$$30; - zval *engines_param = NULL, *viewPath_param = NULL, *silence_param = NULL, *mustClean_param = NULL, basePath, engine, eventsManager, extension, viewsDir, viewsDirPath, viewEnginePath, viewEnginePaths, viewParams, _0, _1, *_2, _3, _4$$3, *_6$$3, _7$$3, _11$$8, _12$$8, _14$$7, _15$$10, _18$$13, _19$$13, _21$$12, _22$$15, _24$$16, *_25$$16, _26$$16, _30$$21, _31$$21, _33$$20, _34$$23, _37$$26, _38$$26, _40$$25, _41$$28, _43$$29, _44$$30; - zval engines, _10$$8, _17$$13, _29$$21, _36$$26; + zval *tableName_param = NULL, *schemaName_param = NULL, *reference, reference_sub, onDelete, onUpdate, _0, _1, _2, _5, _6, _7, _8, _9, _10, _11, _12, _3$$3, _4$$3, _13$$4, _14$$5; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&engines); - ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_17$$13); - ZVAL_UNDEF(&_29$$21); - ZVAL_UNDEF(&_36$$26); - ZVAL_UNDEF(&basePath); - ZVAL_UNDEF(&engine); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&extension); - ZVAL_UNDEF(&viewsDir); - ZVAL_UNDEF(&viewsDirPath); - ZVAL_UNDEF(&viewEnginePath); - ZVAL_UNDEF(&viewEnginePaths); - ZVAL_UNDEF(&viewParams); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&reference_sub); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_3$$3); ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_14$$7); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_18$$13); - ZVAL_UNDEF(&_19$$13); - ZVAL_UNDEF(&_21$$12); - ZVAL_UNDEF(&_22$$15); - ZVAL_UNDEF(&_24$$16); - ZVAL_UNDEF(&_26$$16); - ZVAL_UNDEF(&_30$$21); - ZVAL_UNDEF(&_31$$21); - ZVAL_UNDEF(&_33$$20); - ZVAL_UNDEF(&_34$$23); - ZVAL_UNDEF(&_37$$26); - ZVAL_UNDEF(&_38$$26); - ZVAL_UNDEF(&_40$$25); - ZVAL_UNDEF(&_41$$28); - ZVAL_UNDEF(&_43$$29); - ZVAL_UNDEF(&_44$$30); - ZVAL_UNDEF(&viewPath); - ZVAL_UNDEF(&_45$$30); + ZVAL_UNDEF(&_13$$4); + ZVAL_UNDEF(&_14$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_ARRAY(engines) - Z_PARAM_STR(viewPath) - Z_PARAM_BOOL(silence) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(mustClean) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(reference, phalcon_db_referenceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &engines_param, &viewPath_param, &silence_param, &mustClean_param); - zephir_get_arrval(&engines, engines_param); - zephir_get_strval(&viewPath, viewPath_param); - silence = zephir_get_boolval(silence_param); - if (!mustClean_param) { - mustClean = 1; + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &reference); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - mustClean = zephir_get_boolval(mustClean_param); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("basePath"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&basePath, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&viewParams, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_0); - ZEPHIR_INIT_VAR(&viewEnginePaths); - array_init(&viewEnginePaths); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "getviewsdirs", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - zephir_is_iterable(&_1, 0, "phalcon/Mvc/View.zep", 1080); - if (Z_TYPE_P(&_1) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_1), _2) - { - ZEPHIR_INIT_NVAR(&viewsDir); - ZVAL_COPY(&viewsDir, _2); - ZEPHIR_CALL_METHOD(&_4$$3, this_ptr, "isabsolutepath", &_5, 489, &viewPath); - zephir_check_call_status(); - if (!(zephir_is_true(&_4$$3))) { - ZEPHIR_INIT_NVAR(&viewsDirPath); - ZEPHIR_CONCAT_VVV(&viewsDirPath, &basePath, &viewsDir, &viewPath); - } else { - ZEPHIR_CPY_WRT(&viewsDirPath, &viewPath); - } - zephir_is_iterable(&engines, 0, "phalcon/Mvc/View.zep", 1075); - if (Z_TYPE_P(&engines) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&engines), _8$$3, _9$$3, _6$$3) - { - ZEPHIR_INIT_NVAR(&extension); - if (_9$$3 != NULL) { - ZVAL_STR_COPY(&extension, _9$$3); - } else { - ZVAL_LONG(&extension, _8$$3); - } - ZEPHIR_INIT_NVAR(&engine); - ZVAL_COPY(&engine, _6$$3); - ZEPHIR_INIT_NVAR(&viewEnginePath); - ZEPHIR_CONCAT_VV(&viewEnginePath, &viewsDirPath, &extension); - if ((zephir_file_exists(&viewEnginePath) == SUCCESS)) { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_10$$8); - zephir_create_array(&_10$$8, 1, 0); - zephir_array_fast_append(&_10$$8, &viewEnginePath); - zephir_update_property_zval(this_ptr, ZEND_STRL("activeRenderPaths"), &_10$$8); - ZEPHIR_INIT_NVAR(&_12$$8); - ZVAL_STRING(&_12$$8, "view:beforeRenderView"); - ZEPHIR_CALL_METHOD(&_11$$8, &eventsManager, "fire", &_13, 0, &_12$$8, this_ptr, &viewEnginePath); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_11$$8)) { - continue; - } - } - if (mustClean) { - ZVAL_BOOL(&_14$$7, 1); - } else { - ZVAL_BOOL(&_14$$7, 0); - } - ZEPHIR_CALL_METHOD(NULL, &engine, "render", NULL, 0, &viewEnginePath, &viewParams, &_14$$7); - zephir_check_call_status(); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_15$$10); - ZVAL_STRING(&_15$$10, "view:afterRenderView"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_16, 0, &_15$$10, this_ptr); - zephir_check_call_status(); - } - RETURN_MM_NULL(); - } - zephir_array_append(&viewEnginePaths, &viewEnginePath, PH_SEPARATE, "phalcon/Mvc/View.zep", 1073); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &engines, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_7$$3, &engines, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_7$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&extension, &engines, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&engine, &engines, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&viewEnginePath); - ZEPHIR_CONCAT_VV(&viewEnginePath, &viewsDirPath, &extension); - if ((zephir_file_exists(&viewEnginePath) == SUCCESS)) { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_17$$13); - zephir_create_array(&_17$$13, 1, 0); - zephir_array_fast_append(&_17$$13, &viewEnginePath); - zephir_update_property_zval(this_ptr, ZEND_STRL("activeRenderPaths"), &_17$$13); - ZEPHIR_INIT_NVAR(&_19$$13); - ZVAL_STRING(&_19$$13, "view:beforeRenderView"); - ZEPHIR_CALL_METHOD(&_18$$13, &eventsManager, "fire", &_20, 0, &_19$$13, this_ptr, &viewEnginePath); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_18$$13)) { - continue; - } - } - if (mustClean) { - ZVAL_BOOL(&_21$$12, 1); - } else { - ZVAL_BOOL(&_21$$12, 0); - } - ZEPHIR_CALL_METHOD(NULL, &engine, "render", NULL, 0, &viewEnginePath, &viewParams, &_21$$12); - zephir_check_call_status(); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_22$$15); - ZVAL_STRING(&_22$$15, "view:afterRenderView"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_23, 0, &_22$$15, this_ptr); - zephir_check_call_status(); - } - RETURN_MM_NULL(); - } - zephir_array_append(&viewEnginePaths, &viewEnginePath, PH_SEPARATE, "phalcon/Mvc/View.zep", 1073); - ZEPHIR_CALL_METHOD(NULL, &engines, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&engine); - ZEPHIR_INIT_NVAR(&extension); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_1, "rewind", NULL, 0); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SVS(&_1, "ALTER TABLE ", &_0, " ADD"); + zephir_get_strval(&sql, &_1); + ZEPHIR_CALL_METHOD(&_2, reference, "getname", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_2)) { + ZEPHIR_CALL_METHOD(&_3$$3, reference, "getname", NULL, 0); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &_1, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&viewsDir, &_1, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_24$$16, this_ptr, "isabsolutepath", &_5, 489, &viewPath); - zephir_check_call_status(); - if (!(zephir_is_true(&_24$$16))) { - ZEPHIR_INIT_NVAR(&viewsDirPath); - ZEPHIR_CONCAT_VVV(&viewsDirPath, &basePath, &viewsDir, &viewPath); - } else { - ZEPHIR_CPY_WRT(&viewsDirPath, &viewPath); - } - zephir_is_iterable(&engines, 0, "phalcon/Mvc/View.zep", 1075); - if (Z_TYPE_P(&engines) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&engines), _27$$16, _28$$16, _25$$16) - { - ZEPHIR_INIT_NVAR(&extension); - if (_28$$16 != NULL) { - ZVAL_STR_COPY(&extension, _28$$16); - } else { - ZVAL_LONG(&extension, _27$$16); - } - ZEPHIR_INIT_NVAR(&engine); - ZVAL_COPY(&engine, _25$$16); - ZEPHIR_INIT_NVAR(&viewEnginePath); - ZEPHIR_CONCAT_VV(&viewEnginePath, &viewsDirPath, &extension); - if ((zephir_file_exists(&viewEnginePath) == SUCCESS)) { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_29$$21); - zephir_create_array(&_29$$21, 1, 0); - zephir_array_fast_append(&_29$$21, &viewEnginePath); - zephir_update_property_zval(this_ptr, ZEND_STRL("activeRenderPaths"), &_29$$21); - ZEPHIR_INIT_NVAR(&_31$$21); - ZVAL_STRING(&_31$$21, "view:beforeRenderView"); - ZEPHIR_CALL_METHOD(&_30$$21, &eventsManager, "fire", &_32, 0, &_31$$21, this_ptr, &viewEnginePath); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_30$$21)) { - continue; - } - } - if (mustClean) { - ZVAL_BOOL(&_33$$20, 1); - } else { - ZVAL_BOOL(&_33$$20, 0); - } - ZEPHIR_CALL_METHOD(NULL, &engine, "render", NULL, 0, &viewEnginePath, &viewParams, &_33$$20); - zephir_check_call_status(); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_34$$23); - ZVAL_STRING(&_34$$23, "view:afterRenderView"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_35, 0, &_34$$23, this_ptr); - zephir_check_call_status(); - } - RETURN_MM_NULL(); - } - zephir_array_append(&viewEnginePaths, &viewEnginePath, PH_SEPARATE, "phalcon/Mvc/View.zep", 1073); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &engines, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_26$$16, &engines, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_26$$16)) { - break; - } - ZEPHIR_CALL_METHOD(&extension, &engines, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&engine, &engines, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&viewEnginePath); - ZEPHIR_CONCAT_VV(&viewEnginePath, &viewsDirPath, &extension); - if ((zephir_file_exists(&viewEnginePath) == SUCCESS)) { - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_36$$26); - zephir_create_array(&_36$$26, 1, 0); - zephir_array_fast_append(&_36$$26, &viewEnginePath); - zephir_update_property_zval(this_ptr, ZEND_STRL("activeRenderPaths"), &_36$$26); - ZEPHIR_INIT_NVAR(&_38$$26); - ZVAL_STRING(&_38$$26, "view:beforeRenderView"); - ZEPHIR_CALL_METHOD(&_37$$26, &eventsManager, "fire", &_39, 0, &_38$$26, this_ptr, &viewEnginePath); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_37$$26)) { - continue; - } - } - if (mustClean) { - ZVAL_BOOL(&_40$$25, 1); - } else { - ZVAL_BOOL(&_40$$25, 0); - } - ZEPHIR_CALL_METHOD(NULL, &engine, "render", NULL, 0, &viewEnginePath, &viewParams, &_40$$25); - zephir_check_call_status(); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_41$$28); - ZVAL_STRING(&_41$$28, "view:afterRenderView"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", &_42, 0, &_41$$28, this_ptr); - zephir_check_call_status(); - } - RETURN_MM_NULL(); - } - zephir_array_append(&viewEnginePaths, &viewEnginePath, PH_SEPARATE, "phalcon/Mvc/View.zep", 1073); - ZEPHIR_CALL_METHOD(NULL, &engines, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&engine); - ZEPHIR_INIT_NVAR(&extension); - ZEPHIR_CALL_METHOD(NULL, &_1, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_INIT_VAR(&_4$$3); + ZEPHIR_CONCAT_SVS(&_4$$3, " CONSTRAINT `", &_3$$3, "`"); + zephir_concat_self(&sql, &_4$$3); } - ZEPHIR_INIT_NVAR(&viewsDir); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - zephir_update_property_zval(this_ptr, ZEND_STRL("activeRenderPaths"), &viewEnginePaths); - ZEPHIR_INIT_VAR(&_43$$29); - ZVAL_STRING(&_43$$29, "view:notFoundView"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_43$$29, this_ptr, &viewEnginePath); - zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_6, reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getcolumnlist", NULL, 54, &_6); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_8, reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_9, reference, "getreferencedschema", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_7, this_ptr, "preparetable", NULL, 0, &_8, &_9); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_11, reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_10, this_ptr, "getcolumnlist", NULL, 54, &_11); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_12); + ZEPHIR_CONCAT_SVSVSVS(&_12, " FOREIGN KEY (", &_5, ") REFERENCES ", &_7, "(", &_10, ")"); + zephir_concat_self(&sql, &_12); + ZEPHIR_CALL_METHOD(&onDelete, reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_VAR(&_13$$4); + ZEPHIR_CONCAT_SV(&_13$$4, " ON DELETE ", &onDelete); + zephir_concat_self(&sql, &_13$$4); } - if (!(silence)) { - ZEPHIR_INIT_VAR(&_44$$30); - object_init_ex(&_44$$30, phalcon_mvc_view_exception_ce); - ZEPHIR_INIT_VAR(&_45$$30); - ZEPHIR_CONCAT_SVS(&_45$$30, "View '", &viewPath, "' was not found in any of the views directory"); - ZEPHIR_CALL_METHOD(NULL, &_44$$30, "__construct", NULL, 29, &_45$$30); - zephir_check_call_status(); - zephir_throw_exception_debug(&_44$$30, "phalcon/Mvc/View.zep", 1089); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_CALL_METHOD(&onUpdate, reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_VAR(&_14$$5); + ZEPHIR_CONCAT_SV(&_14$$5, " ON UPDATE ", &onUpdate); + zephir_concat_self(&sql, &_14$$5); } - ZEPHIR_MM_RESTORE(); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_View, isAbsolutePath) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, addIndex) { - unsigned char _6, _2$$3, _4$$3; - zend_bool _5, _1$$3, _3$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *path_param = NULL, _0; - zval path; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, indexType, _0, _1, _3, _4, _5, _6, _2$$3; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&path); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&index_sub); + ZVAL_UNDEF(&indexType); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_2$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(path) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &path_param); - zephir_get_strval(&path, path_param); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_GET_CONSTANT(&_0, "PHP_OS"); - if (ZEPHIR_IS_STRING(&_0, "WINNT")) { - _1$$3 = zephir_fast_strlen_ev(&path) >= 3; - if (_1$$3) { - _2$$3 = ZEPHIR_STRING_OFFSET(&path, 1); - _1$$3 = _2$$3 == ':'; - } - _3$$3 = _1$$3; - if (_3$$3) { - _4$$3 = ZEPHIR_STRING_OFFSET(&path, 2); - _3$$3 = _4$$3 == '\\'; - } - RETURN_MM_BOOL(_3$$3); - } - _5 = zephir_fast_strlen_ev(&path) >= 1; - if (_5) { - _6 = ZEPHIR_STRING_OFFSET(&path, 0); - _5 = _6 == '/'; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SV(&_1, "ALTER TABLE ", &_0); + zephir_get_strval(&sql, &_1); + ZEPHIR_CALL_METHOD(&indexType, index, "gettype", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_SVS(&_2$$3, " ADD ", &indexType, " INDEX "); + zephir_concat_self(&sql, &_2$$3); + } else { + zephir_concat_self_str(&sql, " ADD INDEX ", sizeof(" ADD INDEX ") - 1); } - RETURN_MM_BOOL(_5); + ZEPHIR_CALL_METHOD(&_3, index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5, index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_4, this_ptr, "getcolumnlist", NULL, 54, &_5); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6); + ZEPHIR_CONCAT_SVSVS(&_6, "`", &_3, "` (", &_4, ")"); + zephir_concat_self(&sql, &_6); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_View, loadTemplateEngines) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, addPrimaryKey) { - zval _15$$11, _21$$17; - zend_class_entry *_8$$9, *_17$$15; - zend_string *_6$$5; - zend_ulong _5$$5; - zval engines, di, registeredEngines, engineService, extension, _0, _1$$3, _2$$4, *_3$$5, _4$$5, _7$$9, _11$$12, _12$$12, _14$$11, _16$$15, _18$$18, _19$$18, _20$$17; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_9 = NULL, *_10 = NULL, *_13 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, _0, _1, _2; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&engines); - ZVAL_UNDEF(&di); - ZVAL_UNDEF(®isteredEngines); - ZVAL_UNDEF(&engineService); - ZVAL_UNDEF(&extension); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&index_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_11$$12); - ZVAL_UNDEF(&_12$$12); - ZVAL_UNDEF(&_14$$11); - ZVAL_UNDEF(&_16$$15); - ZVAL_UNDEF(&_18$$18); - ZVAL_UNDEF(&_19$$18); - ZVAL_UNDEF(&_20$$17); - ZVAL_UNDEF(&_15$$11); - ZVAL_UNDEF(&_21$$17); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("engines"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&engines, &_0); - if (ZEPHIR_IS_FALSE_IDENTICAL(&engines)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&di, &_1$$3); - ZEPHIR_INIT_NVAR(&engines); - array_init(&engines); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("registeredEngines"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(®isteredEngines, &_1$$3); - if (ZEPHIR_IS_EMPTY(®isteredEngines)) { - ZEPHIR_INIT_VAR(&_2$$4); - object_init_ex(&_2$$4, phalcon_mvc_view_engine_php_ce); - ZEPHIR_CALL_METHOD(NULL, &_2$$4, "__construct", NULL, 490, this_ptr, &di); - zephir_check_call_status(); - zephir_array_update_string(&engines, SL(".phtml"), &_2$$4, PH_COPY | PH_SEPARATE); - } else { - if (Z_TYPE_P(&di) != IS_OBJECT) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_view_exception_ce, "A dependency injection container is required to access application services", "phalcon/Mvc/View.zep", 1132); - return; - } - zephir_is_iterable(®isteredEngines, 0, "phalcon/Mvc/View.zep", 1169); - if (Z_TYPE_P(®isteredEngines) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(®isteredEngines), _5$$5, _6$$5, _3$$5) - { - ZEPHIR_INIT_NVAR(&extension); - if (_6$$5 != NULL) { - ZVAL_STR_COPY(&extension, _6$$5); - } else { - ZVAL_LONG(&extension, _5$$5); - } - ZEPHIR_INIT_NVAR(&engineService); - ZVAL_COPY(&engineService, _3$$5); - if (Z_TYPE_P(&engineService) == IS_OBJECT) { - if (zephir_is_instance_of(&engineService, SL("Closure"))) { - _8$$9 = zephir_fetch_class_str_ex(SL("Closure"), ZEND_FETCH_CLASS_AUTO); - ZEPHIR_CALL_CE_STATIC(&_7$$9, _8$$9, "bind", &_9, 0, &engineService, &di); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&engineService, &_7$$9); - ZEPHIR_CALL_FUNCTION(&_7$$9, "call_user_func", &_10, 180, &engineService, this_ptr); - zephir_check_call_status(); - zephir_array_update_zval(&engines, &extension, &_7$$9, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&engines, &extension, &engineService, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&engineService) != IS_STRING) { - ZEPHIR_INIT_NVAR(&_11$$12); - object_init_ex(&_11$$12, phalcon_mvc_view_exception_ce); - ZEPHIR_INIT_NVAR(&_12$$12); - ZEPHIR_CONCAT_SV(&_12$$12, "Invalid template engine registration for extension: ", &extension); - ZEPHIR_CALL_METHOD(NULL, &_11$$12, "__construct", &_13, 29, &_12$$12); - zephir_check_call_status(); - zephir_throw_exception_debug(&_11$$12, "phalcon/Mvc/View.zep", 1160); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_15$$11); - zephir_create_array(&_15$$11, 1, 0); - zephir_array_fast_append(&_15$$11, this_ptr); - ZEPHIR_CALL_METHOD(&_14$$11, &di, "get", NULL, 0, &engineService, &_15$$11); - zephir_check_call_status(); - zephir_array_update_zval(&engines, &extension, &_14$$11, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, ®isteredEngines, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_4$$5, ®isteredEngines, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_4$$5)) { - break; - } - ZEPHIR_CALL_METHOD(&extension, ®isteredEngines, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&engineService, ®isteredEngines, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&engineService) == IS_OBJECT) { - if (zephir_is_instance_of(&engineService, SL("Closure"))) { - _17$$15 = zephir_fetch_class_str_ex(SL("Closure"), ZEND_FETCH_CLASS_AUTO); - ZEPHIR_CALL_CE_STATIC(&_16$$15, _17$$15, "bind", &_9, 0, &engineService, &di); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&engineService, &_16$$15); - ZEPHIR_CALL_FUNCTION(&_16$$15, "call_user_func", &_10, 180, &engineService, this_ptr); - zephir_check_call_status(); - zephir_array_update_zval(&engines, &extension, &_16$$15, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&engines, &extension, &engineService, PH_COPY | PH_SEPARATE); - } - } else { - if (Z_TYPE_P(&engineService) != IS_STRING) { - ZEPHIR_INIT_NVAR(&_18$$18); - object_init_ex(&_18$$18, phalcon_mvc_view_exception_ce); - ZEPHIR_INIT_NVAR(&_19$$18); - ZEPHIR_CONCAT_SV(&_19$$18, "Invalid template engine registration for extension: ", &extension); - ZEPHIR_CALL_METHOD(NULL, &_18$$18, "__construct", &_13, 29, &_19$$18); - zephir_check_call_status(); - zephir_throw_exception_debug(&_18$$18, "phalcon/Mvc/View.zep", 1160); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_21$$17); - zephir_create_array(&_21$$17, 1, 0); - zephir_array_fast_append(&_21$$17, this_ptr); - ZEPHIR_CALL_METHOD(&_20$$17, &di, "get", NULL, 0, &engineService, &_21$$17); - zephir_check_call_status(); - zephir_array_update_zval(&engines, &extension, &_20$$17, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, ®isteredEngines, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&engineService); - ZEPHIR_INIT_NVAR(&extension); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("engines"), &engines); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); } - RETURN_CCTOR(&engines); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getcolumnlist", NULL, 54, &_2); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " ADD PRIMARY KEY (", &_1, ")"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_View, processRender) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, createTable) { + zend_bool _9$$10, _10$$10, _11$$10, _28$$19, _29$$19, _30$$19; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, renderLevel = 0; - zend_bool fireEvents, silence = 0, _5, _30; - zval params; - zval *controllerName_param = NULL, *actionName_param = NULL, *params_param = NULL, *fireEvents_param = NULL, layoutsDir, layout, pickView, layoutName, engines, renderView, pickViewAction, eventsManager, disabledLevels, templatesBefore, templatesAfter, templateBefore, templateAfter, _0, _2, _4, _8, _9, _1$$3, _6$$11, _7$$11, _10$$15, _11$$17, *_12$$17, _13$$17, _14$$18, _15$$18, _16$$19, _17$$19, _18$$21, _19$$21, _20$$23, *_21$$23, _22$$23, _23$$24, _24$$24, _25$$25, _26$$25, _27$$27, _28$$27, _29$$13, _31$$28; - zval controllerName, actionName, _3$$7; + zephir_fcall_cache_entry *_6 = NULL, *_13 = NULL, *_17 = NULL, *_45 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition, createLines; + zval *tableName_param = NULL, *schemaName_param = NULL, *definition_param = NULL, temporary, options, table, columns, column, indexes, index, reference, references, indexName, columnLine, indexType, onDelete, onUpdate, defaultValue, upperDefaultValue, *_2, _3, _86, _87, _0$$5, _1$$6, _4$$7, _5$$7, _7$$7, _8$$7, _19$$7, _20$$7, _21$$7, _12$$10, _14$$11, _15$$12, _16$$12, _18$$12, _22$$15, _23$$15, _24$$16, _25$$16, _26$$16, _27$$16, _36$$16, _37$$16, _38$$16, _31$$19, _32$$20, _33$$21, _34$$21, _35$$21, _39$$24, _40$$24, *_41$$25, _42$$25, _43$$27, _44$$27, _46$$27, _47$$29, _48$$29, _49$$29, _50$$30, _51$$30, _52$$30, _53$$32, _54$$32, _55$$32, _56$$34, _57$$34, _58$$34, _59$$35, _60$$35, _61$$35, *_62$$36, _63$$36, _64$$37, _65$$37, _66$$37, _67$$37, _68$$37, _69$$37, _70$$37, _71$$37, _72$$37, _73$$38, _74$$39, _75$$40, _76$$40, _77$$40, _78$$40, _79$$40, _80$$40, _81$$40, _82$$40, _83$$40, _84$$41, _85$$42, _88$$43, _89$$43; + zval tableName, schemaName, indexSql, referenceSql, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&controllerName); - ZVAL_UNDEF(&actionName); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&layoutsDir); - ZVAL_UNDEF(&layout); - ZVAL_UNDEF(&pickView); - ZVAL_UNDEF(&layoutName); - ZVAL_UNDEF(&engines); - ZVAL_UNDEF(&renderView); - ZVAL_UNDEF(&pickViewAction); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&disabledLevels); - ZVAL_UNDEF(&templatesBefore); - ZVAL_UNDEF(&templatesAfter); - ZVAL_UNDEF(&templateBefore); - ZVAL_UNDEF(&templateAfter); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_6$$11); - ZVAL_UNDEF(&_7$$11); - ZVAL_UNDEF(&_10$$15); - ZVAL_UNDEF(&_11$$17); - ZVAL_UNDEF(&_13$$17); - ZVAL_UNDEF(&_14$$18); - ZVAL_UNDEF(&_15$$18); - ZVAL_UNDEF(&_16$$19); - ZVAL_UNDEF(&_17$$19); - ZVAL_UNDEF(&_18$$21); - ZVAL_UNDEF(&_19$$21); - ZVAL_UNDEF(&_20$$23); - ZVAL_UNDEF(&_22$$23); - ZVAL_UNDEF(&_23$$24); - ZVAL_UNDEF(&_24$$24); - ZVAL_UNDEF(&_25$$25); - ZVAL_UNDEF(&_26$$25); - ZVAL_UNDEF(&_27$$27); - ZVAL_UNDEF(&_28$$27); - ZVAL_UNDEF(&_29$$13); - ZVAL_UNDEF(&_31$$28); - ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexSql); + ZVAL_UNDEF(&referenceSql); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&temporary); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&indexName); + ZVAL_UNDEF(&columnLine); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&upperDefaultValue); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_86); + ZVAL_UNDEF(&_87); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF(&_4$$7); + ZVAL_UNDEF(&_5$$7); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_19$$7); + ZVAL_UNDEF(&_20$$7); + ZVAL_UNDEF(&_21$$7); + ZVAL_UNDEF(&_12$$10); + ZVAL_UNDEF(&_14$$11); + ZVAL_UNDEF(&_15$$12); + ZVAL_UNDEF(&_16$$12); + ZVAL_UNDEF(&_18$$12); + ZVAL_UNDEF(&_22$$15); + ZVAL_UNDEF(&_23$$15); + ZVAL_UNDEF(&_24$$16); + ZVAL_UNDEF(&_25$$16); + ZVAL_UNDEF(&_26$$16); + ZVAL_UNDEF(&_27$$16); + ZVAL_UNDEF(&_36$$16); + ZVAL_UNDEF(&_37$$16); + ZVAL_UNDEF(&_38$$16); + ZVAL_UNDEF(&_31$$19); + ZVAL_UNDEF(&_32$$20); + ZVAL_UNDEF(&_33$$21); + ZVAL_UNDEF(&_34$$21); + ZVAL_UNDEF(&_35$$21); + ZVAL_UNDEF(&_39$$24); + ZVAL_UNDEF(&_40$$24); + ZVAL_UNDEF(&_42$$25); + ZVAL_UNDEF(&_43$$27); + ZVAL_UNDEF(&_44$$27); + ZVAL_UNDEF(&_46$$27); + ZVAL_UNDEF(&_47$$29); + ZVAL_UNDEF(&_48$$29); + ZVAL_UNDEF(&_49$$29); + ZVAL_UNDEF(&_50$$30); + ZVAL_UNDEF(&_51$$30); + ZVAL_UNDEF(&_52$$30); + ZVAL_UNDEF(&_53$$32); + ZVAL_UNDEF(&_54$$32); + ZVAL_UNDEF(&_55$$32); + ZVAL_UNDEF(&_56$$34); + ZVAL_UNDEF(&_57$$34); + ZVAL_UNDEF(&_58$$34); + ZVAL_UNDEF(&_59$$35); + ZVAL_UNDEF(&_60$$35); + ZVAL_UNDEF(&_61$$35); + ZVAL_UNDEF(&_63$$36); + ZVAL_UNDEF(&_64$$37); + ZVAL_UNDEF(&_65$$37); + ZVAL_UNDEF(&_66$$37); + ZVAL_UNDEF(&_67$$37); + ZVAL_UNDEF(&_68$$37); + ZVAL_UNDEF(&_69$$37); + ZVAL_UNDEF(&_70$$37); + ZVAL_UNDEF(&_71$$37); + ZVAL_UNDEF(&_72$$37); + ZVAL_UNDEF(&_73$$38); + ZVAL_UNDEF(&_74$$39); + ZVAL_UNDEF(&_75$$40); + ZVAL_UNDEF(&_76$$40); + ZVAL_UNDEF(&_77$$40); + ZVAL_UNDEF(&_78$$40); + ZVAL_UNDEF(&_79$$40); + ZVAL_UNDEF(&_80$$40); + ZVAL_UNDEF(&_81$$40); + ZVAL_UNDEF(&_82$$40); + ZVAL_UNDEF(&_83$$40); + ZVAL_UNDEF(&_84$$41); + ZVAL_UNDEF(&_85$$42); + ZVAL_UNDEF(&_88$$43); + ZVAL_UNDEF(&_89$$43); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&createLines); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_STR(controllerName) - Z_PARAM_STR(actionName) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(params) - Z_PARAM_BOOL(fireEvents) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &controllerName_param, &actionName_param, ¶ms_param, &fireEvents_param); - if (UNEXPECTED(Z_TYPE_P(controllerName_param) != IS_STRING && Z_TYPE_P(controllerName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'controllerName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(controllerName_param) == IS_STRING)) { - zephir_get_strval(&controllerName, controllerName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&controllerName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(actionName_param) != IS_STRING && Z_TYPE_P(actionName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'actionName' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(actionName_param) == IS_STRING)) { - zephir_get_strval(&actionName, actionName_param); - } else { - ZEPHIR_INIT_VAR(&actionName); - } - if (!params_param) { - ZEPHIR_INIT_VAR(¶ms); - array_init(¶ms); - } else { - zephir_get_arrval(¶ms, params_param); - } - if (!fireEvents_param) { - fireEvents = 1; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - fireEvents = zephir_get_boolval(fireEvents_param); + ZEPHIR_INIT_VAR(&schemaName); } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, 0); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("disabled"), PH_NOISY_CC | PH_READONLY); - if (!ZEPHIR_IS_FALSE_IDENTICAL(&_0)) { - ZEPHIR_CALL_FUNCTION(&_1$$3, "ob_get_contents", NULL, 491); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("content"), &_1$$3); - RETURN_MM_BOOL(0); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'columns' is required in the definition array", "phalcon/Db/Dialect/Mysql.zep", 151); + return; } - zephir_update_property_zval(this_ptr, ZEND_STRL("controllerName"), &controllerName); - zephir_update_property_zval(this_ptr, ZEND_STRL("actionName"), &actionName); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setvars", NULL, 0, ¶ms); + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - zephir_read_property(&_2, this_ptr, ZEND_STRL("layoutsDir"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&layoutsDir, &_2); - if (!(zephir_is_true(&layoutsDir))) { - ZEPHIR_INIT_NVAR(&layoutsDir); - ZVAL_STRING(&layoutsDir, "layouts/"); + ZEPHIR_INIT_VAR(&temporary); + ZVAL_BOOL(&temporary, 0); + ZEPHIR_OBS_VAR(&options); + if (zephir_array_isset_string_fetch(&options, &definition, SL("options"), 0)) { + ZEPHIR_OBS_NVAR(&temporary); + zephir_array_isset_string_fetch(&temporary, &options, SL("temporary"), 0); } - zephir_read_property(&_2, this_ptr, ZEND_STRL("layout"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&layout, &_2); - if (zephir_is_true(&layout)) { - ZEPHIR_CPY_WRT(&layoutName, &layout); + if (zephir_is_true(&temporary)) { + ZEPHIR_INIT_VAR(&_0$$5); + ZEPHIR_CONCAT_SVS(&_0$$5, "CREATE TEMPORARY TABLE ", &table, " (\n\t"); + zephir_get_strval(&sql, &_0$$5); } else { - ZEPHIR_CPY_WRT(&layoutName, &controllerName); + ZEPHIR_INIT_VAR(&_1$$6); + ZEPHIR_CONCAT_SVS(&_1$$6, "CREATE TABLE ", &table, " (\n\t"); + zephir_get_strval(&sql, &_1$$6); } - ZEPHIR_CALL_METHOD(&engines, this_ptr, "loadtemplateengines", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_2, this_ptr, ZEND_STRL("pickView"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&pickView, &_2); - if (Z_TYPE_P(&pickView) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$7); - ZEPHIR_CONCAT_VSV(&_3$$7, &controllerName, "/", &actionName); - ZEPHIR_CPY_WRT(&renderView, &_3$$7); - } else { - ZEPHIR_OBS_NVAR(&renderView); - zephir_array_fetch_long(&renderView, &pickView, 0, PH_NOISY, "phalcon/Mvc/View.zep", 1247); - if (Z_TYPE_P(&layoutName) == IS_NULL) { - ZEPHIR_OBS_VAR(&pickViewAction); - if (zephir_array_isset_long_fetch(&pickViewAction, &pickView, 1, 0)) { - ZEPHIR_CPY_WRT(&layoutName, &pickViewAction); + ZEPHIR_INIT_VAR(&createLines); + array_init(&createLines); + zephir_is_iterable(&columns, 0, "phalcon/Db/Dialect/Mysql.zep", 228); + if (Z_TYPE_P(&columns) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&columns), _2) + { + ZEPHIR_INIT_NVAR(&column); + ZVAL_COPY(&column, _2); + ZEPHIR_CALL_METHOD(&_4$$7, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$7, this_ptr, "getcolumndefinition", &_6, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&columnLine); + ZEPHIR_CONCAT_SVSV(&columnLine, "`", &_4$$7, "` ", &_5$$7); + ZEPHIR_CALL_METHOD(&_7$$7, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_7$$7)) { + zephir_concat_self_str(&columnLine, SL(" NOT NULL")); + } else { + zephir_concat_self_str(&columnLine, SL(" NULL")); } - } - } - zephir_read_property(&_2, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_2); - ZEPHIR_INIT_VAR(&_4); - ZEPHIR_CREATE_SYMBOL_TABLE(); - - _5 = fireEvents; - if (_5) { - _5 = Z_TYPE_P(&eventsManager) == IS_OBJECT; - } - if (_5) { - ZEPHIR_INIT_VAR(&_7$$11); - ZVAL_STRING(&_7$$11, "view:beforeRender"); - ZEPHIR_CALL_METHOD(&_6$$11, &eventsManager, "fire", NULL, 0, &_7$$11, this_ptr); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&_6$$11)) { - RETURN_MM_BOOL(0); - } - } - ZEPHIR_CALL_FUNCTION(&_8, "ob_get_contents", NULL, 491); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("content"), &_8); - silence = 1; - zephir_read_property(&_2, this_ptr, ZEND_STRL("disabledLevels"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&disabledLevels, &_2); - ZEPHIR_OBS_VAR(&_9); - zephir_read_property(&_9, this_ptr, ZEND_STRL("renderLevel"), PH_NOISY_CC); - renderLevel = zephir_get_intval(&_9); - if (renderLevel) { - if (renderLevel >= 1) { - if (!(zephir_array_isset_long(&disabledLevels, 1))) { - ZEPHIR_INIT_ZVAL_NREF(_10$$15); - ZVAL_LONG(&_10$$15, 1); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_10$$15); - if (silence) { - ZVAL_BOOL(&_10$$15, 1); - } else { - ZVAL_BOOL(&_10$$15, 0); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &renderView, &_10$$15); + ZEPHIR_CALL_METHOD(&_8$$7, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_8$$7)) { + ZEPHIR_CALL_METHOD(&defaultValue, &column, "getdefault", NULL, 0); zephir_check_call_status(); - } - } - if (renderLevel >= 2) { - if (!(zephir_array_isset_long(&disabledLevels, 2))) { - ZEPHIR_INIT_ZVAL_NREF(_11$$17); - ZVAL_LONG(&_11$$17, 2); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_11$$17); - zephir_read_property(&_11$$17, this_ptr, ZEND_STRL("templatesBefore"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&templatesBefore, &_11$$17); - silence = 0; - zephir_is_iterable(&templatesBefore, 0, "phalcon/Mvc/View.zep", 1323); - if (Z_TYPE_P(&templatesBefore) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&templatesBefore), _12$$17) - { - ZEPHIR_INIT_NVAR(&templateBefore); - ZVAL_COPY(&templateBefore, _12$$17); - ZEPHIR_INIT_NVAR(&_14$$18); - ZEPHIR_CONCAT_VV(&_14$$18, &layoutsDir, &templateBefore); - if (silence) { - ZVAL_BOOL(&_15$$18, 1); - } else { - ZVAL_BOOL(&_15$$18, 0); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_14$$18, &_15$$18); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &templatesBefore, "rewind", NULL, 0); + ZEPHIR_INIT_NVAR(&upperDefaultValue); + zephir_fast_strtoupper(&upperDefaultValue, &defaultValue); + _9$$10 = zephir_memnstr_str(&upperDefaultValue, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Mysql.zep", 194); + if (!(_9$$10)) { + _9$$10 = zephir_memnstr_str(&upperDefaultValue, SL("NULL"), "phalcon/Db/Dialect/Mysql.zep", 194); + } + _10$$10 = _9$$10; + if (!(_10$$10)) { + _10$$10 = Z_TYPE_P(&defaultValue) == IS_LONG; + } + _11$$10 = _10$$10; + if (!(_11$$10)) { + ZEPHIR_CALL_FUNCTION(&_12$$10, "is_float", &_13, 210, &defaultValue); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_13$$17, &templatesBefore, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_13$$17)) { - break; - } - ZEPHIR_CALL_METHOD(&templateBefore, &templatesBefore, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_16$$19); - ZEPHIR_CONCAT_VV(&_16$$19, &layoutsDir, &templateBefore); - if (silence) { - ZVAL_BOOL(&_17$$19, 1); - } else { - ZVAL_BOOL(&_17$$19, 0); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_16$$19, &_17$$19); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &templatesBefore, "next", NULL, 0); - zephir_check_call_status(); - } + _11$$10 = zephir_is_true(&_12$$10); } - ZEPHIR_INIT_NVAR(&templateBefore); - silence = 1; - } - } - if (renderLevel >= 3) { - if (!(zephir_array_isset_long(&disabledLevels, 3))) { - ZEPHIR_INIT_ZVAL_NREF(_18$$21); - ZVAL_LONG(&_18$$21, 3); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_18$$21); - ZEPHIR_INIT_VAR(&_19$$21); - ZEPHIR_CONCAT_VV(&_19$$21, &layoutsDir, &layoutName); - if (silence) { - ZVAL_BOOL(&_18$$21, 1); + if (_11$$10) { + ZEPHIR_INIT_NVAR(&_14$$11); + ZEPHIR_CONCAT_SV(&_14$$11, " DEFAULT ", &defaultValue); + zephir_concat_self(&columnLine, &_14$$11); } else { - ZVAL_BOOL(&_18$$21, 0); + ZEPHIR_INIT_NVAR(&_15$$12); + ZVAL_STRING(&_15$$12, "\""); + ZEPHIR_CALL_FUNCTION(&_16$$12, "addcslashes", &_17, 211, &defaultValue, &_15$$12); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_18$$12); + ZEPHIR_CONCAT_SVS(&_18$$12, " DEFAULT \"", &_16$$12, "\""); + zephir_concat_self(&columnLine, &_18$$12); } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_19$$21, &_18$$21); + } + ZEPHIR_CALL_METHOD(&_19$$7, &column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_19$$7)) { + zephir_concat_self_str(&columnLine, SL(" AUTO_INCREMENT")); + } + ZEPHIR_CALL_METHOD(&_20$$7, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_20$$7)) { + zephir_concat_self_str(&columnLine, SL(" PRIMARY KEY")); + } + ZEPHIR_CALL_METHOD(&_21$$7, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_21$$7)) { + ZEPHIR_CALL_METHOD(&_22$$15, &column, "getcomment", NULL, 0); zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_23$$15); + ZEPHIR_CONCAT_SVS(&_23$$15, " COMMENT '", &_22$$15, "'"); + zephir_concat_self(&columnLine, &_23$$15); } - } - if (renderLevel >= 4) { - if (!(zephir_array_isset_long(&disabledLevels, 4))) { - ZEPHIR_INIT_ZVAL_NREF(_20$$23); - ZVAL_LONG(&_20$$23, 4); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_20$$23); - zephir_read_property(&_20$$23, this_ptr, ZEND_STRL("templatesAfter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&templatesAfter, &_20$$23); - silence = 0; - zephir_is_iterable(&templatesAfter, 0, "phalcon/Mvc/View.zep", 1359); - if (Z_TYPE_P(&templatesAfter) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&templatesAfter), _21$$23) - { - ZEPHIR_INIT_NVAR(&templateAfter); - ZVAL_COPY(&templateAfter, _21$$23); - ZEPHIR_INIT_NVAR(&_23$$24); - ZEPHIR_CONCAT_VV(&_23$$24, &layoutsDir, &templateAfter); - if (silence) { - ZVAL_BOOL(&_24$$24, 1); - } else { - ZVAL_BOOL(&_24$$24, 0); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_23$$24, &_24$$24); - zephir_check_call_status(); - } ZEND_HASH_FOREACH_END(); + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 222); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &columns, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&column, &columns, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_24$$16, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_25$$16, this_ptr, "getcolumndefinition", &_6, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&columnLine); + ZEPHIR_CONCAT_SVSV(&columnLine, "`", &_24$$16, "` ", &_25$$16); + ZEPHIR_CALL_METHOD(&_26$$16, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_26$$16)) { + zephir_concat_self_str(&columnLine, SL(" NOT NULL")); } else { - ZEPHIR_CALL_METHOD(NULL, &templatesAfter, "rewind", NULL, 0); + zephir_concat_self_str(&columnLine, SL(" NULL")); + } + ZEPHIR_CALL_METHOD(&_27$$16, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_27$$16)) { + ZEPHIR_CALL_METHOD(&defaultValue, &column, "getdefault", NULL, 0); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_22$$23, &templatesAfter, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_22$$23)) { - break; - } - ZEPHIR_CALL_METHOD(&templateAfter, &templatesAfter, "current", NULL, 0); + ZEPHIR_INIT_NVAR(&upperDefaultValue); + zephir_fast_strtoupper(&upperDefaultValue, &defaultValue); + _28$$19 = zephir_memnstr_str(&upperDefaultValue, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Mysql.zep", 194); + if (!(_28$$19)) { + _28$$19 = zephir_memnstr_str(&upperDefaultValue, SL("NULL"), "phalcon/Db/Dialect/Mysql.zep", 194); + } + _29$$19 = _28$$19; + if (!(_29$$19)) { + _29$$19 = Z_TYPE_P(&defaultValue) == IS_LONG; + } + _30$$19 = _29$$19; + if (!(_30$$19)) { + ZEPHIR_CALL_FUNCTION(&_31$$19, "is_float", &_13, 210, &defaultValue); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_25$$25); - ZEPHIR_CONCAT_VV(&_25$$25, &layoutsDir, &templateAfter); - if (silence) { - ZVAL_BOOL(&_26$$25, 1); - } else { - ZVAL_BOOL(&_26$$25, 0); - } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_25$$25, &_26$$25); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &templatesAfter, "next", NULL, 0); + _30$$19 = zephir_is_true(&_31$$19); + } + if (_30$$19) { + ZEPHIR_INIT_NVAR(&_32$$20); + ZEPHIR_CONCAT_SV(&_32$$20, " DEFAULT ", &defaultValue); + zephir_concat_self(&columnLine, &_32$$20); + } else { + ZEPHIR_INIT_NVAR(&_33$$21); + ZVAL_STRING(&_33$$21, "\""); + ZEPHIR_CALL_FUNCTION(&_34$$21, "addcslashes", &_17, 211, &defaultValue, &_33$$21); zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_35$$21); + ZEPHIR_CONCAT_SVS(&_35$$21, " DEFAULT \"", &_34$$21, "\""); + zephir_concat_self(&columnLine, &_35$$21); } } - ZEPHIR_INIT_NVAR(&templateAfter); - silence = 1; - } + ZEPHIR_CALL_METHOD(&_36$$16, &column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_36$$16)) { + zephir_concat_self_str(&columnLine, SL(" AUTO_INCREMENT")); + } + ZEPHIR_CALL_METHOD(&_37$$16, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_37$$16)) { + zephir_concat_self_str(&columnLine, SL(" PRIMARY KEY")); + } + ZEPHIR_CALL_METHOD(&_38$$16, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_38$$16)) { + ZEPHIR_CALL_METHOD(&_39$$24, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_40$$24); + ZEPHIR_CONCAT_SVS(&_40$$24, " COMMENT '", &_39$$24, "'"); + zephir_concat_self(&columnLine, &_40$$24); + } + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 222); + ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); + zephir_check_call_status(); } - if (renderLevel >= 5) { - if (!(zephir_array_isset_long(&disabledLevels, 5))) { - ZEPHIR_INIT_ZVAL_NREF(_27$$27); - ZVAL_LONG(&_27$$27, 5); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_27$$27); - zephir_read_property(&_27$$27, this_ptr, ZEND_STRL("mainView"), PH_NOISY_CC | PH_READONLY); - if (silence) { - ZVAL_BOOL(&_28$$27, 1); + } + ZEPHIR_INIT_NVAR(&column); + ZEPHIR_OBS_VAR(&indexes); + if (zephir_array_isset_string_fetch(&indexes, &definition, SL("indexes"), 0)) { + zephir_is_iterable(&indexes, 0, "phalcon/Db/Dialect/Mysql.zep", 248); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&indexes), _41$$25) + { + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _41$$25); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_STRING(&indexName, "PRIMARY")) { + ZEPHIR_CALL_METHOD(&_44$$27, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_43$$27, this_ptr, "getcolumnlist", &_45, 54, &_44$$27); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_46$$27); + ZEPHIR_CONCAT_SVS(&_46$$27, "PRIMARY KEY (", &_43$$27, ")"); + zephir_get_strval(&indexSql, &_46$$27); } else { - ZVAL_BOOL(&_28$$27, 0); + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_CALL_METHOD(&_48$$29, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_47$$29, this_ptr, "getcolumnlist", &_45, 54, &_48$$29); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_49$$29); + ZEPHIR_CONCAT_VSVSVS(&_49$$29, &indexType, " KEY `", &indexName, "` (", &_47$$29, ")"); + zephir_get_strval(&indexSql, &_49$$29); + } else { + ZEPHIR_CALL_METHOD(&_51$$30, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_50$$30, this_ptr, "getcolumnlist", &_45, 54, &_51$$30); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_52$$30); + ZEPHIR_CONCAT_SVSVS(&_52$$30, "KEY `", &indexName, "` (", &_50$$30, ")"); + zephir_get_strval(&indexSql, &_52$$30); + } } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "enginerender", NULL, 0, &engines, &_27$$27, &_28$$27); + zephir_array_append(&createLines, &indexSql, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 246); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_42$$25, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_42$$25)) { + break; + } + ZEPHIR_CALL_METHOD(&index, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_STRING(&indexName, "PRIMARY")) { + ZEPHIR_CALL_METHOD(&_54$$32, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_53$$32, this_ptr, "getcolumnlist", &_45, 54, &_54$$32); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_55$$32); + ZEPHIR_CONCAT_SVS(&_55$$32, "PRIMARY KEY (", &_53$$32, ")"); + zephir_get_strval(&indexSql, &_55$$32); + } else { + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_CALL_METHOD(&_57$$34, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_56$$34, this_ptr, "getcolumnlist", &_45, 54, &_57$$34); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_58$$34); + ZEPHIR_CONCAT_VSVSVS(&_58$$34, &indexType, " KEY `", &indexName, "` (", &_56$$34, ")"); + zephir_get_strval(&indexSql, &_58$$34); + } else { + ZEPHIR_CALL_METHOD(&_60$$35, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_59$$35, this_ptr, "getcolumnlist", &_45, 54, &_60$$35); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_61$$35); + ZEPHIR_CONCAT_SVSVS(&_61$$35, "KEY `", &indexName, "` (", &_59$$35, ")"); + zephir_get_strval(&indexSql, &_61$$35); + } + } + zephir_array_append(&createLines, &indexSql, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 246); + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_ZVAL_NREF(_29$$13); - ZVAL_LONG(&_29$$13, 0); - zephir_update_property_zval(this_ptr, ZEND_STRL("currentRenderLevel"), &_29$$13); + ZEPHIR_INIT_NVAR(&index); } - _30 = fireEvents; - if (_30) { - _30 = Z_TYPE_P(&eventsManager) == IS_OBJECT; + ZEPHIR_OBS_VAR(&references); + if (zephir_array_isset_string_fetch(&references, &definition, SL("references"), 0)) { + zephir_is_iterable(&references, 0, "phalcon/Db/Dialect/Mysql.zep", 270); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&references), _62$$36) + { + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _62$$36); + ZEPHIR_CALL_METHOD(&_64$$37, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_66$$37, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_65$$37, this_ptr, "getcolumnlist", &_45, 54, &_66$$37); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_68$$37, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_69$$37, &reference, "getreferencedschema", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_67$$37, this_ptr, "preparetable", NULL, 0, &_68$$37, &_69$$37); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_71$$37, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_70$$37, this_ptr, "getcolumnlist", &_45, 54, &_71$$37); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_72$$37); + ZEPHIR_CONCAT_SVSVSSVSVS(&_72$$37, "CONSTRAINT `", &_64$$37, "` FOREIGN KEY (", &_65$$37, ")", " REFERENCES ", &_67$$37, " (", &_70$$37, ")"); + zephir_get_strval(&referenceSql, &_72$$37); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_73$$38); + ZEPHIR_CONCAT_SV(&_73$$38, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_73$$38); + } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_74$$39); + ZEPHIR_CONCAT_SV(&_74$$39, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_74$$39); + } + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 268); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_63$$36, &references, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_63$$36)) { + break; + } + ZEPHIR_CALL_METHOD(&reference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_75$$40, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_77$$40, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_76$$40, this_ptr, "getcolumnlist", &_45, 54, &_77$$40); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_79$$40, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_80$$40, &reference, "getreferencedschema", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_78$$40, this_ptr, "preparetable", NULL, 0, &_79$$40, &_80$$40); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_82$$40, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_81$$40, this_ptr, "getcolumnlist", &_45, 54, &_82$$40); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_83$$40); + ZEPHIR_CONCAT_SVSVSSVSVS(&_83$$40, "CONSTRAINT `", &_75$$40, "` FOREIGN KEY (", &_76$$40, ")", " REFERENCES ", &_78$$40, " (", &_81$$40, ")"); + zephir_get_strval(&referenceSql, &_83$$40); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_84$$41); + ZEPHIR_CONCAT_SV(&_84$$41, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_84$$41); + } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_85$$42); + ZEPHIR_CONCAT_SV(&_85$$42, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_85$$42); + } + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 268); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&reference); } - if (_30) { - ZEPHIR_INIT_VAR(&_31$$28); - ZVAL_STRING(&_31$$28, "view:afterRender"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_31$$28, this_ptr); + ZEPHIR_INIT_VAR(&_86); + zephir_fast_join_str(&_86, SL(",\n\t"), &createLines); + ZEPHIR_INIT_VAR(&_87); + ZEPHIR_CONCAT_VS(&_87, &_86, "\n)"); + zephir_concat_self(&sql, &_87); + if (zephir_array_isset_string(&definition, SL("options"))) { + ZEPHIR_CALL_METHOD(&_88$$43, this_ptr, "gettableoptions", NULL, 0, &definition); zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_89$$43); + ZEPHIR_CONCAT_SV(&_89$$43, " ", &_88$$43); + zephir_concat_self(&sql, &_89$$43); } - RETURN_MM_BOOL(1); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_View, getDirSeparator) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, createView) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *directory_param = NULL, _0, _1; - zval directory; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *viewName_param = NULL, *definition_param = NULL, *schemaName_param = NULL, viewSql, _0; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&directory); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&viewSql); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(directory) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(viewName) + Z_PARAM_ARRAY(definition) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &directory_param); - if (UNEXPECTED(Z_TYPE_P(directory_param) != IS_STRING && Z_TYPE_P(directory_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'directory' must be of the type string")); + zephir_fetch_params(1, 2, 1, &viewName_param, &definition_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(directory_param) == IS_STRING)) { - zephir_get_strval(&directory, directory_param); + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); } else { - ZEPHIR_INIT_VAR(&directory); + ZEPHIR_INIT_VAR(&viewName); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); } - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_STRING(&_1, "/"); - zephir_fast_trim(&_0, &directory, &_1, ZEPHIR_TRIM_RIGHT); - ZEPHIR_CONCAT_VS(return_value, &_0, "/"); + ZEPHIR_OBS_VAR(&viewSql); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&viewSql, &definition, SL("sql"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'sql' is required in the definition array", "phalcon/Db/Dialect/Mysql.zep", 291); + return; + } + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSV(return_value, "CREATE VIEW ", &_0, " AS ", &viewSql); RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Mvc_View(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeColumns) { - zval _0, _2, _4, _6, _8, _10, _12, _14, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8, _13$$9, _15$$10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_14); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_15$$10); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("viewParams"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("viewParams"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("viewsDirs"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("viewsDirs"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("templatesBefore"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("templatesBefore"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("templatesAfter"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("templatesAfter"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("registeredEngines"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("registeredEngines"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("params"), &_11$$8); - } - zephir_read_property_ex(&_12, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_12) == IS_NULL) { - ZEPHIR_INIT_VAR(&_13$$9); - array_init(&_13$$9); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("options"), &_13$$9); - } - zephir_read_property_ex(&_14, this_ptr, ZEND_STRL("disabledLevels"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_14) == IS_NULL) { - ZEPHIR_INIT_VAR(&_15$$10); - array_init(&_15$$10); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("disabledLevels"), &_15$$10); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_ViewBaseInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, ViewBaseInterface, phalcon, mvc_viewbaseinterface, phalcon_mvc_viewbaseinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, getContent); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, getParamsToView); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, getViewsDir); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, partial); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, setContent); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, setParamToView); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, setVar); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewBaseInterface, setViewsDir); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_ViewInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc, ViewInterface, phalcon, mvc_viewinterface, phalcon_mvc_viewinterface_method_entry); - - zend_class_implements(phalcon_mvc_viewinterface_ce, 1, phalcon_mvc_viewbaseinterface_ce); - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, cleanTemplateAfter); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, cleanTemplateBefore); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, disable); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, enable); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, finish); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getActionName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getActiveRenderPath); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getBasePath); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getControllerName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getLayout); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getLayoutsDir); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getMainView); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, getPartialsDir); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, isDisabled); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, pick); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, registerEngines); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, render); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, reset); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setBasePath); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setLayout); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setLayoutsDir); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setMainView); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setPartialsDir); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setRenderLevel); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setTemplateAfter); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, setTemplateBefore); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_ViewInterface, start); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Url_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc\\Url, Exception, phalcon, mvc_url_exception, zend_ce_exception, NULL, 0); - - return SUCCESS; -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Url_UrlInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Url, UrlInterface, phalcon, mvc_url_urlinterface, phalcon_mvc_url_urlinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, get); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, getBasePath); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, getBaseUri); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, setBasePath); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, setBaseUri); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Url_UrlInterface, path); - - - + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, _0; + zval table, schema; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); #endif - - - -static void phalcon_get_uri(zval *return_value, zval *path) -{ - int i, found = 0, mark = 0; - char *cursor, *str, ch; - - if (Z_TYPE_P(path) != IS_STRING) { - RETURN_EMPTY_STRING(); - } - - if (Z_STRLEN_P(path) > 0) { - cursor = Z_STRVAL_P(path) + Z_STRLEN_P(path) - 1; - for (i = Z_STRLEN_P(path); i > 0; i--) { - ch = *cursor; - if (ch == '/' || ch == '\\') { - found++; - if (found == 1) { - mark = i - 1; - } else { - str = emalloc(mark - i + 1); - memcpy(str, Z_STRVAL_P(path) + i, mark - i); - str[mark - i] = '\0'; - ZVAL_STRINGL(return_value, str, mark - i); - return; - } - } - cursor--; - } + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - - RETURN_EMPTY_STRING(); -} - -zval *phalcon_replace_marker(int named, zval *paths, zval *replacements, unsigned long *position, char *cursor, char *marker) -{ - unsigned int length = 0, variable_length, ch, j; - char *item = NULL, *cursor_var, *variable = NULL; - int not_valid = 0; - zval *zv, *tmp; - - if (named) { - length = cursor - marker - 1; - item = estrndup(marker + 1, length); - cursor_var = item; - marker = item; - for (j = 0; j < length; j++) { - ch = *cursor_var; - if (ch == '\0') { - not_valid = 1; - break; - } - if (j == 0 && !((ch >= 'a' && ch <='z') || (ch >= 'A' && ch <= 'Z'))){ - not_valid = 1; - break; - } - if ((ch >= 'a' && ch <='z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '-' || ch == '_' || ch == ':') { - if (ch == ':') { - variable_length = cursor_var - marker; - variable = estrndup(marker, variable_length); - break; - } - } else { - not_valid = 1; - break; - } - cursor_var++; - } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); } - - if (!not_valid) { - - if (zend_hash_index_exists(Z_ARRVAL_P(paths), *position)) { - if (named) { - if (variable) { - efree(item); - item = variable; - length = variable_length; - } - if (zend_hash_str_exists(Z_ARRVAL_P(replacements), item, length)) { - if ((zv = zend_hash_str_find(Z_ARRVAL_P(replacements), item, length)) != NULL) { - efree(item); - (*position)++; - return zv; - } - } - } else { - if ((zv = zend_hash_index_find(Z_ARRVAL_P(paths), *position)) != NULL) { - if (Z_TYPE_P(zv) == IS_STRING) { - if (zend_hash_str_exists(Z_ARRVAL_P(replacements), Z_STRVAL_P(zv), Z_STRLEN_P(zv))) { - if ((tmp = zend_hash_str_find(Z_ARRVAL_P(replacements), Z_STRVAL_P(zv), Z_STRLEN_P(zv))) != NULL) { - (*position)++; - return tmp; - } - } - } - } - } - } - - (*position)++; + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - if (item) { - efree(item); - } - return NULL; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, "SHOW FULL COLUMNS FROM ", &_0); + RETURN_MM(); } -static void phalcon_replace_paths(zval *return_value, zval *pattern, zval *paths, zval *replacements) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeIndexes) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, _0; + zval table, schema; + zval *this_ptr = getThis(); - char *cursor, *marker = NULL; - unsigned int bracket_count = 0, parentheses_count = 0, intermediate = 0; - unsigned char ch; - smart_str route_str = {0}; - zend_ulong position = 1; - int i; - zval *replace, replace_copy; - int use_copy, looking_placeholder = 0; - - if (Z_TYPE_P(pattern) != IS_STRING || Z_TYPE_P(replacements) != IS_ARRAY || Z_TYPE_P(paths) != IS_ARRAY) { - ZVAL_NULL(return_value); - php_error_docref(NULL, E_WARNING, "Invalid arguments supplied for phalcon_replace_paths()"); - return; - } - - if (Z_STRLEN_P(pattern) <= 0) { - ZVAL_FALSE(return_value); - return; - } + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&_0); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif - cursor = Z_STRVAL_P(pattern); - if (*cursor == '/') { - ++cursor; - i = 1; - } - else { - i = 0; - } - if (!zend_hash_num_elements(Z_ARRVAL_P(paths))) { - ZVAL_STRINGL(return_value, Z_STRVAL_P(pattern) + i, Z_STRLEN_P(pattern) - i); - return; + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - - for (; i < Z_STRLEN_P(pattern); ++i) { - - ch = *cursor; - if (ch == '\0') { - break; - } - - if (parentheses_count == 0 && !looking_placeholder) { - if (ch == '{') { - if (bracket_count == 0) { - marker = cursor; - intermediate = 0; - } - bracket_count++; - } else { - if (ch == '}') { - bracket_count--; - if (intermediate > 0) { - if (bracket_count == 0) { - replace = phalcon_replace_marker(1, paths, replacements, &position, cursor, marker); - if (replace) { - use_copy = 0; - if (Z_TYPE_P(replace) != IS_STRING) { - use_copy = zend_make_printable_zval(replace, &replace_copy); - if (use_copy) { - replace = &replace_copy; - } - } - smart_str_appendl(&route_str, Z_STRVAL_P(replace), Z_STRLEN_P(replace)); - if (use_copy) { - zval_dtor(&replace_copy); - } - } - cursor++; - continue; - } - } - } - } - } - - if (bracket_count == 0 && !looking_placeholder) { - if (ch == '(') { - if (parentheses_count == 0) { - marker = cursor; - intermediate = 0; - } - parentheses_count++; - } else { - if (ch == ')') { - parentheses_count--; - if (intermediate > 0) { - if (parentheses_count == 0) { - replace = phalcon_replace_marker(0, paths, replacements, &position, cursor, marker); - if (replace) { - use_copy = 0; - if (Z_TYPE_P(replace) != IS_STRING) { - use_copy = zend_make_printable_zval(replace, &replace_copy); - if (use_copy) { - replace = &replace_copy; - } - } - smart_str_appendl(&route_str, Z_STRVAL_P(replace), Z_STRLEN_P(replace)); - if (use_copy) { - zval_dtor(&replace_copy); - } - } - cursor++; - continue; - } - } - } - } - } - - if (bracket_count == 0 && parentheses_count == 0) { - if (looking_placeholder) { - if (intermediate > 0) { - if (ch < 'a' || ch > 'z' || i == (Z_STRLEN_P(pattern) - 1)) { - replace = phalcon_replace_marker(0, paths, replacements, &position, cursor, marker); - if (replace) { - use_copy = 0; - if (Z_TYPE_P(replace) != IS_STRING) { - use_copy = zend_make_printable_zval(replace, &replace_copy); - if (use_copy) { - replace = &replace_copy; - } - } - smart_str_appendl(&route_str, Z_STRVAL_P(replace), Z_STRLEN_P(replace)); - if (use_copy) { - zval_dtor(&replace_copy); - } - } - looking_placeholder = 0; - continue; - } - } - } else { - if (ch == ':') { - looking_placeholder = 1; - marker = cursor; - intermediate = 0; - } - } - } - - if (bracket_count > 0 || parentheses_count > 0 || looking_placeholder) { - intermediate++; - } else { - smart_str_appendc(&route_str, ch); - } - - cursor++; + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); } - smart_str_0(&route_str); - - if (route_str.s) { - RETURN_STR(route_str.s); + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); } else { - smart_str_free(&route_str); - RETURN_EMPTY_STRING(); + zephir_get_strval(&schema, schema_param); } -} - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Controller_BindModelInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Controller, BindModelInterface, phalcon, mvc_controller_bindmodelinterface, phalcon_mvc_controller_bindmodelinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Controller_BindModelInterface, getModelName); - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Behavior) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Behavior, phalcon, mvc_model_behavior, phalcon_mvc_model_behavior_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_null(phalcon_mvc_model_behavior_ce, SL("options"), ZEND_ACC_PROTECTED); - zend_class_implements(phalcon_mvc_model_behavior_ce, 1, phalcon_mvc_model_behaviorinterface_ce); - return SUCCESS; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, "SHOW INDEXES FROM ", &_0); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Behavior, __construct) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, describeReferences) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *options_param = NULL; - zval options; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema, sql, _0$$3, _1$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &options_param); - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&sql); + ZVAL_STRING(&sql, "SELECT DISTINCT KCU.TABLE_NAME, KCU.COLUMN_NAME, KCU.CONSTRAINT_NAME, KCU.REFERENCED_TABLE_SCHEMA, KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = KCU.CONSTRAINT_SCHEMA WHERE KCU.REFERENCED_TABLE_NAME IS NOT NULL AND "); + if (!(ZEPHIR_IS_EMPTY(&schema))) { + ZEPHIR_INIT_VAR(&_0$$3); + ZEPHIR_CONCAT_SVSVS(&_0$$3, "KCU.CONSTRAINT_SCHEMA = '", &schema, "' AND KCU.TABLE_NAME = '", &table, "'"); + zephir_concat_self(&sql, &_0$$3); + } else { + ZEPHIR_INIT_VAR(&_1$$4); + ZEPHIR_CONCAT_SVS(&_1$$4, "KCU.CONSTRAINT_SCHEMA = DATABASE() AND KCU.TABLE_NAME = '", &table, "'"); + zephir_concat_self(&sql, &_1$$4); + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Behavior, getOptions) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *eventName_param = NULL, options, eventOptions, _0; - zval eventName; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *columnName_param = NULL, _0; + zval tableName, schemaName, columnName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventName); - ZVAL_UNDEF(&options); - ZVAL_UNDEF(&eventOptions); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&columnName); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(eventName) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(columnName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &eventName_param); - if (!eventName_param) { - ZEPHIR_INIT_VAR(&eventName); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &columnName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&eventName); + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(columnName_param) != IS_STRING && Z_TYPE_P(columnName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'columnName' must be of the type string")); + RETURN_MM_NULL(); } + if (EXPECTED(Z_TYPE_P(columnName_param) == IS_STRING)) { + zephir_get_strval(&columnName, columnName_param); + } else { + ZEPHIR_INIT_VAR(&columnName); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&options, &_0); - if (!ZEPHIR_IS_NULL(&eventName)) { - if (!(zephir_array_isset_fetch(&eventOptions, &options, &eventName, 1))) { - RETURN_MM_NULL(); - } - RETURN_CTOR(&eventOptions); - } - RETURN_CCTOR(&options); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP COLUMN `", &columnName, "`"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Behavior, missingMethod) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval arguments; - zval method; - zval *model, model_sub, *method_param = NULL, *arguments_param = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *referenceName_param = NULL, _0; + zval tableName, schemaName, referenceName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&arguments); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&referenceName); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(method) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(arguments) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(referenceName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &model, &method_param, &arguments_param); - zephir_get_strval(&method, method_param); - if (!arguments_param) { - ZEPHIR_INIT_VAR(&arguments); - array_init(&arguments); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &referenceName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - zephir_get_arrval(&arguments, arguments_param); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(referenceName_param) != IS_STRING && Z_TYPE_P(referenceName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(referenceName_param) == IS_STRING)) { + zephir_get_strval(&referenceName, referenceName_param); + } else { + ZEPHIR_INIT_VAR(&referenceName); } - RETURN_MM_NULL(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP FOREIGN KEY `", &referenceName, "`"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Behavior, mustTakeAction) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropIndex) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *eventName_param = NULL, _0; - zval eventName; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *indexName_param = NULL, _0; + zval tableName, schemaName, indexName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventName); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexName); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(eventName) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(indexName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &eventName_param); - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &indexName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&eventName); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(indexName_param) != IS_STRING && Z_TYPE_P(indexName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'indexName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(indexName_param) == IS_STRING)) { + zephir_get_strval(&indexName, indexName_param); + } else { + ZEPHIR_INIT_VAR(&indexName); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("options"), PH_NOISY_CC | PH_READONLY); - RETURN_MM_BOOL(zephir_array_isset(&_0, &eventName)); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP INDEX `", &indexName, "`"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Behavior, notify) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *type_param = NULL, *model, model_sub; - zval type; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, _0; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(type) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &type_param, &model); - zephir_get_strval(&type, type_param); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - RETURN_MM_NULL(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "ALTER TABLE ", &_0, " DROP PRIMARY KEY"); + RETURN_MM(); } +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropTable) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool ifExists; + zval *tableName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, table; + zval tableName, schemaName; + zval *this_ptr = getThis(); - - -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &tableName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (!ifExists_param) { + ifExists = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); + } + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE IF EXISTS ", &table); + RETURN_MM(); + } + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE ", &table); + RETURN_MM(); +} -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_BehaviorInterface) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, dropView) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, BehaviorInterface, phalcon, mvc_model_behaviorinterface, phalcon_mvc_model_behaviorinterface_method_entry); + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool ifExists; + zval *viewName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, view; + zval viewName, schemaName; + zval *this_ptr = getThis(); - return SUCCESS; -} + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&view); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) + ZEND_PARSE_PARAMETERS_END(); +#endif -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BehaviorInterface, missingMethod); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BehaviorInterface, notify); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &viewName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (!ifExists_param) { + ifExists = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); + } -#ifdef HAVE_CONFIG_H -#endif + ZEPHIR_CALL_METHOD(&view, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); + zephir_check_call_status(); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW IF EXISTS ", &view); + RETURN_MM(); + } + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW ", &view); + RETURN_MM(); +} +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, getColumnDefinition) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_41 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, columnType, columnSql, typeValues, _0$$3, _1$$3, _2$$3, _3$$5, _4$$11, _5$$15, _6$$17, _7$$18, _8$$18, _9$$18, _10$$20, _11$$20, _12$$20, _13$$22, _14$$24, _15$$24, _16$$24, _17$$26, _18$$26, _19$$26, _20$$36, _21$$36, _22$$36, _23$$40, _24$$40, _25$$40, _26$$44, _27$$46, _28$$47, _29$$49, _30$$52, _31$$52, _32$$52, _33$$56, _34$$59, _35$$59, _36$$59, value$$61, valueSql$$61, *_37$$61, _38$$61, _46$$61, _47$$61, _48$$61, _49$$61, _39$$62, _40$$62, _42$$62, _43$$63, _44$$63, _45$$63, _50$$64, _51$$64, _52$$64; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&columnSql); + ZVAL_UNDEF(&typeValues); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_4$$11); + ZVAL_UNDEF(&_5$$15); + ZVAL_UNDEF(&_6$$17); + ZVAL_UNDEF(&_7$$18); + ZVAL_UNDEF(&_8$$18); + ZVAL_UNDEF(&_9$$18); + ZVAL_UNDEF(&_10$$20); + ZVAL_UNDEF(&_11$$20); + ZVAL_UNDEF(&_12$$20); + ZVAL_UNDEF(&_13$$22); + ZVAL_UNDEF(&_14$$24); + ZVAL_UNDEF(&_15$$24); + ZVAL_UNDEF(&_16$$24); + ZVAL_UNDEF(&_17$$26); + ZVAL_UNDEF(&_18$$26); + ZVAL_UNDEF(&_19$$26); + ZVAL_UNDEF(&_20$$36); + ZVAL_UNDEF(&_21$$36); + ZVAL_UNDEF(&_22$$36); + ZVAL_UNDEF(&_23$$40); + ZVAL_UNDEF(&_24$$40); + ZVAL_UNDEF(&_25$$40); + ZVAL_UNDEF(&_26$$44); + ZVAL_UNDEF(&_27$$46); + ZVAL_UNDEF(&_28$$47); + ZVAL_UNDEF(&_29$$49); + ZVAL_UNDEF(&_30$$52); + ZVAL_UNDEF(&_31$$52); + ZVAL_UNDEF(&_32$$52); + ZVAL_UNDEF(&_33$$56); + ZVAL_UNDEF(&_34$$59); + ZVAL_UNDEF(&_35$$59); + ZVAL_UNDEF(&_36$$59); + ZVAL_UNDEF(&value$$61); + ZVAL_UNDEF(&valueSql$$61); + ZVAL_UNDEF(&_38$$61); + ZVAL_UNDEF(&_46$$61); + ZVAL_UNDEF(&_47$$61); + ZVAL_UNDEF(&_48$$61); + ZVAL_UNDEF(&_49$$61); + ZVAL_UNDEF(&_39$$62); + ZVAL_UNDEF(&_40$$62); + ZVAL_UNDEF(&_42$$62); + ZVAL_UNDEF(&_43$$63); + ZVAL_UNDEF(&_44$$63); + ZVAL_UNDEF(&_45$$63); + ZVAL_UNDEF(&_50$$64); + ZVAL_UNDEF(&_51$$64); + ZVAL_UNDEF(&_52$$64); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &column); -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Binder) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Binder, phalcon, mvc_model_binder, phalcon_mvc_model_binder_method_entry, 0); - zend_declare_property_null(phalcon_mvc_model_binder_ce, SL("boundModels"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_binder_ce, SL("cache"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_binder_ce, SL("internalCache"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_binder_ce, SL("originalValues"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_binder_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_Binder; + ZEPHIR_CALL_METHOD(&columnSql, this_ptr, "checkcolumntypesql", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnType, this_ptr, "checkcolumntype", NULL, 0, column); + zephir_check_call_status(); + do { + if (ZEPHIR_IS_LONG(&columnType, 14)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BIGINT")); + } + ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_1$$3, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2$$3); + ZEPHIR_CONCAT_VV(&_2$$3, &_0$$3, &_1$$3); + zephir_concat_self(&columnSql, &_2$$3); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 19)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BIT")); + } + ZEPHIR_CALL_METHOD(&_3$$5, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_3$$5); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 11)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 8)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYINT(1)")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 5)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("CHAR")); + } + ZEPHIR_CALL_METHOD(&_4$$11, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_4$$11); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 1)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DATE")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 4)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DATETIME")); + } + ZEPHIR_CALL_METHOD(&_5$$15, column, "getsize", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_GT_LONG(&_5$$15, 0)) { + ZEPHIR_CALL_METHOD(&_6$$17, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_6$$17); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 3)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DECIMAL")); + } + ZEPHIR_CALL_METHOD(&_7$$18, this_ptr, "getcolumnsizeandscale", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_8$$18, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_9$$18); + ZEPHIR_CONCAT_VV(&_9$$18, &_7$$18, &_8$$18); + zephir_concat_self(&columnSql, &_9$$18); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 9)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DOUBLE")); + } + ZEPHIR_CALL_METHOD(&_10$$20, this_ptr, "checkcolumnsizeandscale", NULL, 213, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_11$$20, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_12$$20); + ZEPHIR_CONCAT_VV(&_12$$20, &_10$$20, &_11$$20); + zephir_concat_self(&columnSql, &_12$$20); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 18)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("ENUM")); + } + ZEPHIR_CALL_METHOD(&_13$$22, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_13$$22); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 7)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("FLOAT")); + } + ZEPHIR_CALL_METHOD(&_14$$24, this_ptr, "checkcolumnsizeandscale", NULL, 213, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_15$$24, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_16$$24); + ZEPHIR_CONCAT_VV(&_16$$24, &_14$$24, &_15$$24); + zephir_concat_self(&columnSql, &_16$$24); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 0)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("INT")); + } + ZEPHIR_CALL_METHOD(&_17$$26, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_18$$26, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_19$$26); + ZEPHIR_CONCAT_VV(&_19$$26, &_17$$26, &_18$$26); + zephir_concat_self(&columnSql, &_19$$26); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 15)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("JSON")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 13)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("LONGBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 24)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("LONGTEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 12)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("MEDIUMBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 21)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("MEDIUMINT")); + } + ZEPHIR_CALL_METHOD(&_20$$36, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_21$$36, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_22$$36); + ZEPHIR_CONCAT_VV(&_22$$36, &_20$$36, &_21$$36); + zephir_concat_self(&columnSql, &_22$$36); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 23)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("MEDIUMTEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 22)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("SMALLINT")); + } + ZEPHIR_CALL_METHOD(&_23$$40, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_24$$40, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_25$$40); + ZEPHIR_CONCAT_VV(&_25$$40, &_23$$40, &_24$$40); + zephir_concat_self(&columnSql, &_25$$40); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 6)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 20)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TIME")); + } + ZEPHIR_CALL_METHOD(&_26$$44, column, "getsize", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_GT_LONG(&_26$$44, 0)) { + ZEPHIR_CALL_METHOD(&_27$$46, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_27$$46); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 17)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TIMESTAMP")); + } + ZEPHIR_CALL_METHOD(&_28$$47, column, "getsize", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_GT_LONG(&_28$$47, 0)) { + ZEPHIR_CALL_METHOD(&_29$$49, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_29$$49); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 10)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 26)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYINT")); + } + ZEPHIR_CALL_METHOD(&_30$$52, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_31$$52, this_ptr, "checkcolumnunsigned", NULL, 212, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_32$$52); + ZEPHIR_CONCAT_VV(&_32$$52, &_30$$52, &_31$$52); + zephir_concat_self(&columnSql, &_32$$52); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 25)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYTEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 2)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("VARCHAR")); + } + ZEPHIR_CALL_METHOD(&_33$$56, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_33$$56); + break; + } + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&columnSql))) { + ZEPHIR_INIT_VAR(&_34$$59); + object_init_ex(&_34$$59, phalcon_db_exception_ce); + ZEPHIR_CALL_METHOD(&_35$$59, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_36$$59); + ZEPHIR_CONCAT_SV(&_36$$59, "Unrecognized MySQL data type at column ", &_35$$59); + ZEPHIR_CALL_METHOD(NULL, &_34$$59, "__construct", NULL, 29, &_36$$59); + zephir_check_call_status(); + zephir_throw_exception_debug(&_34$$59, "phalcon/Db/Dialect/Mysql.zep", 635); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&typeValues, column, "gettypevalues", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&typeValues))) { + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&valueSql$$61); + ZVAL_STRING(&valueSql$$61, ""); + zephir_is_iterable(&typeValues, 0, "phalcon/Db/Dialect/Mysql.zep", 649); + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&typeValues), _37$$61) + { + ZEPHIR_INIT_NVAR(&value$$61); + ZVAL_COPY(&value$$61, _37$$61); + ZEPHIR_INIT_NVAR(&_39$$62); + ZVAL_STRING(&_39$$62, "\""); + ZEPHIR_CALL_FUNCTION(&_40$$62, "addcslashes", &_41, 211, &value$$61, &_39$$62); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_42$$62); + ZEPHIR_CONCAT_SVS(&_42$$62, "\"", &_40$$62, "\", "); + zephir_concat_self(&valueSql$$61, &_42$$62); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &typeValues, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_38$$61, &typeValues, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_38$$61)) { + break; + } + ZEPHIR_CALL_METHOD(&value$$61, &typeValues, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_43$$63); + ZVAL_STRING(&_43$$63, "\""); + ZEPHIR_CALL_FUNCTION(&_44$$63, "addcslashes", &_41, 211, &value$$61, &_43$$63); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_45$$63); + ZEPHIR_CONCAT_SVS(&_45$$63, "\"", &_44$$63, "\", "); + zephir_concat_self(&valueSql$$61, &_45$$63); + ZEPHIR_CALL_METHOD(NULL, &typeValues, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value$$61); + ZVAL_LONG(&_46$$61, 0); + ZVAL_LONG(&_47$$61, -2); + ZEPHIR_INIT_VAR(&_48$$61); + zephir_substr(&_48$$61, &valueSql$$61, 0 , -2 , 0); + ZEPHIR_INIT_VAR(&_49$$61); + ZEPHIR_CONCAT_SVS(&_49$$61, "(", &_48$$61, ")"); + zephir_concat_self(&columnSql, &_49$$61); + } else { + ZEPHIR_INIT_VAR(&_50$$64); + ZVAL_STRING(&_50$$64, "\""); + ZEPHIR_CALL_FUNCTION(&_51$$64, "addcslashes", &_41, 211, &typeValues, &_50$$64); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_52$$64); + ZEPHIR_CONCAT_SVS(&_52$$64, "(\"", &_51$$64, "\")"); + zephir_concat_self(&columnSql, &_52$$64); + } + } + } while(0); - zend_class_implements(phalcon_mvc_model_binder_ce, 1, phalcon_mvc_model_binderinterface_ce); - return SUCCESS; + RETURN_CCTOR(&columnSql); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, getBoundModels) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, getForeignKeyChecks) { zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "boundModels"); + RETURN_STRING("SELECT @@foreign_key_checks"); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, getOriginalValues) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, listTables) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); + ZVAL_UNDEF(&schemaName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "originalValues"); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + + + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CONCAT_SVS(return_value, "SHOW TABLES FROM `", &schemaName, "`"); + RETURN_MM(); + } + RETURN_MM_STRING("SHOW TABLES"); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, __construct) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, listViews) { - zval *cache = NULL, cache_sub, __$null; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cache_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(cache, phalcon_cache_adapter_adapterinterface_ce) + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(0, 1, &cache); - if (!cache) { - cache = &cache_sub; - cache = &__$null; + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } } - zephir_update_property_zval(this_ptr, ZEND_STRL("cache"), cache); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CONCAT_SVS(return_value, "SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = '", &schemaName, "' ORDER BY view_name"); + RETURN_MM(); + } + RETURN_MM_STRING("SELECT `TABLE_NAME` AS view_name FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = DATABASE() ORDER BY view_name"); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, bindToHandler) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, modifyColumn) { - zend_string *_6$$4; - zend_ulong _5$$4; - zend_bool _1; + zend_bool _11$$8, _12$$8, _13$$8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_7 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval cacheKey, methodName; - zval params; - zval *handler, handler_sub, *params_param = NULL, *cacheKey_param = NULL, *methodName_param = NULL, paramKey, className, boundModel, paramsCache, paramValue, _0, _2, *_3$$4, _4$$4; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, *currentColumn = NULL, currentColumn_sub, __$null, afterPosition, defaultValue, upperDefaultValue, columnDefinition, _0, _1, _2, _3, _9, _10, _19, _20, _23, _4$$4, _5$$4, _6$$4, _7$$5, _8$$5, _14$$8, _15$$9, _16$$10, _17$$10, _18$$10, _21$$12, _22$$12, _24$$15; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(¶mKey); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&boundModel); - ZVAL_UNDEF(¶msCache); - ZVAL_UNDEF(¶mValue); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(¤tColumn_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&afterPosition); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&upperDefaultValue); + ZVAL_UNDEF(&columnDefinition); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_19); + ZVAL_UNDEF(&_20); + ZVAL_UNDEF(&_23); ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(&cacheKey); - ZVAL_UNDEF(&methodName); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_14$$8); + ZVAL_UNDEF(&_15$$9); + ZVAL_UNDEF(&_16$$10); + ZVAL_UNDEF(&_17$$10); + ZVAL_UNDEF(&_18$$10); + ZVAL_UNDEF(&_21$$12); + ZVAL_UNDEF(&_22$$12); + ZVAL_UNDEF(&_24$$15); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_OBJECT(handler) - Z_PARAM_ARRAY(params) - Z_PARAM_STR(cacheKey) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(methodName) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(currentColumn, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &handler, ¶ms_param, &cacheKey_param, &methodName_param); - zephir_get_arrval(¶ms, params_param); - zephir_get_strval(&cacheKey, cacheKey_param); - if (!methodName_param) { - ZEPHIR_INIT_VAR(&methodName); + zephir_fetch_params(1, 3, 1, &tableName_param, &schemaName_param, &column, ¤tColumn); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - if (UNEXPECTED(Z_TYPE_P(methodName_param) != IS_STRING && Z_TYPE_P(methodName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'methodName' must be of the type string")); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(methodName_param) == IS_STRING)) { - zephir_get_strval(&methodName, methodName_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&methodName); + ZEPHIR_INIT_VAR(&schemaName); } + if (!currentColumn) { + currentColumn = ¤tColumn_sub; + ZEPHIR_CPY_WRT(currentColumn, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(currentColumn); } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("originalValues"), &_0); - _1 = !((zephir_is_instance_of(handler, SL("Closure")))); - if (_1) { - _1 = ZEPHIR_IS_NULL(&methodName); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SV(&_1, "ALTER TABLE ", &_0); + zephir_get_strval(&sql, &_1); + if (Z_TYPE_P(currentColumn) != IS_OBJECT) { + ZEPHIR_CPY_WRT(currentColumn, column); } - if (UNEXPECTED(_1)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "You must specify methodName for handler or pass Closure as handler", "phalcon/Mvc/Model/Binder.zep", 75); - return; + ZEPHIR_CALL_METHOD(&_2, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, currentColumn, "getname", NULL, 0); + zephir_check_call_status(); + if (!ZEPHIR_IS_IDENTICAL(&_2, &_3)) { + ZEPHIR_CALL_METHOD(&_4$$4, currentColumn, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$4, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6$$4); + ZEPHIR_CONCAT_SVSVSV(&_6$$4, " CHANGE COLUMN `", &_4$$4, "` `", &_5$$4, "` ", &columnDefinition); + zephir_concat_self(&sql, &_6$$4); + } else { + ZEPHIR_CALL_METHOD(&_7$$5, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_8$$5); + ZEPHIR_CONCAT_SVSV(&_8$$5, " MODIFY `", &_7$$5, "` ", &columnDefinition); + zephir_concat_self(&sql, &_8$$5); } - ZEPHIR_INIT_VAR(&_2); - array_init(&_2); - zephir_update_property_zval(this_ptr, ZEND_STRL("boundModels"), &_2); - ZEPHIR_CALL_METHOD(¶msCache, this_ptr, "getparamsfromcache", NULL, 0, &cacheKey); + ZEPHIR_CALL_METHOD(&_9, column, "isnotnull", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(¶msCache) == IS_ARRAY) { - zephir_is_iterable(¶msCache, 0, "phalcon/Mvc/Model/Binder.zep", 90); - if (Z_TYPE_P(¶msCache) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(¶msCache), _5$$4, _6$$4, _3$$4) - { - ZEPHIR_INIT_NVAR(¶mKey); - if (_6$$4 != NULL) { - ZVAL_STR_COPY(¶mKey, _6$$4); - } else { - ZVAL_LONG(¶mKey, _5$$4); - } - ZEPHIR_INIT_NVAR(&className); - ZVAL_COPY(&className, _3$$4); - ZEPHIR_OBS_NVAR(¶mValue); - zephir_array_fetch(¶mValue, ¶ms, ¶mKey, PH_NOISY, "phalcon/Mvc/Model/Binder.zep", 83); - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_7, 0, ¶mValue, &className); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("originalValues"), ¶mKey, ¶mValue); - zephir_array_update_zval(¶ms, ¶mKey, &boundModel, PH_COPY | PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("boundModels"), ¶mKey, &boundModel); - } ZEND_HASH_FOREACH_END(); + if (zephir_is_true(&_9)) { + zephir_concat_self_str(&sql, " NOT NULL", sizeof(" NOT NULL") - 1); + } else { + zephir_concat_self_str(&sql, " NULL", sizeof(" NULL") - 1); + } + ZEPHIR_CALL_METHOD(&_10, column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_10)) { + ZEPHIR_CALL_METHOD(&defaultValue, column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&upperDefaultValue); + zephir_fast_strtoupper(&upperDefaultValue, &defaultValue); + _11$$8 = zephir_memnstr_str(&upperDefaultValue, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Mysql.zep", 731); + if (!(_11$$8)) { + _11$$8 = zephir_memnstr_str(&upperDefaultValue, SL("NULL"), "phalcon/Db/Dialect/Mysql.zep", 731); + } + _12$$8 = _11$$8; + if (!(_12$$8)) { + _12$$8 = Z_TYPE_P(&defaultValue) == IS_LONG; + } + _13$$8 = _12$$8; + if (!(_13$$8)) { + ZEPHIR_CALL_FUNCTION(&_14$$8, "is_float", NULL, 210, &defaultValue); + zephir_check_call_status(); + _13$$8 = zephir_is_true(&_14$$8); + } + if (_13$$8) { + ZEPHIR_INIT_VAR(&_15$$9); + ZEPHIR_CONCAT_SV(&_15$$9, " DEFAULT ", &defaultValue); + zephir_concat_self(&sql, &_15$$9); } else { - ZEPHIR_CALL_METHOD(NULL, ¶msCache, "rewind", NULL, 0); + ZEPHIR_INIT_VAR(&_16$$10); + ZVAL_STRING(&_16$$10, "\""); + ZEPHIR_CALL_FUNCTION(&_17$$10, "addcslashes", NULL, 211, &defaultValue, &_16$$10); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_4$$4, ¶msCache, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_4$$4)) { - break; - } - ZEPHIR_CALL_METHOD(¶mKey, ¶msCache, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&className, ¶msCache, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(¶mValue); - zephir_array_fetch(¶mValue, ¶ms, ¶mKey, PH_NOISY, "phalcon/Mvc/Model/Binder.zep", 83); - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_7, 0, ¶mValue, &className); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("originalValues"), ¶mKey, ¶mValue); - zephir_array_update_zval(¶ms, ¶mKey, &boundModel, PH_COPY | PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("boundModels"), ¶mKey, &boundModel); - ZEPHIR_CALL_METHOD(NULL, ¶msCache, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_INIT_VAR(&_18$$10); + ZEPHIR_CONCAT_SVS(&_18$$10, " DEFAULT \"", &_17$$10, "\""); + zephir_concat_self(&sql, &_18$$10); } - ZEPHIR_INIT_NVAR(&className); - ZEPHIR_INIT_NVAR(¶mKey); - RETURN_CTOR(¶ms); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getparamsfromreflection", NULL, 0, handler, ¶ms, &cacheKey, &methodName); + ZEPHIR_CALL_METHOD(&_19, column, "isautoincrement", NULL, 0); zephir_check_call_status(); - RETURN_MM(); + if (zephir_is_true(&_19)) { + zephir_concat_self_str(&sql, " AUTO_INCREMENT", sizeof(" AUTO_INCREMENT") - 1); + } + ZEPHIR_CALL_METHOD(&_20, column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_20)) { + ZEPHIR_CALL_METHOD(&_21$$12, column, "getcomment", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_22$$12); + ZEPHIR_CONCAT_SVS(&_22$$12, " COMMENT '", &_21$$12, "'"); + zephir_concat_self(&sql, &_22$$12); + } + ZEPHIR_CALL_METHOD(&_23, column, "isfirst", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_23)) { + zephir_concat_self_str(&sql, " FIRST", sizeof(" FIRST") - 1); + } else { + ZEPHIR_CALL_METHOD(&afterPosition, column, "getafterposition", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&afterPosition)) { + ZEPHIR_INIT_VAR(&_24$$15); + ZEPHIR_CONCAT_SVS(&_24$$15, " AFTER `", &afterPosition, "`"); + zephir_concat_self(&sql, &_24$$15); + } + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, findBoundModel) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, sharedLock) { - zend_class_entry *_0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval className; - zval *paramValue, paramValue_sub, *className_param = NULL; + zval *sqlQuery_param = NULL; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶mValue_sub); - ZVAL_UNDEF(&className); + ZVAL_UNDEF(&sqlQuery); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ZVAL(paramValue) - Z_PARAM_STR(className) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, ¶mValue, &className_param); - zephir_get_strval(&className, className_param); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } - _0 = zephir_fetch_class(&className); - ZEPHIR_RETURN_CALL_CE_STATIC(_0, "findfirst", NULL, 0, paramValue); - zephir_check_call_status(); + ZEPHIR_CONCAT_VS(return_value, &sqlQuery, " LOCK IN SHARE MODE"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, getCache) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, tableExists) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName; zval *this_ptr = getThis(); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "cache"); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + + + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME`= '", &tableName, "' AND `TABLE_SCHEMA` = '", &schemaName, "'"); + RETURN_MM(); + } + ZEPHIR_CONCAT_SVS(return_value, "SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_NAME` = '", &tableName, "' AND `TABLE_SCHEMA` = DATABASE()"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Binder, getParamsFromCache) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, tableOptions) { - zend_bool _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *cacheKey_param = NULL, cache, internalParams, _0, _1, _3; - zval cacheKey; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cacheKey); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&internalParams); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&sql); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(cacheKey) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cacheKey_param); - zephir_get_strval(&cacheKey, cacheKey_param); - - - ZEPHIR_OBS_VAR(&internalParams); - zephir_read_property(&_0, this_ptr, ZEND_STRL("internalCache"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&internalParams, &_0, &cacheKey, 0)) { - RETURN_CCTOR(&internalParams); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - zephir_read_property(&_1, this_ptr, ZEND_STRL("cache"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cache, &_1); - _2 = Z_TYPE_P(&cache) == IS_NULL; - if (!(_2)) { - ZEPHIR_CALL_METHOD(&_3, &cache, "has", NULL, 0, &cacheKey); - zephir_check_call_status(); - _2 = !zephir_is_true(&_3); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); } - if (_2) { - RETURN_MM_NULL(); + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - ZEPHIR_CALL_METHOD(&internalParams, &cache, "get", NULL, 0, &cacheKey); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("internalCache"), &cacheKey, &internalParams); - RETURN_CCTOR(&internalParams); -} -static PHP_METHOD(Phalcon_Mvc_Model_Binder, getParamsFromReflection) -{ - zend_class_entry *_9$$10, *_17$$24; - zend_string *_4; - zend_ulong _3; + + ZEPHIR_INIT_VAR(&sql); + ZVAL_STRING(&sql, "SELECT TABLES.TABLE_TYPE AS table_type,TABLES.AUTO_INCREMENT AS auto_increment,TABLES.ENGINE AS engine,TABLES.TABLE_COLLATION AS table_collation FROM INFORMATION_SCHEMA.TABLES WHERE "); + if (!(ZEPHIR_IS_EMPTY(&schema))) { + ZEPHIR_CONCAT_VSVSVS(return_value, &sql, "TABLES.TABLE_SCHEMA = '", &schema, "' AND TABLES.TABLE_NAME = '", &table, "'"); + RETURN_MM(); + } + ZEPHIR_CONCAT_VSVS(return_value, &sql, "TABLES.TABLE_SCHEMA = DATABASE() AND TABLES.TABLE_NAME = '", &table, "'"); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, truncateTable) +{ zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL, *_12 = NULL, *_13 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval cacheKey, methodName; - zval params, paramsCache; - zval *handler, handler_sub, *params_param = NULL, *cacheKey_param = NULL, *methodName_param = NULL, methodParams, reflection, paramKey, methodParam, className, realClasses, boundModel, cache, handlerClass, reflectionClass, paramsKeys, paramValue, _0, *_1, _2, _5$$7, _6$$5, _7$$5, _10$$14, _11$$14, _14$$21, _15$$19, _16$$19, _18$$28, _19$$28; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName, table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&handler_sub); - ZVAL_UNDEF(&methodParams); - ZVAL_UNDEF(&reflection); - ZVAL_UNDEF(¶mKey); - ZVAL_UNDEF(&methodParam); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&realClasses); - ZVAL_UNDEF(&boundModel); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&handlerClass); - ZVAL_UNDEF(&reflectionClass); - ZVAL_UNDEF(¶msKeys); - ZVAL_UNDEF(¶mValue); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_5$$7); - ZVAL_UNDEF(&_6$$5); - ZVAL_UNDEF(&_7$$5); - ZVAL_UNDEF(&_10$$14); - ZVAL_UNDEF(&_11$$14); - ZVAL_UNDEF(&_14$$21); - ZVAL_UNDEF(&_15$$19); - ZVAL_UNDEF(&_16$$19); - ZVAL_UNDEF(&_18$$28); - ZVAL_UNDEF(&_19$$28); - ZVAL_UNDEF(¶ms); - ZVAL_UNDEF(¶msCache); - ZVAL_UNDEF(&cacheKey); - ZVAL_UNDEF(&methodName); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_OBJECT(handler) - Z_PARAM_ARRAY(params) - Z_PARAM_STR(cacheKey) - Z_PARAM_STR(methodName) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &handler, ¶ms_param, &cacheKey_param, &methodName_param); - zephir_get_arrval(¶ms, params_param); - zephir_get_strval(&cacheKey, cacheKey_param); - if (UNEXPECTED(Z_TYPE_P(methodName_param) != IS_STRING && Z_TYPE_P(methodName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'methodName' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(methodName_param) == IS_STRING)) { - zephir_get_strval(&methodName, methodName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&methodName); + ZEPHIR_INIT_VAR(&tableName); } - - - ZEPHIR_INIT_VAR(&realClasses); - ZVAL_NULL(&realClasses); - ZEPHIR_INIT_VAR(¶msCache); - array_init(¶msCache); - ZEPHIR_INIT_VAR(&reflection); - if (!ZEPHIR_IS_NULL(&methodName)) { - object_init_ex(&reflection, zephir_get_internal_ce(SL("reflectionmethod"))); - ZEPHIR_CALL_METHOD(NULL, &reflection, "__construct", NULL, 435, handler, &methodName); - zephir_check_call_status(); - } else { - object_init_ex(&reflection, zephir_get_internal_ce(SL("reflectionfunction"))); - ZEPHIR_CALL_METHOD(NULL, &reflection, "__construct", NULL, 145, handler); - zephir_check_call_status(); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("cache"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cache, &_0); - ZEPHIR_CALL_METHOD(&methodParams, &reflection, "getparameters", NULL, 146); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(¶msKeys); - zephir_array_keys(¶msKeys, ¶ms); - zephir_is_iterable(&methodParams, 0, "phalcon/Mvc/Model/Binder.zep", 223); - if (Z_TYPE_P(&methodParams) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&methodParams), _3, _4, _1) - { - ZEPHIR_INIT_NVAR(¶mKey); - if (_4 != NULL) { - ZVAL_STR_COPY(¶mKey, _4); - } else { - ZVAL_LONG(¶mKey, _3); - } - ZEPHIR_INIT_NVAR(&methodParam); - ZVAL_COPY(&methodParam, _1); - ZEPHIR_CALL_METHOD(&reflectionClass, &methodParam, "getclass", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&reflectionClass))) { - continue; - } - ZEPHIR_CALL_METHOD(&className, &reflectionClass, "getname", NULL, 0); - zephir_check_call_status(); - if (!(zephir_array_isset(¶ms, ¶mKey))) { - zephir_array_fetch(&_5$$7, ¶msKeys, ¶mKey, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Binder.zep", 175); - ZEPHIR_CPY_WRT(¶mKey, &_5$$7); - } - ZEPHIR_INIT_NVAR(&boundModel); - ZVAL_NULL(&boundModel); - ZEPHIR_OBS_NVAR(¶mValue); - zephir_array_fetch(¶mValue, ¶ms, ¶mKey, PH_NOISY, "phalcon/Mvc/Model/Binder.zep", 179); - ZEPHIR_INIT_NVAR(&_6$$5); - ZVAL_STRING(&_6$$5, "Phalcon\\Mvc\\Model"); - ZEPHIR_CALL_FUNCTION(&_7$$5, "is_subclass_of", &_8, 436, &className, &_6$$5); - zephir_check_call_status(); - if (ZEPHIR_IS_STRING(&className, "Phalcon\\Mvc\\Model")) { - if (Z_TYPE_P(&realClasses) == IS_NULL) { - if (zephir_instance_of_ev(handler, phalcon_mvc_controller_bindmodelinterface_ce)) { - ZEPHIR_INIT_NVAR(&handlerClass); - zephir_get_class(&handlerClass, handler, 0); - _9$$10 = zephir_fetch_class(&handlerClass); - ZEPHIR_CALL_CE_STATIC(&realClasses, _9$$10, "getmodelname", NULL, 0); - zephir_check_call_status(); - } else if (zephir_instance_of_ev(handler, phalcon_mvc_model_binder_bindableinterface_ce)) { - ZEPHIR_CALL_METHOD(&realClasses, handler, "getmodelname", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Handler must implement Phalcon\\Mvc\\Model\\Binder\\BindableInterface in order to use Phalcon\\Mvc\\Model as parameter", "phalcon/Mvc/Model/Binder.zep", 191); - return; - } - } - if (Z_TYPE_P(&realClasses) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&className); - if (UNEXPECTED(!(zephir_array_isset_fetch(&className, &realClasses, ¶mKey, 0)))) { - ZEPHIR_INIT_NVAR(&_10$$14); - object_init_ex(&_10$$14, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_11$$14); - ZEPHIR_CONCAT_SVS(&_11$$14, "You should provide model class name for ", ¶mKey, " parameter"); - ZEPHIR_CALL_METHOD(NULL, &_10$$14, "__construct", &_12, 29, &_11$$14); - zephir_check_call_status(); - zephir_throw_exception_debug(&_10$$14, "phalcon/Mvc/Model/Binder.zep", 199); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } else if (Z_TYPE_P(&realClasses) == IS_STRING) { - ZEPHIR_CPY_WRT(&className, &realClasses); - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } else { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "getModelName should return array or string", "phalcon/Mvc/Model/Binder.zep", 209); - return; - } - } else if (zephir_is_true(&_7$$5)) { - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } - if (Z_TYPE_P(&boundModel) != IS_NULL) { - zephir_update_property_array(this_ptr, SL("originalValues"), ¶mKey, ¶mValue); - zephir_array_update_zval(¶ms, ¶mKey, &boundModel, PH_COPY | PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("boundModels"), ¶mKey, &boundModel); - zephir_array_update_zval(¶msCache, ¶mKey, &className, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_CALL_METHOD(NULL, &methodParams, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &methodParams, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(¶mKey, &methodParams, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&methodParam, &methodParams, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&reflectionClass, &methodParam, "getclass", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&reflectionClass))) { - continue; - } - ZEPHIR_CALL_METHOD(&className, &reflectionClass, "getname", NULL, 0); - zephir_check_call_status(); - if (!(zephir_array_isset(¶ms, ¶mKey))) { - zephir_array_fetch(&_14$$21, ¶msKeys, ¶mKey, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Binder.zep", 175); - ZEPHIR_CPY_WRT(¶mKey, &_14$$21); - } - ZEPHIR_INIT_NVAR(&boundModel); - ZVAL_NULL(&boundModel); - ZEPHIR_OBS_NVAR(¶mValue); - zephir_array_fetch(¶mValue, ¶ms, ¶mKey, PH_NOISY, "phalcon/Mvc/Model/Binder.zep", 179); - ZEPHIR_INIT_NVAR(&_15$$19); - ZVAL_STRING(&_15$$19, "Phalcon\\Mvc\\Model"); - ZEPHIR_CALL_FUNCTION(&_16$$19, "is_subclass_of", &_8, 436, &className, &_15$$19); - zephir_check_call_status(); - if (ZEPHIR_IS_STRING(&className, "Phalcon\\Mvc\\Model")) { - if (Z_TYPE_P(&realClasses) == IS_NULL) { - if (zephir_instance_of_ev(handler, phalcon_mvc_controller_bindmodelinterface_ce)) { - ZEPHIR_INIT_NVAR(&handlerClass); - zephir_get_class(&handlerClass, handler, 0); - _17$$24 = zephir_fetch_class(&handlerClass); - ZEPHIR_CALL_CE_STATIC(&realClasses, _17$$24, "getmodelname", NULL, 0); - zephir_check_call_status(); - } else if (zephir_instance_of_ev(handler, phalcon_mvc_model_binder_bindableinterface_ce)) { - ZEPHIR_CALL_METHOD(&realClasses, handler, "getmodelname", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Handler must implement Phalcon\\Mvc\\Model\\Binder\\BindableInterface in order to use Phalcon\\Mvc\\Model as parameter", "phalcon/Mvc/Model/Binder.zep", 191); - return; - } - } - if (Z_TYPE_P(&realClasses) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&className); - if (UNEXPECTED(!(zephir_array_isset_fetch(&className, &realClasses, ¶mKey, 0)))) { - ZEPHIR_INIT_NVAR(&_18$$28); - object_init_ex(&_18$$28, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_19$$28); - ZEPHIR_CONCAT_SVS(&_19$$28, "You should provide model class name for ", ¶mKey, " parameter"); - ZEPHIR_CALL_METHOD(NULL, &_18$$28, "__construct", &_12, 29, &_19$$28); - zephir_check_call_status(); - zephir_throw_exception_debug(&_18$$28, "phalcon/Mvc/Model/Binder.zep", 199); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } else if (Z_TYPE_P(&realClasses) == IS_STRING) { - ZEPHIR_CPY_WRT(&className, &realClasses); - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } else { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "getModelName should return array or string", "phalcon/Mvc/Model/Binder.zep", 209); - return; - } - } else if (zephir_is_true(&_16$$19)) { - ZEPHIR_CALL_METHOD(&boundModel, this_ptr, "findboundmodel", &_13, 0, ¶mValue, &className); - zephir_check_call_status(); - } - if (Z_TYPE_P(&boundModel) != IS_NULL) { - zephir_update_property_array(this_ptr, SL("originalValues"), ¶mKey, ¶mValue); - zephir_array_update_zval(¶ms, ¶mKey, &boundModel, PH_COPY | PH_SEPARATE); - zephir_update_property_array(this_ptr, SL("boundModels"), ¶mKey, &boundModel); - zephir_array_update_zval(¶msCache, ¶mKey, &className, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &methodParams, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&methodParam); - ZEPHIR_INIT_NVAR(¶mKey); - if (Z_TYPE_P(&cache) != IS_NULL) { - ZEPHIR_CALL_METHOD(NULL, &cache, "set", NULL, 0, &cacheKey, ¶msCache); - zephir_check_call_status(); + ZEPHIR_INIT_VAR(&schemaName); } - zephir_update_property_array(this_ptr, SL("internalCache"), &cacheKey, ¶msCache); - RETURN_CTOR(¶ms); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Binder, setCache) -{ - zval *cache, cache_sub; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&cache_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(cache, phalcon_cache_adapter_adapterinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &cache); - - zephir_update_property_zval(this_ptr, ZEND_STRL("cache"), cache); - RETURN_THISW(); -} - -zend_object *zephir_init_properties_Phalcon_Mvc_Model_Binder(zend_class_entry *class_type) -{ - zval _0, _2, _4, _1$$3, _3$$4, _5$$5; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("originalValues"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("originalValues"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("internalCache"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("internalCache"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("boundModels"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("boundModels"), &_5$$5); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_INIT_VAR(&table); + ZEPHIR_CONCAT_SVSVS(&table, "`", &schemaName, "`.`", &tableName, "`"); + } else { + ZEPHIR_INIT_NVAR(&table); + ZEPHIR_CONCAT_SVS(&table, "`", &tableName, "`"); } + ZEPHIR_CONCAT_SV(return_value, "TRUNCATE TABLE ", &table); + RETURN_MM(); } - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_BinderInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, BinderInterface, phalcon, mvc_model_binderinterface, phalcon_mvc_model_binderinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BinderInterface, bindToHandler); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BinderInterface, getBoundModels); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BinderInterface, getCache); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_BinderInterface, setCache); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Criteria) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Criteria, phalcon, mvc_model_criteria, phalcon_mvc_model_criteria_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_model_criteria_ce, SL("bindParams"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_criteria_ce, SL("bindTypes"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_mvc_model_criteria_ce, SL("hiddenParamNumber"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_criteria_ce, SL("model"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_criteria_ce, SL("params"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_criteria_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_Criteria; - - zend_class_implements(phalcon_mvc_model_criteria_ce, 1, phalcon_mvc_model_criteriainterface_ce); - zend_class_implements(phalcon_mvc_model_criteria_ce, 1, phalcon_di_injectionawareinterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, andWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, viewExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *conditions_param = NULL, *bindParams = NULL, bindParams_sub, *bindTypes = NULL, bindTypes_sub, __$null, currentConditions, _0, _1$$3; - zval conditions; + zval *viewName_param = NULL, *schemaName_param = NULL; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&bindParams_sub); - ZVAL_UNDEF(&bindTypes_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(¤tConditions); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(conditions) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(viewName) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(bindParams) - Z_PARAM_ZVAL_OR_NULL(bindTypes) + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &conditions_param, &bindParams, &bindTypes); - if (UNEXPECTED(Z_TYPE_P(conditions_param) != IS_STRING && Z_TYPE_P(conditions_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'conditions' must be of the type string")); + zephir_fetch_params(1, 1, 1, &viewName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(conditions_param) == IS_STRING)) { - zephir_get_strval(&conditions, conditions_param); + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); } else { - ZEPHIR_INIT_VAR(&conditions); - } - if (!bindParams) { - bindParams = &bindParams_sub; - bindParams = &__$null; + ZEPHIR_INIT_VAR(&viewName); } - if (!bindTypes) { - bindTypes = &bindTypes_sub; - bindTypes = &__$null; + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); } - ZEPHIR_OBS_VAR(¤tConditions); - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_string_fetch(¤tConditions, &_0, SL("conditions"), 0)) { - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_CONCAT_SVSVS(&_1$$3, "(", ¤tConditions, ") AND (", &conditions, ")"); - zephir_get_strval(&conditions, &_1$$3); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`= '", &viewName, "' AND `TABLE_SCHEMA`='", &schemaName, "'"); + RETURN_MM(); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "where", NULL, 0, &conditions, bindParams, bindTypes); - zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "SELECT IF(COUNT(*) > 0, 1, 0) FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_NAME`='", &viewName, "' AND `TABLE_SCHEMA` = DATABASE()"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, betweenWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, getTableOptions) { - zval _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *expr_param = NULL, *minimum, minimum_sub, *maximum, maximum_sub, hiddenParam, minimumKey, nextHiddenParam, maximumKey, _0; - zval expr; + zval *definition_param = NULL, options, engine, autoIncrement, tableCollation, collationParts, _0$$5, _1$$7, _2$$9, _3$$9, _4$$9; + zval definition, tableOptions; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&minimum_sub); - ZVAL_UNDEF(&maximum_sub); - ZVAL_UNDEF(&hiddenParam); - ZVAL_UNDEF(&minimumKey); - ZVAL_UNDEF(&nextHiddenParam); - ZVAL_UNDEF(&maximumKey); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&tableOptions); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&engine); + ZVAL_UNDEF(&autoIncrement); + ZVAL_UNDEF(&tableCollation); + ZVAL_UNDEF(&collationParts); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_1$$7); + ZVAL_UNDEF(&_2$$9); + ZVAL_UNDEF(&_3$$9); + ZVAL_UNDEF(&_4$$9); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(expr) - Z_PARAM_ZVAL(minimum) - Z_PARAM_ZVAL(maximum) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &expr_param, &minimum, &maximum); - if (UNEXPECTED(Z_TYPE_P(expr_param) != IS_STRING && Z_TYPE_P(expr_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'expr' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(expr_param) == IS_STRING)) { - zephir_get_strval(&expr, expr_param); - } else { - ZEPHIR_INIT_VAR(&expr); - } + zephir_fetch_params(1, 1, 0, &definition_param); + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_OBS_VAR(&hiddenParam); - zephir_read_property(&hiddenParam, this_ptr, ZEND_STRL("hiddenParamNumber"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&nextHiddenParam); - ZVAL_LONG(&nextHiddenParam, (zephir_get_numberval(&hiddenParam) + 1)); - ZEPHIR_INIT_VAR(&minimumKey); - ZEPHIR_CONCAT_SV(&minimumKey, "ACP", &hiddenParam); - ZEPHIR_INIT_VAR(&maximumKey); - ZEPHIR_CONCAT_SV(&maximumKey, "ACP", &nextHiddenParam); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSVSVS(&_0, &expr, " BETWEEN :", &minimumKey, ": AND :", &maximumKey, ":"); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 2, 0); - zephir_array_update_zval(&_1, &minimumKey, minimum, PH_COPY); - zephir_array_update_zval(&_1, &maximumKey, maximum, PH_COPY); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "andwhere", NULL, 0, &_0, &_1); - zephir_check_call_status(); - ZEPHIR_SEPARATE(&nextHiddenParam); - zephir_increment(&nextHiddenParam); - zephir_update_property_zval(this_ptr, ZEND_STRL("hiddenParamNumber"), &nextHiddenParam); - RETURN_THIS(); + ZEPHIR_OBS_VAR(&options); + if (!(zephir_array_isset_string_fetch(&options, &definition, SL("options"), 0))) { + RETURN_MM_STRING(""); + } + ZEPHIR_INIT_VAR(&tableOptions); + array_init(&tableOptions); + ZEPHIR_OBS_VAR(&engine); + if (zephir_array_isset_string_fetch(&engine, &options, SL("ENGINE"), 0)) { + if (zephir_is_true(&engine)) { + ZEPHIR_INIT_VAR(&_0$$5); + ZEPHIR_CONCAT_SV(&_0$$5, "ENGINE=", &engine); + zephir_array_append(&tableOptions, &_0$$5, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 857); + } + } + ZEPHIR_OBS_VAR(&autoIncrement); + if (zephir_array_isset_string_fetch(&autoIncrement, &options, SL("AUTO_INCREMENT"), 0)) { + if (zephir_is_true(&autoIncrement)) { + ZEPHIR_INIT_VAR(&_1$$7); + ZEPHIR_CONCAT_SV(&_1$$7, "AUTO_INCREMENT=", &autoIncrement); + zephir_array_append(&tableOptions, &_1$$7, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 866); + } + } + ZEPHIR_OBS_VAR(&tableCollation); + if (zephir_array_isset_string_fetch(&tableCollation, &options, SL("TABLE_COLLATION"), 0)) { + if (zephir_is_true(&tableCollation)) { + ZEPHIR_INIT_VAR(&collationParts); + zephir_fast_explode_str(&collationParts, SL("_"), &tableCollation, LONG_MAX); + zephir_array_fetch_long(&_2$$9, &collationParts, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Dialect/Mysql.zep", 876); + ZEPHIR_INIT_VAR(&_3$$9); + ZEPHIR_CONCAT_SV(&_3$$9, "DEFAULT CHARSET=", &_2$$9); + zephir_array_append(&tableOptions, &_3$$9, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 876); + ZEPHIR_INIT_VAR(&_4$$9); + ZEPHIR_CONCAT_SV(&_4$$9, "COLLATE=", &tableCollation); + zephir_array_append(&tableOptions, &_4$$9, PH_SEPARATE, "phalcon/Db/Dialect/Mysql.zep", 877); + } + } + zephir_fast_join_str(return_value, SL(" "), &tableOptions); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, bind) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, checkColumnSizeAndScale) { + zval columnSql; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool merge, _5; - zval *bindParams_param = NULL, *merge_param = NULL, _0, _3, _4, _1$$3, _2$$3, _6$$4, _7$$4, _8$$4, _9$$4, _10$$5; - zval bindParams; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, _0, _1$$3, _2$$3, _3$$3, _4$$4, _5$$4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&column_sub); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_8$$4); - ZVAL_UNDEF(&_9$$4); - ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&columnSql); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(merge) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &bindParams_param, &merge_param); - ZEPHIR_OBS_COPY_OR_DUP(&bindParams, bindParams_param); - if (!merge_param) { - merge = 0; - } else { - merge = zephir_get_boolval(merge_param); - } + zephir_fetch_params(1, 1, 0, &column); - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string(&_0, SL("bind")))) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); + ZEPHIR_CALL_METHOD(&_0, column, "getsize", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_0)) { + ZEPHIR_CALL_METHOD(&_1$$3, column, "getsize", NULL, 0); + zephir_check_call_status(); ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "bind"); - zephir_update_property_array(this_ptr, SL("params"), &_2$$3, &_1$$3); - } - zephir_read_property(&_3, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_VAR(&_4); - zephir_array_fetch_string(&_4, &_3, SL("bind"), PH_NOISY, "phalcon/Mvc/Model/Criteria.zep", 129); - _5 = Z_TYPE_P(&_4) == IS_ARRAY; - if (_5) { - _5 = merge; - } - if (_5) { - zephir_read_property(&_6$$4, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_7$$4, &_6$$4, SL("bind"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Criteria.zep", 130); - ZEPHIR_INIT_VAR(&_8$$4); - zephir_add_function(&_8$$4, &_7$$4, &bindParams); - ZEPHIR_INIT_VAR(&_9$$4); - ZVAL_STRING(&_9$$4, "bind"); - zephir_update_property_array(this_ptr, SL("params"), &_9$$4, &_8$$4); - } else { - ZEPHIR_INIT_VAR(&_10$$5); - ZVAL_STRING(&_10$$5, "bind"); - zephir_update_property_array(this_ptr, SL("params"), &_10$$5, &bindParams); + ZEPHIR_CONCAT_SV(&_2$$3, "(", &_1$$3); + zephir_concat_self(&columnSql, &_2$$3); + ZEPHIR_CALL_METHOD(&_3$$3, column, "getscale", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_3$$3)) { + ZEPHIR_CALL_METHOD(&_4$$4, column, "getscale", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_5$$4); + ZEPHIR_CONCAT_SVS(&_5$$4, ",", &_4$$4, ")"); + zephir_concat_self(&columnSql, &_5$$4); + } else { + zephir_concat_self_str(&columnSql, ")", sizeof(")") - 1); + } } - RETURN_THIS(); + RETURN_CTOR(&columnSql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, bindTypes) +static PHP_METHOD(Phalcon_Db_Dialect_Mysql, checkColumnUnsigned) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *bindTypes_param = NULL, _0; - zval bindTypes; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindTypes); + ZVAL_UNDEF(&column_sub); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &bindTypes_param); - ZEPHIR_OBS_COPY_OR_DUP(&bindTypes, bindTypes_param); + zephir_fetch_params(1, 1, 0, &column); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "bindTypes"); - zephir_update_property_array(this_ptr, SL("params"), &_0, &bindTypes); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, column, "isunsigned", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_0)) { + RETURN_MM_STRING(" UNSIGNED"); + } + RETURN_MM_STRING(""); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, cache) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *cache_param = NULL, _0; - zval cache; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(cache) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cache_param); - ZEPHIR_OBS_COPY_OR_DUP(&cache, cache_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "cache"); - zephir_update_property_array(this_ptr, SL("params"), &_0, &cache); - RETURN_THIS(); + +ZEPHIR_INIT_CLASS(Phalcon_Db_Dialect_Postgresql) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Dialect, Postgresql, phalcon, db_dialect_postgresql, phalcon_db_dialect_ce, phalcon_db_dialect_postgresql_method_entry, 0); + + zend_declare_property_string(phalcon_db_dialect_postgresql_ce, SL("escapeChar"), "\"", ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, columns) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, addColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *columns, columns_sub, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, columnDefinition, _0, _1, _2, _3, _4, _7, _5$$3, _6$$3; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&columns_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&columnDefinition); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(columns) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &columns); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &column); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "columns"); - zephir_update_property_array(this_ptr, SL("params"), &_0, columns); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SVS(&_1, "ALTER TABLE ", &_0, " ADD COLUMN "); + zephir_get_strval(&sql, &_1); + ZEPHIR_CALL_METHOD(&_2, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_3); + ZEPHIR_CONCAT_SVSV(&_3, "\"", &_2, "\" ", &columnDefinition); + zephir_concat_self(&sql, &_3); + ZEPHIR_CALL_METHOD(&_4, column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_4)) { + ZEPHIR_CALL_METHOD(&_5$$3, this_ptr, "castdefault", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6$$3); + ZEPHIR_CONCAT_SV(&_6$$3, " DEFAULT ", &_5$$3); + zephir_concat_self(&sql, &_6$$3); + } + ZEPHIR_CALL_METHOD(&_7, column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_7)) { + zephir_concat_self_str(&sql, " NOT NULL", sizeof(" NOT NULL") - 1); + } else { + zephir_concat_self_str(&sql, " NULL", sizeof(" NULL") - 1); + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, conditions) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, addForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *conditions_param = NULL, _0; - zval conditions; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *reference, reference_sub, onDelete, onUpdate, _0, _1, _2, _5, _6, _7, _8, _9, _10, _3$$3, _4$$3, _11$$4, _12$$5; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&conditions); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&reference_sub); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_11$$4); + ZVAL_UNDEF(&_12$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(conditions) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(reference, phalcon_db_referenceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &conditions_param); - if (UNEXPECTED(Z_TYPE_P(conditions_param) != IS_STRING && Z_TYPE_P(conditions_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'conditions' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &reference); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(conditions_param) == IS_STRING)) { - zephir_get_strval(&conditions, conditions_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&conditions); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "conditions"); - zephir_update_property_array(this_ptr, SL("params"), &_0, &conditions); - RETURN_THIS(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SVS(&_1, "ALTER TABLE ", &_0, " ADD"); + zephir_get_strval(&sql, &_1); + ZEPHIR_CALL_METHOD(&_2, reference, "getname", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_2)) { + ZEPHIR_CALL_METHOD(&_3$$3, reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4$$3); + ZEPHIR_CONCAT_SVS(&_4$$3, " CONSTRAINT \"", &_3$$3, "\""); + zephir_concat_self(&sql, &_4$$3); + } + ZEPHIR_CALL_METHOD(&_6, reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getcolumnlist", NULL, 54, &_6); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_7, reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_9, reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_8, this_ptr, "getcolumnlist", NULL, 54, &_9); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_10); + ZEPHIR_CONCAT_SVSSVSVS(&_10, " FOREIGN KEY (", &_5, ")", " REFERENCES \"", &_7, "\" (", &_8, ")"); + zephir_concat_self(&sql, &_10); + ZEPHIR_CALL_METHOD(&onDelete, reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_VAR(&_11$$4); + ZEPHIR_CONCAT_SV(&_11$$4, " ON DELETE ", &onDelete); + zephir_concat_self(&sql, &_11$$4); + } + ZEPHIR_CALL_METHOD(&onUpdate, reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_VAR(&_12$$5); + ZEPHIR_CONCAT_SV(&_12$$5, " ON UPDATE ", &onUpdate); + zephir_concat_self(&sql, &_12$$5); + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, createBuilder) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, addIndex) { - zval container, manager, builder, _1, _2, _3, _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_0 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, indexType, _0, _2, _3, _4, _5, _6, _7, _1$$4; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&builder); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&index_sub); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_1$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", NULL, 0); + + ZEPHIR_CALL_METHOD(&_0, index, "getname", NULL, 0); zephir_check_call_status(); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_CALL_CE_STATIC(&container, phalcon_di_di_ce, "getdefault", &_0, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setdi", NULL, 0, &container); + if (ZEPHIR_IS_STRING_IDENTICAL(&_0, "PRIMARY")) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "addprimarykey", NULL, 0, &tableName, &schemaName, index); zephir_check_call_status(); + RETURN_MM(); } - ZEPHIR_INIT_VAR(&_2); - ZVAL_STRING(&_2, "modelsManager"); - ZEPHIR_CALL_METHOD(&_1, &container, "getshared", NULL, 0, &_2); + ZEPHIR_INIT_VAR(&sql); + ZVAL_STRING(&sql, "CREATE"); + ZEPHIR_CALL_METHOD(&indexType, index, "gettype", NULL, 0); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&manager, &_1); - zephir_read_property(&_3, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&builder, &manager, "createbuilder", NULL, 0, &_3); + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_INIT_VAR(&_1$$4); + ZEPHIR_CONCAT_SV(&_1$$4, " ", &indexType); + zephir_concat_self(&sql, &_1$$4); + } + ZEPHIR_CALL_METHOD(&_2, index, "getname", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_4, this_ptr, ZEND_STRL("model"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &builder, "from", NULL, 0, &_4); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - RETURN_CCTOR(&builder); + ZEPHIR_INIT_VAR(&_4); + ZEPHIR_CONCAT_SVSV(&_4, " INDEX \"", &_2, "\" ON ", &_3); + zephir_concat_self(&sql, &_4); + ZEPHIR_CALL_METHOD(&_6, index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getcolumnlist", NULL, 54, &_6); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_7); + ZEPHIR_CONCAT_SVS(&_7, " (", &_5, ")"); + zephir_concat_self(&sql, &_7); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, distinct) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, addPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *distinct, distinct_sub, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, _0, _1, _2; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&distinct_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&index_sub); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(distinct) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &distinct); - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "distinct"); - zephir_update_property_array(this_ptr, SL("params"), &_0, distinct); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, execute) -{ - zend_class_entry *_1; - zval model, _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&_0); - + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - ZEPHIR_MM_GROW(); - ZEPHIR_CALL_METHOD(&model, this_ptr, "getmodelname", NULL, 0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&model) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Model name must be string", "phalcon/Mvc/Model/Criteria.zep", 245); - return; - } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "getparams", NULL, 0); + ZEPHIR_CALL_METHOD(&_2, index, "getcolumns", NULL, 0); zephir_check_call_status(); - _1 = zephir_fetch_class(&model); - ZEPHIR_RETURN_CALL_CE_STATIC(_1, "find", NULL, 0, &_0); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "getcolumnlist", NULL, 54, &_2); zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVSVS(return_value, "ALTER TABLE ", &_0, " ADD CONSTRAINT \"", &tableName, "_PRIMARY\" PRIMARY KEY (", &_1, ")"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, forUpdate) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, createTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *forUpdate_param = NULL, _0, _1; - zend_bool forUpdate; + zephir_fcall_cache_entry *_4 = NULL, *_9 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition, createLines, primaryColumns; + zval *tableName_param = NULL, *schemaName_param = NULL, *definition_param = NULL, temporary, options, table, columns, column, indexes, index, reference, references, indexName, indexType, onDelete, onUpdate, columnDefinition, *_2, _3, _82, _83, _0$$5, _1$$6, _5$$7, _6$$7, _7$$7, _11$$7, _12$$7, _14$$7, _8$$8, _10$$8, _13$$11, _15$$12, _16$$12, _17$$12, _18$$13, _19$$13, _20$$13, _23$$13, _24$$13, _26$$13, _21$$14, _22$$14, _25$$17, _27$$18, _28$$18, _29$$18, _30$$19, _31$$19, *_32$$20, _33$$20, _34$$22, _35$$22, _36$$22, _37$$24, _38$$24, _39$$24, _40$$25, _41$$25, _42$$25, _43$$25, _44$$25, _45$$25, _46$$28, _47$$28, _48$$28, _49$$30, _50$$30, _51$$30, _52$$31, _53$$31, _54$$31, _55$$31, _56$$31, _57$$31, *_58$$33, _59$$33, _60$$34, _61$$34, _62$$34, _63$$34, _64$$34, _65$$34, _66$$34, _67$$34, _68$$34, _69$$35, _70$$36, _71$$37, _72$$37, _73$$37, _74$$37, _75$$37, _76$$37, _77$$37, _78$$37, _79$$37, _80$$38, _81$$39, _84$$40, _85$$40; + zval tableName, schemaName, indexSql, indexSqlAfterCreate, columnLine, referenceSql, sql, _86; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(forUpdate) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &forUpdate_param); - if (!forUpdate_param) { - forUpdate = 1; - } else { - forUpdate = zephir_get_boolval(forUpdate_param); - } - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "for_update"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_BOOL(&_1, forUpdate); - zephir_update_property_array(this_ptr, SL("params"), &_0, &_1); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, fromInput) -{ - zend_bool _6$$4, _7$$7, _11$$10, _12$$13; - zend_string *_5$$3; - zend_ulong _4$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval data, conditions, bind, _1$$3; - zval modelName, operator, _17$$16; - zval *container, container_sub, *modelName_param = NULL, *data_param = NULL, *operator_param = NULL, __$null, attribute, field, value, type, metaData, model, dataTypes, criteria, columnMap, _0$$3, *_2$$3, _3$$3, _8$$9, _9$$9, _10$$8, _13$$15, _14$$15, _15$$14, _16$$16; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&container_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&dataTypes); - ZVAL_UNDEF(&criteria); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_8$$9); - ZVAL_UNDEF(&_9$$9); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexSql); + ZVAL_UNDEF(&indexSqlAfterCreate); + ZVAL_UNDEF(&columnLine); + ZVAL_UNDEF(&referenceSql); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&_86); + ZVAL_UNDEF(&temporary); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&indexName); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); + ZVAL_UNDEF(&columnDefinition); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_82); + ZVAL_UNDEF(&_83); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF(&_5$$7); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_14$$7); + ZVAL_UNDEF(&_8$$8); ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_13$$15); - ZVAL_UNDEF(&_14$$15); - ZVAL_UNDEF(&_15$$14); - ZVAL_UNDEF(&_16$$16); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&operator); - ZVAL_UNDEF(&_17$$16); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&bind); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_13$$11); + ZVAL_UNDEF(&_15$$12); + ZVAL_UNDEF(&_16$$12); + ZVAL_UNDEF(&_17$$12); + ZVAL_UNDEF(&_18$$13); + ZVAL_UNDEF(&_19$$13); + ZVAL_UNDEF(&_20$$13); + ZVAL_UNDEF(&_23$$13); + ZVAL_UNDEF(&_24$$13); + ZVAL_UNDEF(&_26$$13); + ZVAL_UNDEF(&_21$$14); + ZVAL_UNDEF(&_22$$14); + ZVAL_UNDEF(&_25$$17); + ZVAL_UNDEF(&_27$$18); + ZVAL_UNDEF(&_28$$18); + ZVAL_UNDEF(&_29$$18); + ZVAL_UNDEF(&_30$$19); + ZVAL_UNDEF(&_31$$19); + ZVAL_UNDEF(&_33$$20); + ZVAL_UNDEF(&_34$$22); + ZVAL_UNDEF(&_35$$22); + ZVAL_UNDEF(&_36$$22); + ZVAL_UNDEF(&_37$$24); + ZVAL_UNDEF(&_38$$24); + ZVAL_UNDEF(&_39$$24); + ZVAL_UNDEF(&_40$$25); + ZVAL_UNDEF(&_41$$25); + ZVAL_UNDEF(&_42$$25); + ZVAL_UNDEF(&_43$$25); + ZVAL_UNDEF(&_44$$25); + ZVAL_UNDEF(&_45$$25); + ZVAL_UNDEF(&_46$$28); + ZVAL_UNDEF(&_47$$28); + ZVAL_UNDEF(&_48$$28); + ZVAL_UNDEF(&_49$$30); + ZVAL_UNDEF(&_50$$30); + ZVAL_UNDEF(&_51$$30); + ZVAL_UNDEF(&_52$$31); + ZVAL_UNDEF(&_53$$31); + ZVAL_UNDEF(&_54$$31); + ZVAL_UNDEF(&_55$$31); + ZVAL_UNDEF(&_56$$31); + ZVAL_UNDEF(&_57$$31); + ZVAL_UNDEF(&_59$$33); + ZVAL_UNDEF(&_60$$34); + ZVAL_UNDEF(&_61$$34); + ZVAL_UNDEF(&_62$$34); + ZVAL_UNDEF(&_63$$34); + ZVAL_UNDEF(&_64$$34); + ZVAL_UNDEF(&_65$$34); + ZVAL_UNDEF(&_66$$34); + ZVAL_UNDEF(&_67$$34); + ZVAL_UNDEF(&_68$$34); + ZVAL_UNDEF(&_69$$35); + ZVAL_UNDEF(&_70$$36); + ZVAL_UNDEF(&_71$$37); + ZVAL_UNDEF(&_72$$37); + ZVAL_UNDEF(&_73$$37); + ZVAL_UNDEF(&_74$$37); + ZVAL_UNDEF(&_75$$37); + ZVAL_UNDEF(&_76$$37); + ZVAL_UNDEF(&_77$$37); + ZVAL_UNDEF(&_78$$37); + ZVAL_UNDEF(&_79$$37); + ZVAL_UNDEF(&_80$$38); + ZVAL_UNDEF(&_81$$39); + ZVAL_UNDEF(&_84$$40); + ZVAL_UNDEF(&_85$$40); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&createLines); + ZVAL_UNDEF(&primaryColumns); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) - Z_PARAM_STR(modelName) - Z_PARAM_ARRAY(data) - Z_PARAM_OPTIONAL - Z_PARAM_STR(operator) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &container, &modelName_param, &data_param, &operator_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - ZEPHIR_OBS_COPY_OR_DUP(&data, data_param); - if (!operator_param) { - ZEPHIR_INIT_VAR(&operator); - ZVAL_STRING(&operator, "AND"); - } else { - if (UNEXPECTED(Z_TYPE_P(operator_param) != IS_STRING && Z_TYPE_P(operator_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'operator' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(operator_param) == IS_STRING)) { - zephir_get_strval(&operator, operator_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&operator); - } + ZEPHIR_INIT_VAR(&schemaName); } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_INIT_VAR(&conditions); - array_init(&conditions); - if (zephir_fast_count_int(&data)) { - ZEPHIR_INIT_VAR(&_0$$3); - ZVAL_STRING(&_0$$3, "modelsMetadata"); - ZEPHIR_CALL_METHOD(&metaData, container, "getshared", NULL, 0, &_0$$3); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 2, 0); - zephir_array_fast_append(&_1$$3, &__$null); - zephir_array_fast_append(&_1$$3, container); - ZEPHIR_INIT_VAR(&model); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&model, &modelName, &_1$$3); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&dataTypes, &metaData, "getdatatypes", NULL, 0, &model); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'columns' is required in the definition array", "phalcon/Db/Dialect/Postgresql.zep", 134); + return; + } + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&temporary); + ZVAL_BOOL(&temporary, 0); + ZEPHIR_OBS_VAR(&options); + if (zephir_array_isset_string_fetch(&options, &definition, SL("options"), 0)) { + ZEPHIR_OBS_NVAR(&temporary); + zephir_array_isset_string_fetch(&temporary, &options, SL("temporary"), 0); + } + if (zephir_is_true(&temporary)) { + ZEPHIR_INIT_VAR(&_0$$5); + ZEPHIR_CONCAT_SVS(&_0$$5, "CREATE TEMPORARY TABLE ", &table, " (\n\t"); + zephir_get_strval(&sql, &_0$$5); + } else { + ZEPHIR_INIT_VAR(&_1$$6); + ZEPHIR_CONCAT_SVS(&_1$$6, "CREATE TABLE ", &table, " (\n\t"); + zephir_get_strval(&sql, &_1$$6); + } + ZEPHIR_INIT_VAR(&indexSqlAfterCreate); + ZEPHIR_INIT_VAR(&createLines); + array_init(&createLines); + ZEPHIR_INIT_VAR(&primaryColumns); + array_init(&primaryColumns); + zephir_is_iterable(&columns, 0, "phalcon/Db/Dialect/Postgresql.zep", 198); + if (Z_TYPE_P(&columns) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&columns), _2) + { + ZEPHIR_INIT_NVAR(&column); + ZVAL_COPY(&column, _2); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", &_4, 0, &column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$7, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_6$$7); + ZEPHIR_CONCAT_SVSV(&_6$$7, "\"", &_5$$7, "\" ", &columnDefinition); + zephir_get_strval(&columnLine, &_6$$7); + ZEPHIR_CALL_METHOD(&_7$$7, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_7$$7)) { + ZEPHIR_CALL_METHOD(&_8$$8, this_ptr, "castdefault", &_9, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_10$$8); + ZEPHIR_CONCAT_SV(&_10$$8, " DEFAULT ", &_8$$8); + zephir_concat_self(&columnLine, &_10$$8); + } + ZEPHIR_CALL_METHOD(&_11$$7, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_11$$7)) { + zephir_concat_self_str(&columnLine, " NOT NULL", sizeof(" NOT NULL") - 1); + } else { + zephir_concat_self_str(&columnLine, " NULL", sizeof(" NULL") - 1); + } + ZEPHIR_CALL_METHOD(&_12$$7, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_12$$7)) { + ZEPHIR_CALL_METHOD(&_13$$11, &column, "getname", NULL, 0); + zephir_check_call_status(); + zephir_array_append(&primaryColumns, &_13$$11, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 185); + } + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 188); + ZEPHIR_CALL_METHOD(&_14$$7, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_14$$7)) { + ZEPHIR_CALL_METHOD(&_15$$12, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_16$$12, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_17$$12); + ZEPHIR_CONCAT_SVSVSVS(&_17$$12, " COMMENT ON COLUMN ", &table, ".\"", &_15$$12, "\" IS '", &_16$$12, "';"); + zephir_concat_self(&indexSqlAfterCreate, &_17$$12); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getreversecolumnmap", NULL, 0, &model); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &columns, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&column, &columns, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", &_4, 0, &column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_18$$13, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_19$$13); + ZEPHIR_CONCAT_SVSV(&_19$$13, "\"", &_18$$13, "\" ", &columnDefinition); + zephir_get_strval(&columnLine, &_19$$13); + ZEPHIR_CALL_METHOD(&_20$$13, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_20$$13)) { + ZEPHIR_CALL_METHOD(&_21$$14, this_ptr, "castdefault", &_9, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_22$$14); + ZEPHIR_CONCAT_SV(&_22$$14, " DEFAULT ", &_21$$14); + zephir_concat_self(&columnLine, &_22$$14); + } + ZEPHIR_CALL_METHOD(&_23$$13, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_23$$13)) { + zephir_concat_self_str(&columnLine, " NOT NULL", sizeof(" NOT NULL") - 1); + } else { + zephir_concat_self_str(&columnLine, " NULL", sizeof(" NULL") - 1); + } + ZEPHIR_CALL_METHOD(&_24$$13, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_24$$13)) { + ZEPHIR_CALL_METHOD(&_25$$17, &column, "getname", NULL, 0); + zephir_check_call_status(); + zephir_array_append(&primaryColumns, &_25$$17, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 185); + } + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 188); + ZEPHIR_CALL_METHOD(&_26$$13, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_26$$13)) { + ZEPHIR_CALL_METHOD(&_27$$18, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_28$$18, &column, "getcomment", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_29$$18); + ZEPHIR_CONCAT_SVSVSVS(&_29$$18, " COMMENT ON COLUMN ", &table, ".\"", &_27$$18, "\" IS '", &_28$$18, "';"); + zephir_concat_self(&indexSqlAfterCreate, &_29$$18); + } + ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&column); + if (!(ZEPHIR_IS_EMPTY(&primaryColumns))) { + ZEPHIR_CALL_METHOD(&_30$$19, this_ptr, "getcolumnlist", NULL, 54, &primaryColumns); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&bind); - array_init(&bind); - zephir_is_iterable(&data, 0, "phalcon/Mvc/Model/Criteria.zep", 322); - if (Z_TYPE_P(&data) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _4$$3, _5$$3, _2$$3) + ZEPHIR_INIT_VAR(&_31$$19); + ZEPHIR_CONCAT_SVS(&_31$$19, "PRIMARY KEY (", &_30$$19, ")"); + zephir_array_append(&createLines, &_31$$19, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 199); + } + ZEPHIR_OBS_VAR(&indexes); + if (zephir_array_isset_string_fetch(&indexes, &definition, SL("indexes"), 0)) { + zephir_is_iterable(&indexes, 0, "phalcon/Db/Dialect/Postgresql.zep", 227); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&indexes), _32$$20) { - ZEPHIR_INIT_NVAR(&field); - if (_5$$3 != NULL) { - ZVAL_STR_COPY(&field, _5$$3); + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _32$$20); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&indexSql); + if (ZEPHIR_IS_STRING(&indexName, "PRIMARY")) { + ZEPHIR_CALL_METHOD(&_35$$22, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_34$$22, this_ptr, "getcolumnlist", NULL, 54, &_35$$22); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_36$$22); + ZEPHIR_CONCAT_SVS(&_36$$22, "CONSTRAINT \"PRIMARY\" PRIMARY KEY (", &_34$$22, ")"); + zephir_get_strval(&indexSql, &_36$$22); } else { - ZVAL_LONG(&field, _4$$3); + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_CALL_METHOD(&_38$$24, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_37$$24, this_ptr, "getcolumnlist", NULL, 54, &_38$$24); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_39$$24); + ZEPHIR_CONCAT_SVSVSVS(&_39$$24, "CONSTRAINT \"", &indexName, "\" ", &indexType, " (", &_37$$24, ")"); + zephir_get_strval(&indexSql, &_39$$24); + } else { + ZEPHIR_CALL_METHOD(&_40$$25, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_41$$25, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_42$$25); + ZEPHIR_CONCAT_SVSV(&_42$$25, "CREATE INDEX \"", &_40$$25, "\" ON ", &_41$$25); + zephir_concat_self(&indexSqlAfterCreate, &_42$$25); + ZEPHIR_CALL_METHOD(&_44$$25, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_43$$25, this_ptr, "getcolumnlist", NULL, 54, &_44$$25); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_45$$25); + ZEPHIR_CONCAT_SVS(&_45$$25, " (", &_43$$25, ");"); + zephir_concat_self(&indexSqlAfterCreate, &_45$$25); + } } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _2$$3); - _6$$4 = Z_TYPE_P(&columnMap) == IS_ARRAY; - if (_6$$4) { - _6$$4 = ((zephir_fast_count_int(&columnMap)) ? 1 : 0); + if (!(ZEPHIR_IS_EMPTY(&indexSql))) { + zephir_array_append(&createLines, &indexSql, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 224); } - if (_6$$4) { - ZEPHIR_OBS_NVAR(&attribute); - zephir_array_fetch(&attribute, &columnMap, &field, PH_NOISY, "phalcon/Mvc/Model/Criteria.zep", 297); - } else { - ZEPHIR_CPY_WRT(&attribute, &field); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_33$$20, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_33$$20)) { + break; } - ZEPHIR_OBS_NVAR(&type); - if (zephir_array_isset_fetch(&type, &dataTypes, &attribute, 0)) { - _7$$7 = Z_TYPE_P(&value) != IS_NULL; - if (_7$$7) { - _7$$7 = !ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - } - if (_7$$7) { - if (ZEPHIR_IS_LONG(&type, 2)) { - ZEPHIR_INIT_NVAR(&_8$$9); - ZEPHIR_CONCAT_SVSVS(&_8$$9, "[", &field, "] LIKE :", &field, ":"); - zephir_array_append(&conditions, &_8$$9, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 308); - ZEPHIR_INIT_NVAR(&_9$$9); - ZEPHIR_CONCAT_SVS(&_9$$9, "%", &value, "%"); - zephir_array_update_zval(&bind, &field, &_9$$9, PH_COPY | PH_SEPARATE); - continue; + ZEPHIR_CALL_METHOD(&index, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&indexSql); + if (ZEPHIR_IS_STRING(&indexName, "PRIMARY")) { + ZEPHIR_CALL_METHOD(&_47$$28, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_46$$28, this_ptr, "getcolumnlist", NULL, 54, &_47$$28); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_48$$28); + ZEPHIR_CONCAT_SVS(&_48$$28, "CONSTRAINT \"PRIMARY\" PRIMARY KEY (", &_46$$28, ")"); + zephir_get_strval(&indexSql, &_48$$28); + } else { + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_CALL_METHOD(&_50$$30, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_49$$30, this_ptr, "getcolumnlist", NULL, 54, &_50$$30); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_51$$30); + ZEPHIR_CONCAT_SVSVSVS(&_51$$30, "CONSTRAINT \"", &indexName, "\" ", &indexType, " (", &_49$$30, ")"); + zephir_get_strval(&indexSql, &_51$$30); + } else { + ZEPHIR_CALL_METHOD(&_52$$31, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_53$$31, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_54$$31); + ZEPHIR_CONCAT_SVSV(&_54$$31, "CREATE INDEX \"", &_52$$31, "\" ON ", &_53$$31); + zephir_concat_self(&indexSqlAfterCreate, &_54$$31); + ZEPHIR_CALL_METHOD(&_56$$31, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_55$$31, this_ptr, "getcolumnlist", NULL, 54, &_56$$31); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_57$$31); + ZEPHIR_CONCAT_SVS(&_57$$31, " (", &_55$$31, ");"); + zephir_concat_self(&indexSqlAfterCreate, &_57$$31); } - ZEPHIR_INIT_NVAR(&_10$$8); - ZEPHIR_CONCAT_SVSVS(&_10$$8, "[", &field, "] = :", &field, ":"); - zephir_array_append(&conditions, &_10$$8, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 317); - zephir_array_update_zval(&bind, &field, &value, PH_COPY | PH_SEPARATE); } + if (!(ZEPHIR_IS_EMPTY(&indexSql))) { + zephir_array_append(&createLines, &indexSql, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 224); + } + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&index); + } + ZEPHIR_OBS_VAR(&references); + if (zephir_array_isset_string_fetch(&references, &definition, SL("references"), 0)) { + zephir_is_iterable(&references, 0, "phalcon/Db/Dialect/Postgresql.zep", 255); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&references), _58$$33) + { + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _58$$33); + ZEPHIR_CALL_METHOD(&_60$$34, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_62$$34, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_61$$34, this_ptr, "getcolumnlist", NULL, 54, &_62$$34); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_63$$34); + ZEPHIR_CONCAT_SVSVS(&_63$$34, "CONSTRAINT \"", &_60$$34, "\" FOREIGN KEY (", &_61$$34, ") REFERENCES "); + zephir_get_strval(&referenceSql, &_63$$34); + ZEPHIR_CALL_METHOD(&_65$$34, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_64$$34, this_ptr, "preparetable", NULL, 0, &_65$$34, &schemaName); + zephir_check_call_status(); + zephir_concat_self(&referenceSql, &_64$$34); + ZEPHIR_CALL_METHOD(&_67$$34, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_66$$34, this_ptr, "getcolumnlist", NULL, 54, &_67$$34); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_68$$34); + ZEPHIR_CONCAT_SVS(&_68$$34, " (", &_66$$34, ")"); + zephir_concat_self(&referenceSql, &_68$$34); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_69$$35); + ZEPHIR_CONCAT_SV(&_69$$35, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_69$$35); + } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_70$$36); + ZEPHIR_CONCAT_SV(&_70$$36, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_70$$36); } + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 253); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &data, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_3$$3, &data, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_59$$33, &references, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_3$$3)) { + if (!zend_is_true(&_59$$33)) { break; } - ZEPHIR_CALL_METHOD(&field, &data, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &data, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&reference, &references, "current", NULL, 0); zephir_check_call_status(); - _11$$10 = Z_TYPE_P(&columnMap) == IS_ARRAY; - if (_11$$10) { - _11$$10 = ((zephir_fast_count_int(&columnMap)) ? 1 : 0); - } - if (_11$$10) { - ZEPHIR_OBS_NVAR(&attribute); - zephir_array_fetch(&attribute, &columnMap, &field, PH_NOISY, "phalcon/Mvc/Model/Criteria.zep", 297); - } else { - ZEPHIR_CPY_WRT(&attribute, &field); + ZEPHIR_CALL_METHOD(&_71$$37, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_73$$37, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_72$$37, this_ptr, "getcolumnlist", NULL, 54, &_73$$37); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_74$$37); + ZEPHIR_CONCAT_SVSVS(&_74$$37, "CONSTRAINT \"", &_71$$37, "\" FOREIGN KEY (", &_72$$37, ") REFERENCES "); + zephir_get_strval(&referenceSql, &_74$$37); + ZEPHIR_CALL_METHOD(&_76$$37, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_75$$37, this_ptr, "preparetable", NULL, 0, &_76$$37, &schemaName); + zephir_check_call_status(); + zephir_concat_self(&referenceSql, &_75$$37); + ZEPHIR_CALL_METHOD(&_78$$37, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_77$$37, this_ptr, "getcolumnlist", NULL, 54, &_78$$37); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_79$$37); + ZEPHIR_CONCAT_SVS(&_79$$37, " (", &_77$$37, ")"); + zephir_concat_self(&referenceSql, &_79$$37); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_80$$38); + ZEPHIR_CONCAT_SV(&_80$$38, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_80$$38); } - ZEPHIR_OBS_NVAR(&type); - if (zephir_array_isset_fetch(&type, &dataTypes, &attribute, 0)) { - _12$$13 = Z_TYPE_P(&value) != IS_NULL; - if (_12$$13) { - _12$$13 = !ZEPHIR_IS_STRING_IDENTICAL(&value, ""); - } - if (_12$$13) { - if (ZEPHIR_IS_LONG(&type, 2)) { - ZEPHIR_INIT_NVAR(&_13$$15); - ZEPHIR_CONCAT_SVSVS(&_13$$15, "[", &field, "] LIKE :", &field, ":"); - zephir_array_append(&conditions, &_13$$15, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 308); - ZEPHIR_INIT_NVAR(&_14$$15); - ZEPHIR_CONCAT_SVS(&_14$$15, "%", &value, "%"); - zephir_array_update_zval(&bind, &field, &_14$$15, PH_COPY | PH_SEPARATE); - continue; - } - ZEPHIR_INIT_NVAR(&_15$$14); - ZEPHIR_CONCAT_SVSVS(&_15$$14, "[", &field, "] = :", &field, ":"); - zephir_array_append(&conditions, &_15$$14, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 317); - zephir_array_update_zval(&bind, &field, &value, PH_COPY | PH_SEPARATE); - } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_81$$39); + ZEPHIR_CONCAT_SV(&_81$$39, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_81$$39); } - ZEPHIR_CALL_METHOD(NULL, &data, "next", NULL, 0); + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Postgresql.zep", 253); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&field); - } - ZEPHIR_INIT_VAR(&criteria); - object_init_ex(&criteria, phalcon_mvc_model_criteria_ce); - if (zephir_has_constructor(&criteria)) { - ZEPHIR_CALL_METHOD(NULL, &criteria, "__construct", NULL, 0); - zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&reference); } - - ZEPHIR_CALL_METHOD(NULL, &criteria, "setdi", NULL, 428, container); - zephir_check_call_status(); - if (zephir_fast_count_int(&conditions)) { - ZEPHIR_INIT_VAR(&_16$$16); - ZEPHIR_INIT_VAR(&_17$$16); - ZEPHIR_CONCAT_SVS(&_17$$16, " ", &operator, " "); - zephir_fast_join(&_16$$16, &_17$$16, &conditions); - ZEPHIR_CALL_METHOD(NULL, &criteria, "where", NULL, 437, &_16$$16); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &criteria, "bind", NULL, 438, &bind); + ZEPHIR_INIT_VAR(&_82); + zephir_fast_join_str(&_82, SL(",\n\t"), &createLines); + ZEPHIR_INIT_VAR(&_83); + ZEPHIR_CONCAT_VS(&_83, &_82, "\n)"); + zephir_concat_self(&sql, &_83); + if (zephir_array_isset_string(&definition, SL("options"))) { + ZEPHIR_CALL_METHOD(&_84$$40, this_ptr, "gettableoptions", NULL, 0, &definition); zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_85$$40); + ZEPHIR_CONCAT_SV(&_85$$40, " ", &_84$$40); + zephir_concat_self(&sql, &_85$$40); } - ZEPHIR_CALL_METHOD(NULL, &criteria, "setmodelname", NULL, 429, &modelName); - zephir_check_call_status(); - RETURN_CCTOR(&criteria); + ZEPHIR_INIT_VAR(&_86); + ZEPHIR_CONCAT_SV(&_86, ";", &indexSqlAfterCreate); + zephir_concat_self(&sql, &_86); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getColumns) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, createView) { - zval columns, _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *viewName_param = NULL, *definition_param = NULL, *schemaName_param = NULL, viewSql, _0; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&viewSql); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&definition); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(viewName) + Z_PARAM_ARRAY(definition) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&columns, &_0, SL("columns"), 1))) { - RETURN_NULL(); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 1, &viewName_param, &definition_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); } - RETURN_CTORW(&columns); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getConditions) -{ - zval conditions, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&_0); - - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&conditions, &_0, SL("conditions"), 1))) { - RETURN_NULL(); + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); } - RETURN_CTORW(&conditions); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getDI) -{ - zval _0, _1; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch_string(&_1, &_0, SL("di"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Criteria.zep", 379); - RETURN_CTORW(&_1); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getGroupBy) -{ - zval group, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&group); - ZVAL_UNDEF(&_0); - - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&group, &_0, SL("group"), 1))) { - RETURN_NULL(); + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); } - RETURN_CTORW(&group); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getHaving) -{ - zval having, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&having); - ZVAL_UNDEF(&_0); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&having, &_0, SL("having"), 1))) { - RETURN_NULL(); + ZEPHIR_OBS_VAR(&viewSql); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&viewSql, &definition, SL("sql"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'sql' is required in the definition array", "phalcon/Db/Dialect/Postgresql.zep", 276); + return; } - RETURN_CTORW(&having); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSV(return_value, "CREATE VIEW ", &_0, " AS ", &viewSql); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getLimit) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, describeColumns) { - zval limit, _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&limit); - ZVAL_UNDEF(&_0); - + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&limit, &_0, SL("limit"), 1))) { - RETURN_NULL(); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - RETURN_CTORW(&limit); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getModelName) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "model"); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getOrderBy) -{ - zval order, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&order); - ZVAL_UNDEF(&_0); - - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&order, &_0, SL("order"), 1))) { - RETURN_NULL(); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - RETURN_CTORW(&order); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getParams) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "params"); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, getWhere) -{ - zval conditions, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&_0); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_string_fetch(&conditions, &_0, SL("conditions"), 1))) { - RETURN_NULL(); + if (ZEPHIR_IS_NULL(&schema)) { + ZEPHIR_INIT_NVAR(&schema); + ZVAL_STRING(&schema, "public"); } - RETURN_CTORW(&conditions); + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT DISTINCT c.column_name AS Field, c.data_type AS Type, c.character_maximum_length AS Size, c.numeric_precision AS NumericSize, c.numeric_scale AS NumericScale, c.is_nullable AS Null, CASE WHEN pkc.column_name NOTNULL THEN 'PRI' ELSE '' END AS Key, CASE WHEN c.data_type LIKE '%int%' AND c.column_default LIKE '%nextval%' THEN 'auto_increment' ELSE '' END AS Extra, c.ordinal_position AS Position, c.column_default, des.description FROM information_schema.columns c LEFT JOIN ( SELECT kcu.column_name, kcu.table_name, kcu.table_schema FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage kcu on (kcu.constraint_name = tc.constraint_name and kcu.table_name=tc.table_name and kcu.table_schema=tc.table_schema) WHERE tc.constraint_type='PRIMARY KEY') pkc ON (c.column_name=pkc.column_name AND c.table_schema = pkc.table_schema AND c.table_name=pkc.table_name) LEFT JOIN ( SELECT objsubid, description, relname, nspname FROM pg_description JOIN pg_class ON pg_description.objoid = pg_class.oid JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid ) des ON ( des.objsubid = C.ordinal_position AND C.table_schema = des.nspname AND C.TABLE_NAME = des.relname ) WHERE c.table_schema='", &schema, "' AND c.table_name='", &table, "' ORDER BY c.ordinal_position"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, groupBy) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, describeIndexes) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *group, group_sub, _0; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&group_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(group) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &group); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "group"); - zephir_update_property_array(this_ptr, SL("params"), &_0, group); - RETURN_THIS(); + ZEPHIR_CONCAT_SVS(return_value, "SELECT 0 as c0, t.relname as table_name, i.relname as key_name, 3 as c3, a.attname as column_name FROM pg_class t, pg_class i, pg_index ix, pg_attribute a WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey) AND t.relkind = 'r' AND t.relname = '", &table, "' ORDER BY t.relname, i.relname;"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, having) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, describeReferences) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *having, having_sub, _0; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&having_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(having) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &having); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "having"); - zephir_update_property_array(this_ptr, SL("params"), &_0, having); - RETURN_THIS(); + if (ZEPHIR_IS_NULL(&schema)) { + ZEPHIR_INIT_NVAR(&schema); + ZVAL_STRING(&schema, "public"); + } + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT DISTINCT tc.table_name AS TABLE_NAME, kcu.column_name AS COLUMN_NAME, tc.constraint_name AS CONSTRAINT_NAME, tc.table_catalog AS REFERENCED_TABLE_SCHEMA, ccu.table_name AS REFERENCED_TABLE_NAME, ccu.column_name AS REFERENCED_COLUMN_NAME, rc.update_rule AS UPDATE_RULE, rc.delete_rule AS DELETE_RULE FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name AND tc.constraint_type = 'FOREIGN KEY' WHERE constraint_type = 'FOREIGN KEY' AND tc.table_schema = '", &schema, "' AND tc.table_name='", &table, "'"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, innerJoin) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model_param = NULL, *conditions = NULL, conditions_sub, *alias = NULL, alias_sub, __$null, _0; - zval model; + zval *tableName_param = NULL, *schemaName_param = NULL, *columnName_param = NULL, _0; + zval tableName, schemaName, columnName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&conditions_sub); - ZVAL_UNDEF(&alias_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&columnName); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(model) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(conditions) - Z_PARAM_ZVAL_OR_NULL(alias) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(columnName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &model_param, &conditions, &alias); - if (UNEXPECTED(Z_TYPE_P(model_param) != IS_STRING && Z_TYPE_P(model_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'model' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &columnName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(model_param) == IS_STRING)) { - zephir_get_strval(&model, model_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&model); + ZEPHIR_INIT_VAR(&tableName); } - if (!conditions) { - conditions = &conditions_sub; - conditions = &__$null; + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - if (!alias) { - alias = &alias_sub; - alias = &__$null; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(columnName_param) != IS_STRING && Z_TYPE_P(columnName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'columnName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(columnName_param) == IS_STRING)) { + zephir_get_strval(&columnName, columnName_param); + } else { + ZEPHIR_INIT_VAR(&columnName); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "INNER"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "join", NULL, 0, &model, conditions, alias, &_0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP COLUMN \"", &columnName, "\""); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, inWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval values, bindParams, bindKeys; - zval *expr_param = NULL, *values_param = NULL, hiddenParam, value, *_1, _2, _5, _6, _3$$4, _4$$5; - zval expr, key, queryKey, _0$$3; + zval *tableName_param = NULL, *schemaName_param = NULL, *referenceName_param = NULL, _0; + zval tableName, schemaName, referenceName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&queryKey); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&hiddenParam); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindKeys); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&referenceName); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(expr) - Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(referenceName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &expr_param, &values_param); - if (UNEXPECTED(Z_TYPE_P(expr_param) != IS_STRING && Z_TYPE_P(expr_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'expr' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &referenceName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(expr_param) == IS_STRING)) { - zephir_get_strval(&expr, expr_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&expr); + ZEPHIR_INIT_VAR(&tableName); } - ZEPHIR_OBS_COPY_OR_DUP(&values, values_param); - - - if (!(zephir_fast_count_int(&values))) { - ZEPHIR_INIT_VAR(&_0$$3); - ZEPHIR_CONCAT_VSV(&_0$$3, &expr, " != ", &expr); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "andwhere", NULL, 0, &_0$$3); - zephir_check_call_status(); - RETURN_THIS(); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_OBS_VAR(&hiddenParam); - zephir_read_property(&hiddenParam, this_ptr, ZEND_STRL("hiddenParamNumber"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - ZEPHIR_INIT_VAR(&bindKeys); - array_init(&bindKeys); - zephir_is_iterable(&values, 0, "phalcon/Mvc/Model/Criteria.zep", 559); - if (Z_TYPE_P(&values) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&values), _1) - { - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _1); - ZEPHIR_INIT_NVAR(&_3$$4); - ZEPHIR_CONCAT_SV(&_3$$4, "ACP", &hiddenParam); - zephir_get_strval(&key, &_3$$4); - ZEPHIR_INIT_NVAR(&queryKey); - ZEPHIR_CONCAT_SVS(&queryKey, ":", &key, ":"); - zephir_array_append(&bindKeys, &queryKey, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 549); - zephir_array_update_zval(&bindParams, &key, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_SEPARATE(&hiddenParam); - zephir_increment(&hiddenParam); - } ZEND_HASH_FOREACH_END(); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &values, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_4$$5); - ZEPHIR_CONCAT_SV(&_4$$5, "ACP", &hiddenParam); - zephir_get_strval(&key, &_4$$5); - ZEPHIR_INIT_NVAR(&queryKey); - ZEPHIR_CONCAT_SVS(&queryKey, ":", &key, ":"); - zephir_array_append(&bindKeys, &queryKey, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 549); - zephir_array_update_zval(&bindParams, &key, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_SEPARATE(&hiddenParam); - zephir_increment(&hiddenParam); - ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); - zephir_check_call_status(); - } + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_VAR(&_5); - zephir_fast_join_str(&_5, SL(", "), &bindKeys); - ZEPHIR_INIT_VAR(&_6); - ZEPHIR_CONCAT_VSVS(&_6, &expr, " IN (", &_5, ")"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "andwhere", NULL, 0, &_6, &bindParams); + if (UNEXPECTED(Z_TYPE_P(referenceName_param) != IS_STRING && Z_TYPE_P(referenceName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(referenceName_param) == IS_STRING)) { + zephir_get_strval(&referenceName, referenceName_param); + } else { + ZEPHIR_INIT_VAR(&referenceName); + } + + + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("hiddenParamNumber"), &hiddenParam); - RETURN_THIS(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP CONSTRAINT \"", &referenceName, "\""); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, join) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropIndex) { - zval join, _1$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model_param = NULL, *conditions = NULL, conditions_sub, *alias = NULL, alias_sub, *type = NULL, type_sub, __$null, mergedJoins, currentJoins, _0, _4, _2$$5, _3$$6; - zval model; + zval *tableName_param = NULL, *schemaName_param = NULL, *indexName_param = NULL; + zval tableName, schemaName, indexName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&conditions_sub); - ZVAL_UNDEF(&alias_sub); - ZVAL_UNDEF(&type_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&mergedJoins); - ZVAL_UNDEF(¤tJoins); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$6); - ZVAL_UNDEF(&join); - ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_STR(model) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(conditions) - Z_PARAM_ZVAL_OR_NULL(alias) - Z_PARAM_ZVAL_OR_NULL(type) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(indexName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &model_param, &conditions, &alias, &type); - if (UNEXPECTED(Z_TYPE_P(model_param) != IS_STRING && Z_TYPE_P(model_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'model' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &indexName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(model_param) == IS_STRING)) { - zephir_get_strval(&model, model_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&model); + ZEPHIR_INIT_VAR(&tableName); } - if (!conditions) { - conditions = &conditions_sub; - conditions = &__$null; + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - if (!alias) { - alias = &alias_sub; - alias = &__$null; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - if (!type) { - type = &type_sub; - type = &__$null; + if (UNEXPECTED(Z_TYPE_P(indexName_param) != IS_STRING && Z_TYPE_P(indexName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'indexName' must be of the type string")); + RETURN_MM_NULL(); } - - - ZEPHIR_INIT_VAR(&join); - zephir_create_array(&join, 4, 0); - zephir_array_fast_append(&join, &model); - zephir_array_fast_append(&join, conditions); - zephir_array_fast_append(&join, alias); - zephir_array_fast_append(&join, type); - ZEPHIR_OBS_VAR(¤tJoins); - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_string_fetch(¤tJoins, &_0, SL("joins"), 0)) { - if (Z_TYPE_P(¤tJoins) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&_1$$4); - zephir_create_array(&_1$$4, 1, 0); - zephir_array_fast_append(&_1$$4, &join); - ZEPHIR_INIT_VAR(&mergedJoins); - zephir_fast_array_merge(&mergedJoins, ¤tJoins, &_1$$4); - } else { - ZEPHIR_INIT_VAR(&_2$$5); - zephir_create_array(&_2$$5, 1, 0); - zephir_array_fast_append(&_2$$5, &join); - ZEPHIR_CPY_WRT(&mergedJoins, &_2$$5); - } + if (EXPECTED(Z_TYPE_P(indexName_param) == IS_STRING)) { + zephir_get_strval(&indexName, indexName_param); } else { - ZEPHIR_INIT_VAR(&_3$$6); - zephir_create_array(&_3$$6, 1, 0); - zephir_array_fast_append(&_3$$6, &join); - ZEPHIR_CPY_WRT(&mergedJoins, &_3$$6); + ZEPHIR_INIT_VAR(&indexName); } - ZEPHIR_INIT_VAR(&_4); - ZVAL_STRING(&_4, "joins"); - zephir_update_property_array(this_ptr, SL("params"), &_4, &mergedJoins); - RETURN_THIS(); + + + ZEPHIR_CONCAT_SVS(return_value, "DROP INDEX \"", &indexName, "\""); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, leftJoin) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model_param = NULL, *conditions = NULL, conditions_sub, *alias = NULL, alias_sub, __$null, _0; - zval model; + zval *tableName_param = NULL, *schemaName_param = NULL, _0; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&conditions_sub); - ZVAL_UNDEF(&alias_sub); - ZVAL_NULL(&__$null); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(model) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(conditions) - Z_PARAM_ZVAL_OR_NULL(alias) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &model_param, &conditions, &alias); - if (UNEXPECTED(Z_TYPE_P(model_param) != IS_STRING && Z_TYPE_P(model_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'model' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(model_param) == IS_STRING)) { - zephir_get_strval(&model, model_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&model); + ZEPHIR_INIT_VAR(&tableName); } - if (!conditions) { - conditions = &conditions_sub; - conditions = &__$null; + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - if (!alias) { - alias = &alias_sub; - alias = &__$null; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "LEFT"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "join", NULL, 0, &model, conditions, alias, &_0); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); + ZEPHIR_CONCAT_SVSVS(return_value, "ALTER TABLE ", &_0, " DROP CONSTRAINT \"", &tableName, "_PRIMARY\""); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, limit) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropTable) { - zval _5$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *limit_param = NULL, *offset_param = NULL, _0, _1, _2, _3$$4, _4$$4, _6$$5; - zend_long limit, offset, ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool ifExists; + zval *tableName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, table; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_6$$5); - ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_LONG(limit) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(tableName) Z_PARAM_OPTIONAL - Z_PARAM_LONG(offset) + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &limit_param, &offset_param); - limit = zephir_get_intval(limit_param); - if (!offset_param) { - offset = 0; + zephir_fetch_params(1, 1, 2, &tableName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - offset = zephir_get_intval(offset_param); + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (!ifExists_param) { + ifExists = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); } - ZVAL_LONG(&_0, limit); - ZEPHIR_CALL_FUNCTION(&_1, "abs", NULL, 281, &_0); - zephir_check_call_status(); - limit = zephir_get_numberval(&_1); - ZVAL_LONG(&_0, offset); - ZEPHIR_CALL_FUNCTION(&_2, "abs", NULL, 281, &_0); + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - offset = zephir_get_numberval(&_2); - if (UNEXPECTED(limit == 0)) { - RETURN_THIS(); - } - if (offset == 0) { - ZEPHIR_INIT_VAR(&_3$$4); - ZVAL_STRING(&_3$$4, "limit"); - ZEPHIR_INIT_VAR(&_4$$4); - ZVAL_LONG(&_4$$4, limit); - zephir_update_property_array(this_ptr, SL("params"), &_3$$4, &_4$$4); - } else { - ZEPHIR_INIT_VAR(&_5$$5); - zephir_create_array(&_5$$5, 2, 0); - ZEPHIR_INIT_VAR(&_6$$5); - ZVAL_LONG(&_6$$5, limit); - zephir_array_update_string(&_5$$5, SL("number"), &_6$$5, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_6$$5); - ZVAL_LONG(&_6$$5, offset); - zephir_array_update_string(&_5$$5, SL("offset"), &_6$$5, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_6$$5); - ZVAL_STRING(&_6$$5, "limit"); - zephir_update_property_array(this_ptr, SL("params"), &_6$$5, &_5$$5); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE IF EXISTS ", &table); + RETURN_MM(); } - RETURN_THIS(); + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE ", &table); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, notBetweenWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, dropView) { - zval _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *expr_param = NULL, *minimum, minimum_sub, *maximum, maximum_sub, hiddenParam, nextHiddenParam, _0, _1; - zval expr, minimumKey, maximumKey, _2; + zend_bool ifExists; + zval *viewName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, view; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&minimumKey); - ZVAL_UNDEF(&maximumKey); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&minimum_sub); - ZVAL_UNDEF(&maximum_sub); - ZVAL_UNDEF(&hiddenParam); - ZVAL_UNDEF(&nextHiddenParam); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&view); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(expr) - Z_PARAM_ZVAL(minimum) - Z_PARAM_ZVAL(maximum) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &expr_param, &minimum, &maximum); - if (UNEXPECTED(Z_TYPE_P(expr_param) != IS_STRING && Z_TYPE_P(expr_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'expr' must be of the type string")); + zephir_fetch_params(1, 1, 2, &viewName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(expr_param) == IS_STRING)) { - zephir_get_strval(&expr, expr_param); + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); } else { - ZEPHIR_INIT_VAR(&expr); + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (!ifExists_param) { + ifExists = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); } - ZEPHIR_OBS_VAR(&hiddenParam); - zephir_read_property(&hiddenParam, this_ptr, ZEND_STRL("hiddenParamNumber"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&nextHiddenParam); - ZVAL_LONG(&nextHiddenParam, (zephir_get_numberval(&hiddenParam) + 1)); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_SV(&_0, "ACP", &hiddenParam); - zephir_get_strval(&minimumKey, &_0); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_CONCAT_SV(&_1, "ACP", &nextHiddenParam); - zephir_get_strval(&maximumKey, &_1); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSVSVS(&_2, &expr, " NOT BETWEEN :", &minimumKey, ": AND :", &maximumKey, ":"); - ZEPHIR_INIT_VAR(&_3); - zephir_create_array(&_3, 2, 0); - zephir_array_update_zval(&_3, &minimumKey, minimum, PH_COPY); - zephir_array_update_zval(&_3, &maximumKey, maximum, PH_COPY); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "andwhere", NULL, 0, &_2, &_3); + ZEPHIR_CALL_METHOD(&view, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); zephir_check_call_status(); - ZEPHIR_SEPARATE(&nextHiddenParam); - zephir_increment(&nextHiddenParam); - zephir_update_property_zval(this_ptr, ZEND_STRL("hiddenParamNumber"), &nextHiddenParam); - RETURN_THIS(); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW IF EXISTS ", &view); + RETURN_MM(); + } + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW ", &view); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, notInWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, getColumnDefinition) { + zval valueSql$$38; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_12 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval values, bindParams, bindKeys; - zval *expr_param = NULL, *values_param = NULL, hiddenParam, value, *_0, _1, _6, _7, _2$$3, _4$$4; - zval expr, key, _3$$3, _5$$4; + zval *column, column_sub, columnType, columnSql, typeValues, _0$$4, _1$$9, _2$$15, _3$$20, _4$$33, _5$$36, _6$$36, _7$$36, value$$38, *_8$$38, _9$$38, _17$$38, _18$$38, _19$$38, _20$$38, _10$$39, _11$$39, _13$$39, _14$$40, _15$$40, _16$$40, _21$$41, _22$$41, _23$$41; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&hiddenParam); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindKeys); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&columnSql); + ZVAL_UNDEF(&typeValues); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&_1$$9); + ZVAL_UNDEF(&_2$$15); + ZVAL_UNDEF(&_3$$20); + ZVAL_UNDEF(&_4$$33); + ZVAL_UNDEF(&_5$$36); + ZVAL_UNDEF(&_6$$36); + ZVAL_UNDEF(&_7$$36); + ZVAL_UNDEF(&value$$38); + ZVAL_UNDEF(&_9$$38); + ZVAL_UNDEF(&_17$$38); + ZVAL_UNDEF(&_18$$38); + ZVAL_UNDEF(&_19$$38); + ZVAL_UNDEF(&_20$$38); + ZVAL_UNDEF(&_10$$39); + ZVAL_UNDEF(&_11$$39); + ZVAL_UNDEF(&_13$$39); + ZVAL_UNDEF(&_14$$40); + ZVAL_UNDEF(&_15$$40); + ZVAL_UNDEF(&_16$$40); + ZVAL_UNDEF(&_21$$41); + ZVAL_UNDEF(&_22$$41); + ZVAL_UNDEF(&_23$$41); + ZVAL_UNDEF(&valueSql$$38); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(expr) - Z_PARAM_ARRAY(values) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &expr_param, &values_param); - if (UNEXPECTED(Z_TYPE_P(expr_param) != IS_STRING && Z_TYPE_P(expr_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'expr' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(expr_param) == IS_STRING)) { - zephir_get_strval(&expr, expr_param); - } else { - ZEPHIR_INIT_VAR(&expr); - } - ZEPHIR_OBS_COPY_OR_DUP(&values, values_param); + zephir_fetch_params(1, 1, 0, &column); - ZEPHIR_OBS_VAR(&hiddenParam); - zephir_read_property(&hiddenParam, this_ptr, ZEND_STRL("hiddenParamNumber"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - ZEPHIR_INIT_VAR(&bindKeys); - array_init(&bindKeys); - zephir_is_iterable(&values, 0, "phalcon/Mvc/Model/Criteria.zep", 742); - if (Z_TYPE_P(&values) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&values), _0) - { - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _0); - ZEPHIR_INIT_NVAR(&_2$$3); - ZEPHIR_CONCAT_SV(&_2$$3, "ACP", &hiddenParam); - zephir_get_strval(&key, &_2$$3); - ZEPHIR_INIT_NVAR(&_3$$3); - ZEPHIR_CONCAT_SVS(&_3$$3, ":", &key, ":"); - zephir_array_append(&bindKeys, &_3$$3, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 732); - zephir_array_update_zval(&bindParams, &key, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_SEPARATE(&hiddenParam); - zephir_increment(&hiddenParam); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1, &values, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&columnSql, this_ptr, "checkcolumntypesql", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnType, this_ptr, "checkcolumntype", NULL, 0, column); + zephir_check_call_status(); + do { + if (ZEPHIR_IS_LONG(&columnType, 14)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + ZEPHIR_CALL_METHOD(&_0$$4, column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_0$$4)) { + zephir_concat_self_str(&columnSql, SL("BIGSERIAL")); + } else { + zephir_concat_self_str(&columnSql, SL("BIGINT")); + } + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 8)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BOOLEAN")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 5)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("CHARACTER")); + } + ZEPHIR_CALL_METHOD(&_1$$9, this_ptr, "getcolumnsize", NULL, 0, column); zephir_check_call_status(); - if (!zend_is_true(&_1)) { - break; + zephir_concat_self(&columnSql, &_1$$9); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 1)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DATE")); } - ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 4)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TIMESTAMP")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 3)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("NUMERIC")); + } + ZEPHIR_CALL_METHOD(&_2$$15, this_ptr, "getcolumnsizeandscale", NULL, 0, column); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_4$$4); - ZEPHIR_CONCAT_SV(&_4$$4, "ACP", &hiddenParam); - zephir_get_strval(&key, &_4$$4); - ZEPHIR_INIT_NVAR(&_5$$4); - ZEPHIR_CONCAT_SVS(&_5$$4, ":", &key, ":"); - zephir_array_append(&bindKeys, &_5$$4, PH_SEPARATE, "phalcon/Mvc/Model/Criteria.zep", 732); - zephir_array_update_zval(&bindParams, &key, &value, PH_COPY | PH_SEPARATE); - ZEPHIR_SEPARATE(&hiddenParam); - zephir_increment(&hiddenParam); - ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); + zephir_concat_self(&columnSql, &_2$$15); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 7)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("FLOAT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 0)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + ZEPHIR_CALL_METHOD(&_3$$20, column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_3$$20)) { + zephir_concat_self_str(&columnSql, SL("SERIAL")); + } else { + zephir_concat_self_str(&columnSql, SL("INT")); + } + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 22)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("SMALLINT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 15)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("JSON")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 16)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("JSONB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 17)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TIMESTAMP")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 6)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 2)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("CHARACTER VARYING")); + } + ZEPHIR_CALL_METHOD(&_4$$33, this_ptr, "getcolumnsize", NULL, 0, column); zephir_check_call_status(); + zephir_concat_self(&columnSql, &_4$$33); + break; } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_VAR(&_6); - zephir_fast_join_str(&_6, SL(", "), &bindKeys); - ZEPHIR_INIT_VAR(&_7); - ZEPHIR_CONCAT_VSVS(&_7, &expr, " NOT IN (", &_6, ")"); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "andwhere", NULL, 0, &_7, &bindParams); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("hiddenParamNumber"), &hiddenParam); - RETURN_THIS(); + if (UNEXPECTED(ZEPHIR_IS_EMPTY(&columnSql))) { + ZEPHIR_INIT_VAR(&_5$$36); + object_init_ex(&_5$$36, phalcon_db_exception_ce); + ZEPHIR_CALL_METHOD(&_6$$36, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_7$$36); + ZEPHIR_CONCAT_SV(&_7$$36, "Unrecognized PostgreSQL data type at column ", &_6$$36); + ZEPHIR_CALL_METHOD(NULL, &_5$$36, "__construct", NULL, 29, &_7$$36); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5$$36, "phalcon/Db/Dialect/Postgresql.zep", 511); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&typeValues, column, "gettypevalues", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&typeValues))) { + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&valueSql$$38); + zephir_is_iterable(&typeValues, 0, "phalcon/Db/Dialect/Postgresql.zep", 526); + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&typeValues), _8$$38) + { + ZEPHIR_INIT_NVAR(&value$$38); + ZVAL_COPY(&value$$38, _8$$38); + ZEPHIR_INIT_NVAR(&_10$$39); + ZVAL_STRING(&_10$$39, "\'"); + ZEPHIR_CALL_FUNCTION(&_11$$39, "addcslashes", &_12, 211, &value$$38, &_10$$39); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_13$$39); + ZEPHIR_CONCAT_SVS(&_13$$39, "'", &_11$$39, "', "); + zephir_concat_self(&valueSql$$38, &_13$$39); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &typeValues, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_9$$38, &typeValues, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_9$$38)) { + break; + } + ZEPHIR_CALL_METHOD(&value$$38, &typeValues, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_14$$40); + ZVAL_STRING(&_14$$40, "\'"); + ZEPHIR_CALL_FUNCTION(&_15$$40, "addcslashes", &_12, 211, &value$$38, &_14$$40); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_16$$40); + ZEPHIR_CONCAT_SVS(&_16$$40, "'", &_15$$40, "', "); + zephir_concat_self(&valueSql$$38, &_16$$40); + ZEPHIR_CALL_METHOD(NULL, &typeValues, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value$$38); + ZVAL_LONG(&_17$$38, 0); + ZVAL_LONG(&_18$$38, -2); + ZEPHIR_INIT_VAR(&_19$$38); + zephir_substr(&_19$$38, &valueSql$$38, 0 , -2 , 0); + ZEPHIR_INIT_VAR(&_20$$38); + ZEPHIR_CONCAT_SVS(&_20$$38, "(", &_19$$38, ")"); + zephir_concat_self(&columnSql, &_20$$38); + } else { + ZEPHIR_INIT_VAR(&_21$$41); + ZVAL_STRING(&_21$$41, "\'"); + ZEPHIR_CALL_FUNCTION(&_22$$41, "addcslashes", &_12, 211, &typeValues, &_21$$41); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_23$$41); + ZEPHIR_CONCAT_SVS(&_23$$41, "('", &_22$$41, "')"); + zephir_concat_self(&columnSql, &_23$$41); + } + } + } while(0); + + RETURN_CCTOR(&columnSql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, orderBy) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, listTables) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *orderColumns_param = NULL, _0; - zval orderColumns; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&orderColumns); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(orderColumns) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &orderColumns_param); - if (UNEXPECTED(Z_TYPE_P(orderColumns_param) != IS_STRING && Z_TYPE_P(orderColumns_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'orderColumns' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(orderColumns_param) == IS_STRING)) { - zephir_get_strval(&orderColumns, orderColumns_param); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); } else { - ZEPHIR_INIT_VAR(&orderColumns); + zephir_get_strval(&schemaName, schemaName_param); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "order"); - zephir_update_property_array(this_ptr, SL("params"), &_0, &orderColumns); - RETURN_THIS(); + if (ZEPHIR_IS_NULL(&schemaName)) { + ZEPHIR_INIT_NVAR(&schemaName); + ZVAL_STRING(&schemaName, "public"); + } + ZEPHIR_CONCAT_SVS(return_value, "SELECT table_name FROM information_schema.tables WHERE table_schema = '", &schemaName, "' ORDER BY table_name"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, orWhere) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, listViews) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *conditions_param = NULL, *bindParams = NULL, bindParams_sub, *bindTypes = NULL, bindTypes_sub, __$null, currentConditions, _0, _1$$3; - zval conditions; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&bindParams_sub); - ZVAL_UNDEF(&bindTypes_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(¤tConditions); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(conditions) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(bindParams) - Z_PARAM_ZVAL_OR_NULL(bindTypes) + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &conditions_param, &bindParams, &bindTypes); - if (UNEXPECTED(Z_TYPE_P(conditions_param) != IS_STRING && Z_TYPE_P(conditions_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'conditions' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(conditions_param) == IS_STRING)) { - zephir_get_strval(&conditions, conditions_param); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); } else { - ZEPHIR_INIT_VAR(&conditions); - } - if (!bindParams) { - bindParams = &bindParams_sub; - bindParams = &__$null; - } - if (!bindTypes) { - bindTypes = &bindTypes_sub; - bindTypes = &__$null; + zephir_get_strval(&schemaName, schemaName_param); } - ZEPHIR_OBS_VAR(¤tConditions); - zephir_read_property(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_string_fetch(¤tConditions, &_0, SL("conditions"), 0)) { - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_CONCAT_SVSVS(&_1$$3, "(", ¤tConditions, ") OR (", &conditions, ")"); - zephir_get_strval(&conditions, &_1$$3); + if (ZEPHIR_IS_NULL(&schemaName)) { + ZEPHIR_INIT_NVAR(&schemaName); + ZVAL_STRING(&schemaName, "public"); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "where", NULL, 0, &conditions, bindParams, bindTypes); - zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "SELECT viewname AS view_name FROM pg_views WHERE schemaname = '", &schemaName, "' ORDER BY view_name"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, rightJoin) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, modifyColumn) { + zend_bool _26$$10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model_param = NULL, *conditions = NULL, conditions_sub, *alias = NULL, alias_sub, __$null, _0; - zval model; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, *currentColumn = NULL, currentColumn_sub, __$null, defaultValue, columnDefinition, _0, _1, _2, _3, _7, _8, _11, _12, _18, _23, _24, _4$$4, _5$$4, _6$$4, _9$$5, _10$$5, _13$$6, _14$$7, _15$$7, _16$$8, _17$$8, _19$$9, _20$$9, _21$$9, _22$$9, _25$$10, _27$$10, _30$$10, _28$$11, _29$$11, _31$$12, _32$$13, _33$$13, _34$$14, _35$$14; + zval tableName, schemaName, sql, sqlAlterTable; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&conditions_sub); - ZVAL_UNDEF(&alias_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&sqlAlterTable); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(¤tColumn_sub); ZVAL_NULL(&__$null); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&columnDefinition); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_8); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_18); + ZVAL_UNDEF(&_23); + ZVAL_UNDEF(&_24); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_13$$6); + ZVAL_UNDEF(&_14$$7); + ZVAL_UNDEF(&_15$$7); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_19$$9); + ZVAL_UNDEF(&_20$$9); + ZVAL_UNDEF(&_21$$9); + ZVAL_UNDEF(&_22$$9); + ZVAL_UNDEF(&_25$$10); + ZVAL_UNDEF(&_27$$10); + ZVAL_UNDEF(&_30$$10); + ZVAL_UNDEF(&_28$$11); + ZVAL_UNDEF(&_29$$11); + ZVAL_UNDEF(&_31$$12); + ZVAL_UNDEF(&_32$$13); + ZVAL_UNDEF(&_33$$13); + ZVAL_UNDEF(&_34$$14); + ZVAL_UNDEF(&_35$$14); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(model) + ZEND_PARSE_PARAMETERS_START(3, 4) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(conditions) - Z_PARAM_ZVAL_OR_NULL(alias) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(currentColumn, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &model_param, &conditions, &alias); - if (UNEXPECTED(Z_TYPE_P(model_param) != IS_STRING && Z_TYPE_P(model_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'model' must be of the type string")); + zephir_fetch_params(1, 3, 1, &tableName_param, &schemaName_param, &column, ¤tColumn); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(model_param) == IS_STRING)) { - zephir_get_strval(&model, model_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&model); + ZEPHIR_INIT_VAR(&tableName); } - if (!conditions) { - conditions = &conditions_sub; - conditions = &__$null; + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - if (!alias) { - alias = &alias_sub; - alias = &__$null; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (!currentColumn) { + currentColumn = ¤tColumn_sub; + ZEPHIR_CPY_WRT(currentColumn, &__$null); + } else { + ZEPHIR_SEPARATE_PARAM(currentColumn); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "RIGHT"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "join", NULL, 0, &model, conditions, alias, &_0); + ZEPHIR_INIT_VAR(&sql); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", NULL, 0, column); zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SV(&_1, "ALTER TABLE ", &_0); + zephir_get_strval(&sqlAlterTable, &_1); + if (Z_TYPE_P(currentColumn) != IS_OBJECT) { + ZEPHIR_CPY_WRT(currentColumn, column); + } + ZEPHIR_CALL_METHOD(&_2, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, currentColumn, "getname", NULL, 0); + zephir_check_call_status(); + if (!ZEPHIR_IS_IDENTICAL(&_2, &_3)) { + ZEPHIR_CALL_METHOD(&_4$$4, currentColumn, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$4, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6$$4); + ZEPHIR_CONCAT_VSVSVS(&_6$$4, &sqlAlterTable, " RENAME COLUMN \"", &_4$$4, "\" TO \"", &_5$$4, "\";"); + zephir_concat_self(&sql, &_6$$4); + } + ZEPHIR_CALL_METHOD(&_7, column, "gettype", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_8, currentColumn, "gettype", NULL, 0); + zephir_check_call_status(); + if (!ZEPHIR_IS_IDENTICAL(&_7, &_8)) { + ZEPHIR_CALL_METHOD(&_9$$5, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_10$$5); + ZEPHIR_CONCAT_VSVSVS(&_10$$5, &sqlAlterTable, " ALTER COLUMN \"", &_9$$5, "\" TYPE ", &columnDefinition, ";"); + zephir_concat_self(&sql, &_10$$5); + } + ZEPHIR_CALL_METHOD(&_11, column, "isnotnull", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_12, currentColumn, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (!ZEPHIR_IS_IDENTICAL(&_11, &_12)) { + ZEPHIR_CALL_METHOD(&_13$$6, column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_13$$6)) { + ZEPHIR_CALL_METHOD(&_14$$7, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_15$$7); + ZEPHIR_CONCAT_VSVS(&_15$$7, &sqlAlterTable, " ALTER COLUMN \"", &_14$$7, "\" SET NOT NULL;"); + zephir_concat_self(&sql, &_15$$7); + } else { + ZEPHIR_CALL_METHOD(&_16$$8, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_17$$8); + ZEPHIR_CONCAT_VSVS(&_17$$8, &sqlAlterTable, " ALTER COLUMN \"", &_16$$8, "\" DROP NOT NULL;"); + zephir_concat_self(&sql, &_17$$8); + } + } + ZEPHIR_CALL_METHOD(&_18, column, "getcomment", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_18)) { + ZEPHIR_CALL_METHOD(&_19$$9, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_20$$9, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_21$$9, column, "getcomment", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_22$$9); + ZEPHIR_CONCAT_SVSVSVS(&_22$$9, "COMMENT ON COLUMN ", &_19$$9, ".\"", &_20$$9, "\" IS '", &_21$$9, "';"); + zephir_concat_self(&sql, &_22$$9); + } + ZEPHIR_CALL_METHOD(&_23, column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_24, currentColumn, "getdefault", NULL, 0); + zephir_check_call_status(); + if (!ZEPHIR_IS_IDENTICAL(&_23, &_24)) { + ZEPHIR_CALL_METHOD(&_25$$10, column, "getdefault", NULL, 0); + zephir_check_call_status(); + _26$$10 = ZEPHIR_IS_EMPTY(&_25$$10); + if (_26$$10) { + ZEPHIR_CALL_METHOD(&_27$$10, currentColumn, "getdefault", NULL, 0); + zephir_check_call_status(); + _26$$10 = !(ZEPHIR_IS_EMPTY(&_27$$10)); + } + if (_26$$10) { + ZEPHIR_CALL_METHOD(&_28$$11, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_29$$11); + ZEPHIR_CONCAT_VSVS(&_29$$11, &sqlAlterTable, " ALTER COLUMN \"", &_28$$11, "\" DROP DEFAULT;"); + zephir_concat_self(&sql, &_29$$11); + } + ZEPHIR_CALL_METHOD(&_30$$10, column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_30$$10)) { + ZEPHIR_CALL_METHOD(&defaultValue, this_ptr, "castdefault", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_31$$12); + zephir_fast_strtoupper(&_31$$12, &columnDefinition); + if (zephir_memnstr_str(&_31$$12, SL("BOOLEAN"), "phalcon/Db/Dialect/Postgresql.zep", 616)) { + ZEPHIR_CALL_METHOD(&_32$$13, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_33$$13); + ZEPHIR_CONCAT_SVSV(&_33$$13, " ALTER COLUMN \"", &_32$$13, "\" SET DEFAULT ", &defaultValue); + zephir_concat_self(&sql, &_33$$13); + } else { + ZEPHIR_CALL_METHOD(&_34$$14, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_35$$14); + ZEPHIR_CONCAT_VSVSV(&_35$$14, &sqlAlterTable, " ALTER COLUMN \"", &_34$$14, "\" SET DEFAULT ", &defaultValue); + zephir_concat_self(&sql, &_35$$14); + } + } + } + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, setDI) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, sharedLock) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *container, container_sub, _0; + zval *sqlQuery_param = NULL; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlQuery); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &container); - - - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "di"); - zephir_update_property_array(this_ptr, SL("params"), &_0, container); - ZEPHIR_MM_RESTORE(); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } + + + RETURN_CTOR(&sqlQuery); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, setModelName) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, tableExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *modelName_param = NULL; - zval modelName; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(modelName) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &modelName_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 1, 1, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("model"), &modelName); - RETURN_THIS(); + if (ZEPHIR_IS_NULL(&schemaName)) { + ZEPHIR_INIT_NVAR(&schemaName); + ZVAL_STRING(&schemaName, "public"); + } + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM information_schema.tables WHERE table_schema = '", &schemaName, "' AND table_name='", &tableName, "'"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, sharedLock) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, tableOptions) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *sharedLock_param = NULL, _0, _1; - zend_bool sharedLock; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(sharedLock) + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, &sharedLock_param); - if (!sharedLock_param) { - sharedLock = 1; + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - sharedLock = zephir_get_boolval(sharedLock_param); + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "shared_lock"); - ZEPHIR_INIT_VAR(&_1); - ZVAL_BOOL(&_1, sharedLock); - zephir_update_property_array(this_ptr, SL("params"), &_0, &_1); - RETURN_THIS(); + RETURN_MM_STRING(""); } -static PHP_METHOD(Phalcon_Mvc_Model_Criteria, where) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, truncateTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *conditions_param = NULL, *bindParams = NULL, bindParams_sub, *bindTypes = NULL, bindTypes_sub, __$null, currentBindParams, currentBindTypes, _0, _1$$3, _2$$4, _3$$4, _4$$5, _5$$6, _6$$7, _7$$7, _8$$8; - zval conditions; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, table; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&bindParams_sub); - ZVAL_UNDEF(&bindTypes_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(¤tBindParams); - ZVAL_UNDEF(¤tBindTypes); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_4$$5); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_6$$7); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_8$$8); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(conditions) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(bindParams) - Z_PARAM_ZVAL_OR_NULL(bindTypes) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &conditions_param, &bindParams, &bindTypes); - if (UNEXPECTED(Z_TYPE_P(conditions_param) != IS_STRING && Z_TYPE_P(conditions_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'conditions' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(conditions_param) == IS_STRING)) { - zephir_get_strval(&conditions, conditions_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&conditions); + ZEPHIR_INIT_VAR(&tableName); } - if (!bindParams) { - bindParams = &bindParams_sub; - bindParams = &__$null; + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - if (!bindTypes) { - bindTypes = &bindTypes_sub; - bindTypes = &__$null; + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "conditions"); - zephir_update_property_array(this_ptr, SL("params"), &_0, &conditions); - if (Z_TYPE_P(bindParams) == IS_ARRAY) { - ZEPHIR_OBS_VAR(¤tBindParams); - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_string_fetch(¤tBindParams, &_1$$3, SL("bind"), 0)) { - ZEPHIR_INIT_VAR(&_2$$4); - zephir_fast_array_merge(&_2$$4, ¤tBindParams, bindParams); - ZEPHIR_INIT_VAR(&_3$$4); - ZVAL_STRING(&_3$$4, "bind"); - zephir_update_property_array(this_ptr, SL("params"), &_3$$4, &_2$$4); - } else { - ZEPHIR_INIT_VAR(&_4$$5); - ZVAL_STRING(&_4$$5, "bind"); - zephir_update_property_array(this_ptr, SL("params"), &_4$$5, bindParams); - } - } - if (Z_TYPE_P(bindTypes) == IS_ARRAY) { - ZEPHIR_OBS_VAR(¤tBindTypes); - zephir_read_property(&_5$$6, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_string_fetch(¤tBindTypes, &_5$$6, SL("bindTypes"), 0)) { - ZEPHIR_INIT_VAR(&_6$$7); - zephir_fast_array_merge(&_6$$7, ¤tBindTypes, bindTypes); - ZEPHIR_INIT_VAR(&_7$$7); - ZVAL_STRING(&_7$$7, "bindTypes"); - zephir_update_property_array(this_ptr, SL("params"), &_7$$7, &_6$$7); - } else { - ZEPHIR_INIT_VAR(&_8$$8); - ZVAL_STRING(&_8$$8, "bindTypes"); - zephir_update_property_array(this_ptr, SL("params"), &_8$$8, bindTypes); - } + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + } else { + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName); + zephir_check_call_status(); } - RETURN_THIS(); + ZEPHIR_CONCAT_SV(return_value, "TRUNCATE TABLE ", &table); + RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Mvc_Model_Criteria(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, viewExists) { - zval _0, _1$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("params"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("params"), &_1$$3); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); - } -} - - - + zval *viewName_param = NULL, *schemaName_param = NULL; + zval viewName, schemaName; + zval *this_ptr = getThis(); -#ifdef HAVE_CONFIG_H + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); #endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &viewName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (ZEPHIR_IS_NULL(&schemaName)) { + ZEPHIR_INIT_NVAR(&schemaName); + ZVAL_STRING(&schemaName, "public"); + } + ZEPHIR_CONCAT_SVSVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM pg_views WHERE viewname='", &viewName, "' AND schemaname='", &schemaName, "'"); + RETURN_MM(); +} -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_CriteriaInterface) +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, castDefault) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, CriteriaInterface, phalcon, mvc_model_criteriainterface, phalcon_mvc_model_criteriainterface_method_entry); + zend_bool _2, _3, _4, _5; + zval preparedValue, _6$$5; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, defaultValue, columnDefinition, columnType, _0, _1, _7$$6, _8$$6, _9$$6; + zval *this_ptr = getThis(); - return SUCCESS; -} + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&columnDefinition); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_8$$6); + ZVAL_UNDEF(&_9$$6); + ZVAL_UNDEF(&preparedValue); + ZVAL_UNDEF(&_6$$5); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, andWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, betweenWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, bind); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, bindTypes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, cache); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, conditions); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, distinct); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, execute); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, forUpdate); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getColumns); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getConditions); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getGroupBy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getHaving); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getLimit); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getModelName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getOrderBy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getParams); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, getWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, groupBy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, having); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, innerJoin); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, inWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, leftJoin); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, limit); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, notBetweenWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, notInWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, orderBy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, orWhere); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, rightJoin); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, setModelName); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, sharedLock); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_CriteriaInterface, where); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &column); -#ifdef HAVE_CONFIG_H -#endif + ZEPHIR_CALL_METHOD(&defaultValue, column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnDefinition, this_ptr, "getcolumndefinition", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnType, column, "gettype", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_0); + zephir_fast_strtoupper(&_0, &columnDefinition); + if (zephir_memnstr_str(&_0, SL("BOOLEAN"), "phalcon/Db/Dialect/Postgresql.zep", 699)) { + RETURN_CCTOR(&defaultValue); + } + ZEPHIR_INIT_VAR(&_1); + zephir_fast_strtoupper(&_1, &defaultValue); + if (zephir_memnstr_str(&_1, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Postgresql.zep", 703)) { + RETURN_MM_STRING("CURRENT_TIMESTAMP"); + } + _2 = ZEPHIR_IS_LONG_IDENTICAL(&columnType, 0); + if (!(_2)) { + _2 = ZEPHIR_IS_LONG_IDENTICAL(&columnType, 14); + } + _3 = _2; + if (!(_3)) { + _3 = ZEPHIR_IS_LONG_IDENTICAL(&columnType, 3); + } + _4 = _3; + if (!(_4)) { + _4 = ZEPHIR_IS_LONG_IDENTICAL(&columnType, 7); + } + _5 = _4; + if (!(_5)) { + _5 = ZEPHIR_IS_LONG_IDENTICAL(&columnType, 9); + } + if (_5) { + zephir_cast_to_string(&_6$$5, &defaultValue); + ZEPHIR_CPY_WRT(&preparedValue, &_6$$5); + } else { + ZEPHIR_INIT_VAR(&_7$$6); + ZVAL_STRING(&_7$$6, "\'"); + ZEPHIR_CALL_FUNCTION(&_8$$6, "addcslashes", NULL, 211, &defaultValue, &_7$$6); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_9$$6); + ZEPHIR_CONCAT_SVS(&_9$$6, "'", &_8$$6, "'"); + zephir_get_strval(&preparedValue, &_9$$6); + } + RETURN_CTOR(&preparedValue); +} +static PHP_METHOD(Phalcon_Db_Dialect_Postgresql, getTableOptions) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *definition_param = NULL; + zval definition; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&definition); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(definition) + ZEND_PARSE_PARAMETERS_END(); +#endif + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &definition_param); + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Exception) -{ - ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Mvc\\Model, Exception, phalcon, mvc_model_exception, zend_ce_exception, NULL, 0); - return SUCCESS; + RETURN_MM_STRING(""); } @@ -56859,3515 +52977,3471 @@ ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Exception) -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Manager) +ZEPHIR_INIT_CLASS(Phalcon_Db_Dialect_Sqlite) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Manager, phalcon, mvc_model_manager, phalcon_mvc_model_manager_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("aliases"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("behaviors"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("belongsTo"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("belongsToSingle"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("builder"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("container"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("customEventsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("dynamicUpdate"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasMany"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasManySingle"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasManyToMany"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasManyToManySingle"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasOne"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasOneSingle"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasOneThrough"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("hasOneThroughSingle"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("initialized"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("keepSnapshots"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("lastInitialized"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("lastQuery"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("modelVisibility"), ZEND_ACC_PROTECTED); - zend_declare_property_string(phalcon_mvc_model_manager_ce, SL("prefix"), "", ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("readConnectionServices"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("sources"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("schemas"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("writeConnectionServices"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_manager_ce, SL("reusable"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_manager_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_Manager; + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Dialect, Sqlite, phalcon, db_dialect_sqlite, phalcon_db_dialect_ce, phalcon_db_dialect_sqlite_method_entry, 0); - zend_class_implements(phalcon_mvc_model_manager_ce, 1, phalcon_mvc_model_managerinterface_ce); - zend_class_implements(phalcon_mvc_model_manager_ce, 1, phalcon_di_injectionawareinterface_ce); - zend_class_implements(phalcon_mvc_model_manager_ce, 1, phalcon_events_eventsawareinterface_ce); + zend_declare_property_string(phalcon_db_dialect_sqlite_ce, SL("escapeChar"), "\"", ZEND_ACC_PROTECTED); return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, __destruct) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_0 = NULL; - zval *this_ptr = getThis(); - - - - ZEPHIR_MM_GROW(); - - phalcon_orm_destroy_cache(); - ZEPHIR_CALL_CE_STATIC(NULL, phalcon_mvc_model_query_ce, "clean", &_0, 0); - zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addBehavior) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, *behavior, behavior_sub, entityName, _0, _1$$3; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&behavior_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_OBJECT_OF_CLASS(behavior, phalcon_mvc_model_behaviorinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &behavior); - - - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - zephir_read_property(&_0, this_ptr, ZEND_STRL("behaviors"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_0, &entityName))) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_array(this_ptr, SL("behaviors"), &entityName, &_1$$3); - } - zephir_update_property_array_multi(this_ptr, SL("behaviors"), behavior, SL("za"), 2, &entityName); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addBelongsTo) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, addColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referencedModel, keyRelation; - zval *model, model_sub, *fields, fields_sub, *referencedModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, entityName, referencedEntity, relation, relations, alias, lowerAlias, singleRelations, _0, _1, _2, _3; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, defaultValue, _0, _1, _2, _3, _4, _5, _10, _11, _6$$3, _7$$5, _8$$5, _9$$5; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&referencedEntity); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&lowerAlias); - ZVAL_UNDEF(&singleRelations); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&defaultValue); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_10); + ZVAL_UNDEF(&_11); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 5) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 1, &model, &fields, &referencedModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &column); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&referencedModel); + ZEPHIR_INIT_VAR(&tableName); } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&referencedEntity); - zephir_fast_strtolower(&referencedEntity, &referencedModel); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSV(&_0, &entityName, "$", &referencedEntity); - zephir_get_strval(&keyRelation, &_0); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_1, this_ptr, ZEND_STRL("belongsTo"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&relations, &_1, &keyRelation, 0))) { - ZEPHIR_INIT_NVAR(&relations); - array_init(&relations); - } - if (Z_TYPE_P(referencedFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(referencedFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 296); - return; + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_1); + ZEPHIR_CONCAT_SVS(&_1, "ALTER TABLE ", &_0, " ADD COLUMN "); + zephir_get_strval(&sql, &_1); + ZEPHIR_CALL_METHOD(&_2, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "getcolumndefinition", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4); + ZEPHIR_CONCAT_SVSV(&_4, "\"", &_2, "\" ", &_3); + zephir_concat_self(&sql, &_4); + ZEPHIR_CALL_METHOD(&_5, column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_5)) { + ZEPHIR_CALL_METHOD(&defaultValue, column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_6$$3); + zephir_fast_strtoupper(&_6$$3, &defaultValue); + if (zephir_memnstr_str(&_6$$3, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Sqlite.zep", 46)) { + zephir_concat_self_str(&sql, " DEFAULT CURRENT_TIMESTAMP", sizeof(" DEFAULT CURRENT_TIMESTAMP") - 1); + } else { + ZEPHIR_INIT_VAR(&_7$$5); + ZVAL_STRING(&_7$$5, "\""); + ZEPHIR_CALL_FUNCTION(&_8$$5, "addcslashes", NULL, 211, &defaultValue, &_7$$5); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_9$$5); + ZEPHIR_CONCAT_SVS(&_9$$5, " DEFAULT \"", &_8$$5, "\""); + zephir_concat_self(&sql, &_9$$5); } } - ZEPHIR_INIT_VAR(&relation); - object_init_ex(&relation, phalcon_mvc_model_relation_ce); - ZVAL_LONG(&_2, 0); - ZEPHIR_CALL_METHOD(NULL, &relation, "__construct", NULL, 439, &_2, &referencedModel, fields, referencedFields, &options); + ZEPHIR_CALL_METHOD(&_10, column, "isnotnull", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &options, SL("alias"), 0)) { - if (UNEXPECTED(Z_TYPE_P(&alias) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Relation alias must be a string", "phalcon/Mvc/Model/Manager.zep", 316); - return; - } - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); + if (zephir_is_true(&_10)) { + zephir_concat_self_str(&sql, " NOT NULL", sizeof(" NOT NULL") - 1); } else { - ZEPHIR_CPY_WRT(&lowerAlias, &referencedEntity); + zephir_concat_self_str(&sql, " NULL", sizeof(" NULL") - 1); } - zephir_array_append(&relations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 329); - ZEPHIR_INIT_VAR(&_3); - ZEPHIR_CONCAT_VSV(&_3, &entityName, "$", &lowerAlias); - zephir_update_property_array(this_ptr, SL("aliases"), &_3, &relation); - zephir_update_property_array(this_ptr, SL("belongsTo"), &keyRelation, &relations); - ZEPHIR_OBS_VAR(&singleRelations); - zephir_read_property(&_2, this_ptr, ZEND_STRL("belongsToSingle"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&singleRelations, &_2, &entityName, 0))) { - ZEPHIR_INIT_NVAR(&singleRelations); - array_init(&singleRelations); + ZEPHIR_CALL_METHOD(&_11, column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_11)) { + zephir_concat_self_str(&sql, " PRIMARY KEY AUTOINCREMENT", sizeof(" PRIMARY KEY AUTOINCREMENT") - 1); } - zephir_array_append(&singleRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 343); - zephir_update_property_array(this_ptr, SL("belongsToSingle"), &entityName, &singleRelations); - RETURN_CCTOR(&relation); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addHasMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, addForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referencedModel, keyRelation; - zval *model, model_sub, *fields, fields_sub, *referencedModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, entityName, referencedEntity, hasMany, relation, relations, alias, lowerAlias, singleRelations, _0, _1, _2; + zval *tableName_param = NULL, *schemaName_param = NULL, *reference, reference_sub; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&referencedEntity); - ZVAL_UNDEF(&hasMany); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&lowerAlias); - ZVAL_UNDEF(&singleRelations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&reference_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 5) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(reference, phalcon_db_referenceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 1, &model, &fields, &referencedModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &reference); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&referencedModel); + ZEPHIR_INIT_VAR(&tableName); } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&referencedEntity); - zephir_fast_strtolower(&referencedEntity, &referencedModel); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSV(&_0, &entityName, "$", &referencedEntity); - zephir_get_strval(&keyRelation, &_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasMany"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&hasMany, &_1); - ZEPHIR_OBS_VAR(&relations); - if (!(zephir_array_isset_fetch(&relations, &hasMany, &keyRelation, 0))) { - ZEPHIR_INIT_NVAR(&relations); - array_init(&relations); - } - if (Z_TYPE_P(referencedFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(referencedFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 392); - return; - } - } - ZEPHIR_INIT_VAR(&relation); - object_init_ex(&relation, phalcon_mvc_model_relation_ce); - ZVAL_LONG(&_1, 2); - ZEPHIR_CALL_METHOD(NULL, &relation, "__construct", NULL, 439, &_1, &referencedModel, fields, referencedFields, &options); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &options, SL("alias"), 0)) { - if (UNEXPECTED(Z_TYPE_P(&alias) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Relation alias must be a string", "phalcon/Mvc/Model/Manager.zep", 412); - return; - } - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); - } else { - ZEPHIR_CPY_WRT(&lowerAlias, &referencedEntity); - } - zephir_array_append(&relations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 425); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &entityName, "$", &lowerAlias); - zephir_update_property_array(this_ptr, SL("aliases"), &_2, &relation); - zephir_update_property_array(this_ptr, SL("hasMany"), &keyRelation, &relations); - ZEPHIR_OBS_VAR(&singleRelations); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasManySingle"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&singleRelations, &_1, &entityName, 0))) { - ZEPHIR_INIT_NVAR(&singleRelations); - array_init(&singleRelations); - } - zephir_array_append(&singleRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 439); - zephir_update_property_array(this_ptr, SL("hasManySingle"), &entityName, &singleRelations); - RETURN_CCTOR(&relation); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Adding a foreign key constraint to an existing table is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 73); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addHasManyToMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, addIndex) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval intermediateModel, referencedModel, keyRelation; - zval *model, model_sub, *fields, fields_sub, *intermediateModel_param = NULL, *intermediateFields, intermediateFields_sub, *intermediateReferencedFields, intermediateReferencedFields_sub, *referencedModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, entityName, referencedEntity, hasManyToMany, relation, relations, alias, lowerAlias, singleRelations, intermediateEntity, _0, _1, _2; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, indexType, _5, _6, _7, _0$$3, _1$$5, _2$$5, _3$$6, _4$$6; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&intermediateFields_sub); - ZVAL_UNDEF(&intermediateReferencedFields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&referencedEntity); - ZVAL_UNDEF(&hasManyToMany); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&lowerAlias); - ZVAL_UNDEF(&singleRelations); - ZVAL_UNDEF(&intermediateEntity); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&index_sub); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$5); + ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&_3$$6); + ZVAL_UNDEF(&_4$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(7, 8) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(intermediateModel) - Z_PARAM_ZVAL(intermediateFields) - Z_PARAM_ZVAL(intermediateReferencedFields) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 7, 1, &model, &fields, &intermediateModel_param, &intermediateFields, &intermediateReferencedFields, &referencedModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(intermediateModel_param) != IS_STRING && Z_TYPE_P(intermediateModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'intermediateModel' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(intermediateModel_param) == IS_STRING)) { - zephir_get_strval(&intermediateModel, intermediateModel_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&intermediateModel); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); - } else { - ZEPHIR_INIT_VAR(&referencedModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&intermediateEntity); - zephir_fast_strtolower(&intermediateEntity, &intermediateModel); - ZEPHIR_INIT_VAR(&referencedEntity); - zephir_fast_strtolower(&referencedEntity, &referencedModel); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSV(&_0, &entityName, "$", &referencedEntity); - zephir_get_strval(&keyRelation, &_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasManyToMany"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&hasManyToMany, &_1); - ZEPHIR_OBS_VAR(&relations); - if (!(zephir_array_isset_fetch(&relations, &hasManyToMany, &keyRelation, 0))) { - ZEPHIR_INIT_NVAR(&relations); - array_init(&relations); - } - if (Z_TYPE_P(intermediateFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(intermediateFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 496); - return; - } - } - if (Z_TYPE_P(intermediateReferencedFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(intermediateFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 508); - return; - } - } - ZEPHIR_INIT_VAR(&relation); - object_init_ex(&relation, phalcon_mvc_model_relation_ce); - ZVAL_LONG(&_1, 4); - ZEPHIR_CALL_METHOD(NULL, &relation, "__construct", NULL, 439, &_1, &referencedModel, fields, referencedFields, &options); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &relation, "setintermediaterelation", NULL, 440, intermediateFields, &intermediateModel, intermediateReferencedFields); + ZEPHIR_CALL_METHOD(&indexType, index, "gettype", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &options, SL("alias"), 0)) { - if (Z_TYPE_P(&alias) != IS_STRING) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Relation alias must be a string", "phalcon/Mvc/Model/Manager.zep", 537); - return; - } - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); + if (!(ZEPHIR_IS_EMPTY(&indexType))) { + ZEPHIR_INIT_VAR(&_0$$3); + ZEPHIR_CONCAT_SVS(&_0$$3, "CREATE ", &indexType, " INDEX "); + zephir_get_strval(&sql, &_0$$3); } else { - ZEPHIR_CPY_WRT(&lowerAlias, &referencedEntity); + ZEPHIR_INIT_VAR(&sql); + ZVAL_STRING(&sql, "CREATE INDEX "); } - zephir_array_append(&relations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 548); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &entityName, "$", &lowerAlias); - zephir_update_property_array(this_ptr, SL("aliases"), &_2, &relation); - zephir_update_property_array(this_ptr, SL("hasManyToMany"), &keyRelation, &relations); - ZEPHIR_OBS_VAR(&singleRelations); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasManyToManySingle"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&singleRelations, &_1, &entityName, 0))) { - ZEPHIR_INIT_NVAR(&singleRelations); - array_init(&singleRelations); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CALL_METHOD(&_1$$5, index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_2$$5); + ZEPHIR_CONCAT_SVSVS(&_2$$5, "\"", &schemaName, "\".\"", &_1$$5, "\""); + zephir_concat_self(&sql, &_2$$5); + } else { + ZEPHIR_CALL_METHOD(&_3$$6, index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_4$$6); + ZEPHIR_CONCAT_SVS(&_4$$6, "\"", &_3$$6, "\""); + zephir_concat_self(&sql, &_4$$6); } - zephir_array_append(&singleRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 570); - zephir_update_property_array(this_ptr, SL("hasManyToManySingle"), &entityName, &singleRelations); - RETURN_CCTOR(&relation); + ZEPHIR_CALL_METHOD(&_6, index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getcolumnlist", NULL, 54, &_6); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_7); + ZEPHIR_CONCAT_SVSVS(&_7, " ON \"", &tableName, "\" (", &_5, ")"); + zephir_concat_self(&sql, &_7); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addHasOne) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, addPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval referencedModel, keyRelation; - zval *model, model_sub, *fields, fields_sub, *referencedModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, entityName, referencedEntity, relation, relations, alias, lowerAlias, singleRelations, _0, _1, _2, _3; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&referencedEntity); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&lowerAlias); - ZVAL_UNDEF(&singleRelations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&index_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 5) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 1, &model, &fields, &referencedModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&referencedModel); + ZEPHIR_INIT_VAR(&tableName); } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&referencedEntity); - zephir_fast_strtolower(&referencedEntity, &referencedModel); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSV(&_0, &entityName, "$", &referencedEntity); - zephir_get_strval(&keyRelation, &_0); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasOne"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&relations, &_1, &keyRelation, 0))) { - ZEPHIR_INIT_NVAR(&relations); - array_init(&relations); - } - if (Z_TYPE_P(referencedFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(referencedFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 618); - return; - } - } - ZEPHIR_INIT_VAR(&relation); - object_init_ex(&relation, phalcon_mvc_model_relation_ce); - ZVAL_LONG(&_2, 1); - ZEPHIR_CALL_METHOD(NULL, &relation, "__construct", NULL, 439, &_2, &referencedModel, fields, referencedFields, &options); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &options, SL("alias"), 0)) { - if (UNEXPECTED(Z_TYPE_P(&alias) != IS_STRING)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Relation alias must be a string", "phalcon/Mvc/Model/Manager.zep", 638); - return; - } - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); - } else { - ZEPHIR_CPY_WRT(&lowerAlias, &referencedEntity); - } - zephir_array_append(&relations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 651); - ZEPHIR_INIT_VAR(&_3); - ZEPHIR_CONCAT_VSV(&_3, &entityName, "$", &lowerAlias); - zephir_update_property_array(this_ptr, SL("aliases"), &_3, &relation); - zephir_update_property_array(this_ptr, SL("hasOne"), &keyRelation, &relations); - ZEPHIR_OBS_VAR(&singleRelations); - zephir_read_property(&_2, this_ptr, ZEND_STRL("hasOneSingle"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&singleRelations, &_2, &entityName, 0))) { - ZEPHIR_INIT_NVAR(&singleRelations); - array_init(&singleRelations); - } - zephir_array_append(&singleRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 665); - zephir_update_property_array(this_ptr, SL("hasOneSingle"), &entityName, &singleRelations); - RETURN_CCTOR(&relation); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Adding a primary key after table has been created is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 110); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, addHasOneThrough) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, createTable) { + zend_bool hasPrimary = 0, _8$$7, _10$$7, _21$$15, _23$$15, _32$$24, _33$$24, _42$$27, _43$$27; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_6 = NULL, *_15 = NULL, *_37 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval intermediateModel, referencedModel, keyRelation; - zval *model, model_sub, *fields, fields_sub, *intermediateModel_param = NULL, *intermediateFields, intermediateFields_sub, *intermediateReferencedFields, intermediateReferencedFields_sub, *referencedModel_param = NULL, *referencedFields, referencedFields_sub, *options_param = NULL, entityName, referencedEntity, hasOneThrough, relation, relations, alias, lowerAlias, singleRelations, intermediateEntity, _0, _1, _2; + zval definition; + zval *tableName_param = NULL, *schemaName_param = NULL, *definition_param = NULL, columns, table, temporary, options, createLines, columnLine, column, indexes, index, indexName, indexType, references, reference, defaultValue, referenceSql, onDelete, onUpdate, *_2, _3, _69, _70, _0$$5, _1$$6, _4$$7, _5$$7, _7$$7, _9$$7, _11$$7, _17$$7, _12$$10, _13$$12, _14$$12, _16$$12, _18$$15, _19$$15, _20$$15, _22$$15, _24$$15, _29$$15, _25$$18, _26$$20, _27$$20, _28$$20, *_30$$23, _31$$23, _34$$24, _35$$25, _36$$25, _38$$25, _39$$26, _40$$26, _41$$26, _44$$27, _45$$28, _46$$28, _47$$28, _48$$29, _49$$29, _50$$29, *_51$$30, _52$$30, _53$$31, _54$$31, _55$$31, _56$$31, _57$$31, _58$$31, _59$$32, _60$$33, _61$$34, _62$$34, _63$$34, _64$$34, _65$$34, _66$$34, _67$$35, _68$$36; + zval tableName, schemaName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&intermediateFields_sub); - ZVAL_UNDEF(&intermediateReferencedFields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&referencedEntity); - ZVAL_UNDEF(&hasOneThrough); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&lowerAlias); - ZVAL_UNDEF(&singleRelations); - ZVAL_UNDEF(&intermediateEntity); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&keyRelation); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&temporary); ZVAL_UNDEF(&options); + ZVAL_UNDEF(&createLines); + ZVAL_UNDEF(&columnLine); + ZVAL_UNDEF(&column); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&indexName); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&defaultValue); + ZVAL_UNDEF(&referenceSql); + ZVAL_UNDEF(&onDelete); + ZVAL_UNDEF(&onUpdate); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_69); + ZVAL_UNDEF(&_70); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF(&_4$$7); + ZVAL_UNDEF(&_5$$7); + ZVAL_UNDEF(&_7$$7); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_17$$7); + ZVAL_UNDEF(&_12$$10); + ZVAL_UNDEF(&_13$$12); + ZVAL_UNDEF(&_14$$12); + ZVAL_UNDEF(&_16$$12); + ZVAL_UNDEF(&_18$$15); + ZVAL_UNDEF(&_19$$15); + ZVAL_UNDEF(&_20$$15); + ZVAL_UNDEF(&_22$$15); + ZVAL_UNDEF(&_24$$15); + ZVAL_UNDEF(&_29$$15); + ZVAL_UNDEF(&_25$$18); + ZVAL_UNDEF(&_26$$20); + ZVAL_UNDEF(&_27$$20); + ZVAL_UNDEF(&_28$$20); + ZVAL_UNDEF(&_31$$23); + ZVAL_UNDEF(&_34$$24); + ZVAL_UNDEF(&_35$$25); + ZVAL_UNDEF(&_36$$25); + ZVAL_UNDEF(&_38$$25); + ZVAL_UNDEF(&_39$$26); + ZVAL_UNDEF(&_40$$26); + ZVAL_UNDEF(&_41$$26); + ZVAL_UNDEF(&_44$$27); + ZVAL_UNDEF(&_45$$28); + ZVAL_UNDEF(&_46$$28); + ZVAL_UNDEF(&_47$$28); + ZVAL_UNDEF(&_48$$29); + ZVAL_UNDEF(&_49$$29); + ZVAL_UNDEF(&_50$$29); + ZVAL_UNDEF(&_52$$30); + ZVAL_UNDEF(&_53$$31); + ZVAL_UNDEF(&_54$$31); + ZVAL_UNDEF(&_55$$31); + ZVAL_UNDEF(&_56$$31); + ZVAL_UNDEF(&_57$$31); + ZVAL_UNDEF(&_58$$31); + ZVAL_UNDEF(&_59$$32); + ZVAL_UNDEF(&_60$$33); + ZVAL_UNDEF(&_61$$34); + ZVAL_UNDEF(&_62$$34); + ZVAL_UNDEF(&_63$$34); + ZVAL_UNDEF(&_64$$34); + ZVAL_UNDEF(&_65$$34); + ZVAL_UNDEF(&_66$$34); + ZVAL_UNDEF(&_67$$35); + ZVAL_UNDEF(&_68$$36); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(7, 8) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(fields) - Z_PARAM_STR(intermediateModel) - Z_PARAM_ZVAL(intermediateFields) - Z_PARAM_ZVAL(intermediateReferencedFields) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(referencedFields) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 7, 1, &model, &fields, &intermediateModel_param, &intermediateFields, &intermediateReferencedFields, &referencedModel_param, &referencedFields, &options_param); - if (UNEXPECTED(Z_TYPE_P(intermediateModel_param) != IS_STRING && Z_TYPE_P(intermediateModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'intermediateModel' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(intermediateModel_param) == IS_STRING)) { - zephir_get_strval(&intermediateModel, intermediateModel_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&intermediateModel); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); - } else { - ZEPHIR_INIT_VAR(&referencedModel); - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_INIT_VAR(&schemaName); } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&intermediateEntity); - zephir_fast_strtolower(&intermediateEntity, &intermediateModel); - ZEPHIR_INIT_VAR(&referencedEntity); - zephir_fast_strtolower(&referencedEntity, &referencedModel); - ZEPHIR_INIT_VAR(&_0); - ZEPHIR_CONCAT_VSV(&_0, &entityName, "$", &referencedEntity); - zephir_get_strval(&keyRelation, &_0); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasOneThrough"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&hasOneThrough, &_1); - ZEPHIR_OBS_VAR(&relations); - if (!(zephir_array_isset_fetch(&relations, &hasOneThrough, &keyRelation, 0))) { - ZEPHIR_INIT_NVAR(&relations); - array_init(&relations); + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&temporary); + ZVAL_BOOL(&temporary, 0); + ZEPHIR_OBS_VAR(&options); + if (zephir_array_isset_string_fetch(&options, &definition, SL("options"), 0)) { + ZEPHIR_OBS_NVAR(&temporary); + zephir_array_isset_string_fetch(&temporary, &options, SL("temporary"), 0); } - if (Z_TYPE_P(intermediateFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(intermediateFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 722); - return; - } + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'columns' is required in the definition array", "phalcon/Db/Dialect/Sqlite.zep", 134); + return; } - if (Z_TYPE_P(intermediateReferencedFields) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(fields) != zephir_fast_count_int(intermediateFields))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Number of referenced fields are not the same", "phalcon/Mvc/Model/Manager.zep", 734); - return; + if (zephir_is_true(&temporary)) { + ZEPHIR_INIT_VAR(&_0$$5); + ZEPHIR_CONCAT_SV(&_0$$5, "CREATE TEMPORARY TABLE ", &table); + zephir_get_strval(&sql, &_0$$5); + } else { + ZEPHIR_INIT_VAR(&_1$$6); + ZEPHIR_CONCAT_SV(&_1$$6, "CREATE TABLE ", &table); + zephir_get_strval(&sql, &_1$$6); + } + zephir_concat_self_str(&sql, " (\n\t", sizeof(" (\n\t") - 1); + hasPrimary = 0; + ZEPHIR_INIT_VAR(&createLines); + array_init(&createLines); + zephir_is_iterable(&columns, 0, "phalcon/Db/Dialect/Sqlite.zep", 197); + if (Z_TYPE_P(&columns) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&columns), _2) + { + ZEPHIR_INIT_NVAR(&column); + ZVAL_COPY(&column, _2); + ZEPHIR_CALL_METHOD(&_4$$7, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_5$$7, this_ptr, "getcolumndefinition", &_6, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&columnLine); + ZEPHIR_CONCAT_SVSV(&columnLine, "`", &_4$$7, "` ", &_5$$7); + ZEPHIR_CALL_METHOD(&_7$$7, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + _8$$7 = zephir_is_true(&_7$$7); + if (_8$$7) { + _8$$7 = !hasPrimary; + } + if (_8$$7) { + zephir_concat_self_str(&columnLine, SL(" PRIMARY KEY")); + hasPrimary = 1; + } + ZEPHIR_CALL_METHOD(&_9$$7, &column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + _10$$7 = zephir_is_true(&_9$$7); + if (_10$$7) { + _10$$7 = hasPrimary; + } + if (_10$$7) { + zephir_concat_self_str(&columnLine, SL(" AUTOINCREMENT")); + } + ZEPHIR_CALL_METHOD(&_11$$7, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_11$$7)) { + ZEPHIR_CALL_METHOD(&defaultValue, &column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_12$$10); + zephir_fast_strtoupper(&_12$$10, &defaultValue); + if (zephir_memnstr_str(&_12$$10, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Sqlite.zep", 175)) { + zephir_concat_self_str(&columnLine, SL(" DEFAULT CURRENT_TIMESTAMP")); + } else { + ZEPHIR_INIT_NVAR(&_13$$12); + ZVAL_STRING(&_13$$12, "\""); + ZEPHIR_CALL_FUNCTION(&_14$$12, "addcslashes", &_15, 211, &defaultValue, &_13$$12); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_16$$12); + ZEPHIR_CONCAT_SVS(&_16$$12, " DEFAULT \"", &_14$$12, "\""); + zephir_concat_self(&columnLine, &_16$$12); + } + } + ZEPHIR_CALL_METHOD(&_17$$7, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_17$$7)) { + zephir_concat_self_str(&columnLine, SL(" NOT NULL")); + } else { + zephir_concat_self_str(&columnLine, SL(" NULL")); + } + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 191); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &columns, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&column, &columns, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_18$$15, &column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_19$$15, this_ptr, "getcolumndefinition", &_6, 0, &column); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&columnLine); + ZEPHIR_CONCAT_SVSV(&columnLine, "`", &_18$$15, "` ", &_19$$15); + ZEPHIR_CALL_METHOD(&_20$$15, &column, "isprimary", NULL, 0); + zephir_check_call_status(); + _21$$15 = zephir_is_true(&_20$$15); + if (_21$$15) { + _21$$15 = !hasPrimary; + } + if (_21$$15) { + zephir_concat_self_str(&columnLine, SL(" PRIMARY KEY")); + hasPrimary = 1; + } + ZEPHIR_CALL_METHOD(&_22$$15, &column, "isautoincrement", NULL, 0); + zephir_check_call_status(); + _23$$15 = zephir_is_true(&_22$$15); + if (_23$$15) { + _23$$15 = hasPrimary; + } + if (_23$$15) { + zephir_concat_self_str(&columnLine, SL(" AUTOINCREMENT")); + } + ZEPHIR_CALL_METHOD(&_24$$15, &column, "hasdefault", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_24$$15)) { + ZEPHIR_CALL_METHOD(&defaultValue, &column, "getdefault", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_25$$18); + zephir_fast_strtoupper(&_25$$18, &defaultValue); + if (zephir_memnstr_str(&_25$$18, SL("CURRENT_TIMESTAMP"), "phalcon/Db/Dialect/Sqlite.zep", 175)) { + zephir_concat_self_str(&columnLine, SL(" DEFAULT CURRENT_TIMESTAMP")); + } else { + ZEPHIR_INIT_NVAR(&_26$$20); + ZVAL_STRING(&_26$$20, "\""); + ZEPHIR_CALL_FUNCTION(&_27$$20, "addcslashes", &_15, 211, &defaultValue, &_26$$20); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_28$$20); + ZEPHIR_CONCAT_SVS(&_28$$20, " DEFAULT \"", &_27$$20, "\""); + zephir_concat_self(&columnLine, &_28$$20); + } + } + ZEPHIR_CALL_METHOD(&_29$$15, &column, "isnotnull", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_29$$15)) { + zephir_concat_self_str(&columnLine, SL(" NOT NULL")); + } else { + zephir_concat_self_str(&columnLine, SL(" NULL")); + } + zephir_array_append(&createLines, &columnLine, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 191); + ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); + zephir_check_call_status(); } } - ZEPHIR_INIT_VAR(&relation); - object_init_ex(&relation, phalcon_mvc_model_relation_ce); - ZVAL_LONG(&_1, 3); - ZEPHIR_CALL_METHOD(NULL, &relation, "__construct", NULL, 439, &_1, &referencedModel, fields, referencedFields, &options); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &relation, "setintermediaterelation", NULL, 440, intermediateFields, &intermediateModel, intermediateReferencedFields); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &options, SL("alias"), 0)) { - if (Z_TYPE_P(&alias) != IS_STRING) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Relation alias must be a string", "phalcon/Mvc/Model/Manager.zep", 763); - return; + ZEPHIR_INIT_NVAR(&column); + ZEPHIR_OBS_VAR(&indexes); + if (zephir_array_isset_string_fetch(&indexes, &definition, SL("indexes"), 0)) { + zephir_is_iterable(&indexes, 0, "phalcon/Db/Dialect/Sqlite.zep", 211); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&indexes), _30$$23) + { + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _30$$23); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + _32$$24 = ZEPHIR_IS_STRING(&indexName, "PRIMARY"); + if (_32$$24) { + _32$$24 = !hasPrimary; + } + _33$$24 = !(ZEPHIR_IS_EMPTY(&indexType)); + if (_33$$24) { + ZEPHIR_INIT_NVAR(&_34$$24); + zephir_fast_strtoupper(&_34$$24, &indexType); + _33$$24 = zephir_memnstr_str(&_34$$24, SL("UNIQUE"), "phalcon/Db/Dialect/Sqlite.zep", 207); + } + if (_32$$24) { + ZEPHIR_CALL_METHOD(&_36$$25, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_35$$25, this_ptr, "getcolumnlist", &_37, 54, &_36$$25); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_38$$25); + ZEPHIR_CONCAT_SVS(&_38$$25, "PRIMARY KEY (", &_35$$25, ")"); + zephir_array_append(&createLines, &_38$$25, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 206); + } else if (_33$$24) { + ZEPHIR_CALL_METHOD(&_40$$26, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_39$$26, this_ptr, "getcolumnlist", &_37, 54, &_40$$26); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_41$$26); + ZEPHIR_CONCAT_SVS(&_41$$26, "UNIQUE (", &_39$$26, ")"); + zephir_array_append(&createLines, &_41$$26, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 208); + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_31$$23, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_31$$23)) { + break; + } + ZEPHIR_CALL_METHOD(&index, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexName, &index, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexType, &index, "gettype", NULL, 0); + zephir_check_call_status(); + _42$$27 = ZEPHIR_IS_STRING(&indexName, "PRIMARY"); + if (_42$$27) { + _42$$27 = !hasPrimary; + } + _43$$27 = !(ZEPHIR_IS_EMPTY(&indexType)); + if (_43$$27) { + ZEPHIR_INIT_NVAR(&_44$$27); + zephir_fast_strtoupper(&_44$$27, &indexType); + _43$$27 = zephir_memnstr_str(&_44$$27, SL("UNIQUE"), "phalcon/Db/Dialect/Sqlite.zep", 207); + } + if (_42$$27) { + ZEPHIR_CALL_METHOD(&_46$$28, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_45$$28, this_ptr, "getcolumnlist", &_37, 54, &_46$$28); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_47$$28); + ZEPHIR_CONCAT_SVS(&_47$$28, "PRIMARY KEY (", &_45$$28, ")"); + zephir_array_append(&createLines, &_47$$28, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 206); + } else if (_43$$27) { + ZEPHIR_CALL_METHOD(&_49$$29, &index, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_48$$29, this_ptr, "getcolumnlist", &_37, 54, &_49$$29); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_50$$29); + ZEPHIR_CONCAT_SVS(&_50$$29, "UNIQUE (", &_48$$29, ")"); + zephir_array_append(&createLines, &_50$$29, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 208); + } + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); + zephir_check_call_status(); + } } - ZEPHIR_INIT_VAR(&lowerAlias); - zephir_fast_strtolower(&lowerAlias, &alias); - } else { - ZEPHIR_CPY_WRT(&lowerAlias, &referencedEntity); + ZEPHIR_INIT_NVAR(&index); } - zephir_array_append(&relations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 774); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &entityName, "$", &lowerAlias); - zephir_update_property_array(this_ptr, SL("aliases"), &_2, &relation); - zephir_update_property_array(this_ptr, SL("hasOneThrough"), &keyRelation, &relations); - ZEPHIR_OBS_VAR(&singleRelations); - zephir_read_property(&_1, this_ptr, ZEND_STRL("hasOneThroughSingle"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&singleRelations, &_1, &entityName, 0))) { - ZEPHIR_INIT_NVAR(&singleRelations); - array_init(&singleRelations); + ZEPHIR_OBS_VAR(&references); + if (zephir_array_isset_string_fetch(&references, &definition, SL("references"), 0)) { + zephir_is_iterable(&references, 0, "phalcon/Db/Dialect/Sqlite.zep", 233); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&references), _51$$30) + { + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _51$$30); + ZEPHIR_CALL_METHOD(&_53$$31, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_55$$31, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_54$$31, this_ptr, "getcolumnlist", &_37, 54, &_55$$31); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_56$$31, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_58$$31, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_57$$31, this_ptr, "getcolumnlist", &_37, 54, &_58$$31); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&referenceSql); + ZEPHIR_CONCAT_SVSVSSVSVS(&referenceSql, "CONSTRAINT `", &_53$$31, "` FOREIGN KEY (", &_54$$31, ")", " REFERENCES `", &_56$$31, "`(", &_57$$31, ")"); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_59$$32); + ZEPHIR_CONCAT_SV(&_59$$32, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_59$$32); + } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_60$$33); + ZEPHIR_CONCAT_SV(&_60$$33, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_60$$33); + } + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 231); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_52$$30, &references, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_52$$30)) { + break; + } + ZEPHIR_CALL_METHOD(&reference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_61$$34, &reference, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_63$$34, &reference, "getcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_62$$34, this_ptr, "getcolumnlist", &_37, 54, &_63$$34); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_64$$34, &reference, "getreferencedtable", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_66$$34, &reference, "getreferencedcolumns", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_65$$34, this_ptr, "getcolumnlist", &_37, 54, &_66$$34); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&referenceSql); + ZEPHIR_CONCAT_SVSVSSVSVS(&referenceSql, "CONSTRAINT `", &_61$$34, "` FOREIGN KEY (", &_62$$34, ")", " REFERENCES `", &_64$$34, "`(", &_65$$34, ")"); + ZEPHIR_CALL_METHOD(&onDelete, &reference, "getondelete", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onDelete))) { + ZEPHIR_INIT_NVAR(&_67$$35); + ZEPHIR_CONCAT_SV(&_67$$35, " ON DELETE ", &onDelete); + zephir_concat_self(&referenceSql, &_67$$35); + } + ZEPHIR_CALL_METHOD(&onUpdate, &reference, "getonupdate", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&onUpdate))) { + ZEPHIR_INIT_NVAR(&_68$$36); + ZEPHIR_CONCAT_SV(&_68$$36, " ON UPDATE ", &onUpdate); + zephir_concat_self(&referenceSql, &_68$$36); + } + zephir_array_append(&createLines, &referenceSql, PH_SEPARATE, "phalcon/Db/Dialect/Sqlite.zep", 231); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&reference); } - zephir_array_append(&singleRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 796); - zephir_update_property_array(this_ptr, SL("hasOneThroughSingle"), &entityName, &singleRelations); - RETURN_CCTOR(&relation); + ZEPHIR_INIT_VAR(&_69); + zephir_fast_join_str(&_69, SL(",\n\t"), &createLines); + ZEPHIR_INIT_VAR(&_70); + ZEPHIR_CONCAT_VS(&_70, &_69, "\n)"); + zephir_concat_self(&sql, &_70); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, clearReusableObjects) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, createView) { - zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *viewName_param = NULL, *definition_param = NULL, *schemaName_param = NULL, viewSql, _0; + zval viewName, schemaName; zval *this_ptr = getThis(); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&viewSql); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&definition); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(viewName) + Z_PARAM_ARRAY(definition) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 1, &viewName_param, &definition_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("reusable"), &_0); - ZEPHIR_MM_RESTORE(); + + ZEPHIR_OBS_VAR(&viewSql); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&viewSql, &definition, SL("sql"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The index 'sql' is required in the definition array", "phalcon/Db/Dialect/Sqlite.zep", 250); + return; + } + ZEPHIR_CALL_METHOD(&_0, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); + zephir_check_call_status(); + ZEPHIR_CONCAT_SVSV(return_value, "CREATE VIEW ", &_0, " AS ", &viewSql); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, createBuilder) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, describeColumns) { - zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *params = NULL, params_sub, __$null, container, _0, _1, _3; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(¶ms_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(params) + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 1, ¶ms); - if (!params) { - params = ¶ms_sub; - params = &__$null; + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ORM", "phalcon/Mvc/Model/Manager.zep", 828); - return; - } - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - zephir_array_fast_append(&_2, params); - zephir_array_fast_append(&_2, &container); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Query\\Builder"); - ZEPHIR_CALL_METHOD(&_1, &container, "get", NULL, 0, &_3, &_2); - zephir_check_call_status(); - zephir_update_property_zval(this_ptr, ZEND_STRL("builder"), &_1); - RETURN_MM_MEMBER(getThis(), "builder"); + ZEPHIR_CONCAT_SVS(return_value, "PRAGMA table_info('", &table, "')"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, createQuery) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, describeIndex) { - zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *phql_param = NULL, container, query, _0, _1, _3; - zval phql; + zval *index_param = NULL; + zval index; zval *this_ptr = getThis(); - ZVAL_UNDEF(&phql); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&query); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&index); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(phql) + Z_PARAM_STR(index) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &phql_param); - if (UNEXPECTED(Z_TYPE_P(phql_param) != IS_STRING && Z_TYPE_P(phql_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'phql' must be of the type string")); + zephir_fetch_params(1, 1, 0, &index_param); + if (UNEXPECTED(Z_TYPE_P(index_param) != IS_STRING && Z_TYPE_P(index_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'index' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(phql_param) == IS_STRING)) { - zephir_get_strval(&phql, phql_param); + if (EXPECTED(Z_TYPE_P(index_param) == IS_STRING)) { + zephir_get_strval(&index, index_param); } else { - ZEPHIR_INIT_VAR(&phql); + ZEPHIR_INIT_VAR(&index); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ORM", "phalcon/Mvc/Model/Manager.zep", 861); - return; - } - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 2, 0); - zephir_array_fast_append(&_2, &phql); - zephir_array_fast_append(&_2, &container); - ZEPHIR_INIT_VAR(&_3); - ZVAL_STRING(&_3, "Phalcon\\Mvc\\Model\\Query"); - ZEPHIR_CALL_METHOD(&_1, &container, "get", NULL, 0, &_3, &_2); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&query, &_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("lastQuery"), &query); - RETURN_CCTOR(&query); + ZEPHIR_CONCAT_SVS(return_value, "PRAGMA index_info('", &index, "')"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, executeQuery) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, describeIndexes) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *phql_param = NULL, *placeholders = NULL, placeholders_sub, *types = NULL, types_sub, __$null, query; - zval phql; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&phql); - ZVAL_UNDEF(&placeholders_sub); - ZVAL_UNDEF(&types_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&query); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 3) - Z_PARAM_STR(phql) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(placeholders) - Z_PARAM_ZVAL_OR_NULL(types) + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 2, &phql_param, &placeholders, &types); - if (UNEXPECTED(Z_TYPE_P(phql_param) != IS_STRING && Z_TYPE_P(phql_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'phql' must be of the type string")); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(phql_param) == IS_STRING)) { - zephir_get_strval(&phql, phql_param); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - ZEPHIR_INIT_VAR(&phql); - } - if (!placeholders) { - placeholders = &placeholders_sub; - placeholders = &__$null; + ZEPHIR_INIT_VAR(&table); } - if (!types) { - types = &types_sub; - types = &__$null; + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); } - ZEPHIR_CALL_METHOD(&query, this_ptr, "createquery", NULL, 0, &phql); - zephir_check_call_status(); - if (Z_TYPE_P(placeholders) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(NULL, &query, "setbindparams", NULL, 0, placeholders); - zephir_check_call_status(); - } - if (Z_TYPE_P(types) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(NULL, &query, "setbindtypes", NULL, 0, types); - zephir_check_call_status(); - } - ZEPHIR_RETURN_CALL_METHOD(&query, "execute", NULL, 0); - zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "PRAGMA index_list('", &table, "')"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, existsBelongsTo) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, describeReferences) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL; - zval modelName, modelRelation; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); + ZEPHIR_INIT_VAR(&table); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); } else { - ZEPHIR_INIT_VAR(&modelRelation); + zephir_get_strval(&schema, schema_param); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hasbelongsto", NULL, 0, &modelName, &modelRelation); - zephir_check_call_status(); + ZEPHIR_CONCAT_SVS(return_value, "PRAGMA foreign_key_list('", &table, "')"); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, existsHasMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL; - zval modelName, modelRelation; + zval *tableName_param = NULL, *schemaName_param = NULL, *columnName_param = NULL; + zval tableName, schemaName, columnName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&columnName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(columnName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &columnName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&modelRelation); + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(columnName_param) != IS_STRING && Z_TYPE_P(columnName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'columnName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(columnName_param) == IS_STRING)) { + zephir_get_strval(&columnName, columnName_param); + } else { + ZEPHIR_INIT_VAR(&columnName); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hashasmany", NULL, 0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Dropping DB column is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 299); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, existsHasManyToMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL; - zval modelName, modelRelation; + zval *tableName_param = NULL, *schemaName_param = NULL, *referenceName_param = NULL; + zval tableName, schemaName, referenceName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&referenceName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(referenceName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &referenceName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&modelRelation); + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(referenceName_param) != IS_STRING && Z_TYPE_P(referenceName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(referenceName_param) == IS_STRING)) { + zephir_get_strval(&referenceName, referenceName_param); + } else { + ZEPHIR_INIT_VAR(&referenceName); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hashasmanytomany", NULL, 0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Dropping a foreign key constraint is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 309); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, existsHasOne) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropIndex) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL; - zval modelName, modelRelation; + zval *tableName_param = NULL, *schemaName_param = NULL, *indexName_param = NULL; + zval tableName, schemaName, indexName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(indexName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &indexName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&modelRelation); + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(indexName_param) != IS_STRING && Z_TYPE_P(indexName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'indexName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(indexName_param) == IS_STRING)) { + zephir_get_strval(&indexName, indexName_param); + } else { + ZEPHIR_INIT_VAR(&indexName); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hashasone", NULL, 0, &modelName, &modelRelation); - zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_CONCAT_SVSVS(return_value, "DROP INDEX \"", &schemaName, "\".\"", &indexName, "\""); + RETURN_MM(); + } + ZEPHIR_CONCAT_SVS(return_value, "DROP INDEX \"", &indexName, "\""); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, existsHasOneThrough) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL; - zval modelName, modelRelation; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&modelRelation); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "hashasonethrough", NULL, 0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Removing a primary key after table has been created is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 331); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getBelongsTo) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, relations, _0, _1; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool ifExists; + zval *tableName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, table; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 2, &tableName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } + if (!ifExists_param) { + ifExists = 1; + } else { + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("belongsToSingle"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&relations, &_0, &_1, 1))) { - array_init(return_value); + ZEPHIR_CALL_METHOD(&table, this_ptr, "preparetable", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE IF EXISTS ", &table); RETURN_MM(); } - RETURN_CTOR(&relations); + ZEPHIR_CONCAT_SV(return_value, "DROP TABLE ", &table); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getBelongsToRecords) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, dropView) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, *record, record_sub, *parameters = NULL, parameters_sub, *method_param = NULL, __$null, relations, _0, _1, _2, _3, _4; - zval modelName, modelRelation, method, keyRelation; + zend_bool ifExists; + zval *viewName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, view; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&record_sub); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&view); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 5) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) - Z_PARAM_OBJECT_OF_CLASS(record, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(viewName) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) - Z_PARAM_STR_OR_NULL(method) + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 2, &modelName_param, &modelRelation_param, &record, ¶meters, &method_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 1, 2, &viewName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); + ZEPHIR_INIT_VAR(&viewName); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); } else { - ZEPHIR_INIT_VAR(&modelRelation); - } - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; + zephir_get_strval(&schemaName, schemaName_param); } - if (!method_param) { - ZEPHIR_INIT_VAR(&method); + if (!ifExists_param) { + ifExists = 1; } else { - zephir_get_strval(&method, method_param); + if (UNEXPECTED(Z_TYPE_P(ifExists_param) != IS_TRUE && Z_TYPE_P(ifExists_param) != IS_FALSE)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'ifExists' must be of the type bool")); + RETURN_MM_NULL(); + } + ifExists = (Z_TYPE_P(ifExists_param) == IS_TRUE); } - ZEPHIR_INIT_VAR(&_0); - zephir_fast_strtolower(&_0, &modelName); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &modelRelation); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &_0, "$", &_1); - zephir_get_strval(&keyRelation, &_2); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_3, this_ptr, ZEND_STRL("hasMany"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&relations, &_3, &keyRelation, 0))) { - RETURN_MM_BOOL(0); - } - zephir_array_fetch_long(&_4, &relations, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1030); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getrelationrecords", NULL, 0, &_4, record, parameters, &method); + ZEPHIR_CALL_METHOD(&view, this_ptr, "preparetable", NULL, 0, &viewName, &schemaName); zephir_check_call_status(); + if (ifExists) { + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW IF EXISTS ", &view); + RETURN_MM(); + } + ZEPHIR_CONCAT_SV(return_value, "DROP VIEW ", &view); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getBuilder) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, forUpdate) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *sqlQuery_param = NULL; + zval sqlQuery; zval *this_ptr = getThis(); + ZVAL_UNDEF(&sqlQuery); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(sqlQuery) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } - RETURN_MEMBER(getThis(), "builder"); + RETURN_CTOR(&sqlQuery); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getConnectionService) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, getColumnDefinition) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval connectionServices; - zval *model, model_sub, *connectionServices_param = NULL, connection, _0; + zephir_fcall_cache_entry *_12 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *column, column_sub, columnType, columnSql, typeValues, _0$$3, _1$$10, _2$$16, _3$$18, _4$$35, _5$$38, _6$$38, _7$$38, value$$40, valueSql$$40, *_8$$40, _9$$40, _17$$40, _18$$40, _19$$40, _20$$40, _10$$41, _11$$41, _13$$41, _14$$42, _15$$42, _16$$42, _21$$43, _22$$43, _23$$43; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&connectionServices); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&columnSql); + ZVAL_UNDEF(&typeValues); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$10); + ZVAL_UNDEF(&_2$$16); + ZVAL_UNDEF(&_3$$18); + ZVAL_UNDEF(&_4$$35); + ZVAL_UNDEF(&_5$$38); + ZVAL_UNDEF(&_6$$38); + ZVAL_UNDEF(&_7$$38); + ZVAL_UNDEF(&value$$40); + ZVAL_UNDEF(&valueSql$$40); + ZVAL_UNDEF(&_9$$40); + ZVAL_UNDEF(&_17$$40); + ZVAL_UNDEF(&_18$$40); + ZVAL_UNDEF(&_19$$40); + ZVAL_UNDEF(&_20$$40); + ZVAL_UNDEF(&_10$$41); + ZVAL_UNDEF(&_11$$41); + ZVAL_UNDEF(&_13$$41); + ZVAL_UNDEF(&_14$$42); + ZVAL_UNDEF(&_15$$42); + ZVAL_UNDEF(&_16$$42); + ZVAL_UNDEF(&_21$$43); + ZVAL_UNDEF(&_22$$43); + ZVAL_UNDEF(&_23$$43); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(connectionServices) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &connectionServices_param); - zephir_get_arrval(&connectionServices, connectionServices_param); + zephir_fetch_params(1, 1, 0, &column); - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - if (!(zephir_array_isset_fetch(&connection, &connectionServices, &_0, 1))) { - RETURN_MM_STRING("db"); - } - RETURN_CTOR(&connection); + ZEPHIR_CALL_METHOD(&columnSql, this_ptr, "checkcolumntypesql", NULL, 0, column); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&columnType, this_ptr, "checkcolumntype", NULL, 0, column); + zephir_check_call_status(); + do { + if (ZEPHIR_IS_LONG(&columnType, 14)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BIGINT")); + } + ZEPHIR_CALL_METHOD(&_0$$3, column, "isunsigned", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_0$$3)) { + zephir_concat_self_str(&columnSql, SL(" UNSIGNED")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 11)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("BLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 8)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYINT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 5)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("CHARACTER")); + } + ZEPHIR_CALL_METHOD(&_1$$10, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_1$$10); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 1)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DATE")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 4)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DATETIME")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 3)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("NUMERIC")); + } + ZEPHIR_CALL_METHOD(&_2$$16, this_ptr, "getcolumnsizeandscale", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_2$$16); + break; + } + if (ZEPHIR_IS_LONG(&columnType, 9)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("DOUBLE")); + } + ZEPHIR_CALL_METHOD(&_3$$18, column, "isunsigned", NULL, 0); + zephir_check_call_status(); + if (zephir_is_true(&_3$$18)) { + zephir_concat_self_str(&columnSql, SL(" UNSIGNED")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 7)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("FLOAT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 0)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("INTEGER")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 13)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("LONGBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 12)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("MEDIUMBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 6)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TEXT")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 17)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TIMESTAMP")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 10)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("TINYBLOB")); + } + break; + } + if (ZEPHIR_IS_LONG(&columnType, 2)) { + if (ZEPHIR_IS_EMPTY(&columnSql)) { + zephir_concat_self_str(&columnSql, SL("VARCHAR")); + } + ZEPHIR_CALL_METHOD(&_4$$35, this_ptr, "getcolumnsize", NULL, 0, column); + zephir_check_call_status(); + zephir_concat_self(&columnSql, &_4$$35); + break; + } + if (ZEPHIR_IS_EMPTY(&columnSql)) { + ZEPHIR_INIT_VAR(&_5$$38); + object_init_ex(&_5$$38, phalcon_db_exception_ce); + ZEPHIR_CALL_METHOD(&_6$$38, column, "getname", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_7$$38); + ZEPHIR_CONCAT_SV(&_7$$38, "Unrecognized SQLite data type at column ", &_6$$38); + ZEPHIR_CALL_METHOD(NULL, &_5$$38, "__construct", NULL, 29, &_7$$38); + zephir_check_call_status(); + zephir_throw_exception_debug(&_5$$38, "phalcon/Db/Dialect/Sqlite.zep", 520); + ZEPHIR_MM_RESTORE(); + return; + } + ZEPHIR_CALL_METHOD(&typeValues, column, "gettypevalues", NULL, 0); + zephir_check_call_status(); + if (!(ZEPHIR_IS_EMPTY(&typeValues))) { + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&valueSql$$40); + ZVAL_STRING(&valueSql$$40, ""); + zephir_is_iterable(&typeValues, 0, "phalcon/Db/Dialect/Sqlite.zep", 534); + if (Z_TYPE_P(&typeValues) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&typeValues), _8$$40) + { + ZEPHIR_INIT_NVAR(&value$$40); + ZVAL_COPY(&value$$40, _8$$40); + ZEPHIR_INIT_NVAR(&_10$$41); + ZVAL_STRING(&_10$$41, "\""); + ZEPHIR_CALL_FUNCTION(&_11$$41, "addcslashes", &_12, 211, &value$$40, &_10$$41); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_13$$41); + ZEPHIR_CONCAT_SVS(&_13$$41, "\"", &_11$$41, "\", "); + zephir_concat_self(&valueSql$$40, &_13$$41); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &typeValues, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_9$$40, &typeValues, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_9$$40)) { + break; + } + ZEPHIR_CALL_METHOD(&value$$40, &typeValues, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_14$$42); + ZVAL_STRING(&_14$$42, "\""); + ZEPHIR_CALL_FUNCTION(&_15$$42, "addcslashes", &_12, 211, &value$$40, &_14$$42); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_16$$42); + ZEPHIR_CONCAT_SVS(&_16$$42, "\"", &_15$$42, "\", "); + zephir_concat_self(&valueSql$$40, &_16$$42); + ZEPHIR_CALL_METHOD(NULL, &typeValues, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value$$40); + ZVAL_LONG(&_17$$40, 0); + ZVAL_LONG(&_18$$40, -2); + ZEPHIR_INIT_VAR(&_19$$40); + zephir_substr(&_19$$40, &valueSql$$40, 0 , -2 , 0); + ZEPHIR_INIT_VAR(&_20$$40); + ZEPHIR_CONCAT_SVS(&_20$$40, "(", &_19$$40, ")"); + zephir_concat_self(&columnSql, &_20$$40); + } else { + ZEPHIR_INIT_VAR(&_21$$43); + ZVAL_STRING(&_21$$43, "\""); + ZEPHIR_CALL_FUNCTION(&_22$$43, "addcslashes", &_12, 211, &typeValues, &_21$$43); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_23$$43); + ZEPHIR_CONCAT_SVS(&_23$$43, "(\"", &_22$$43, "\")"); + zephir_concat_self(&columnSql, &_23$$43); + } + } + } while(0); + + RETURN_CCTOR(&columnSql); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getCustomEventsManager) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, listIndexesSql) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, eventsManager, _0, _1; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, *keyName_param = NULL, _0, _1, _2$$3, _3$$3; + zval table, schema, keyName, sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&keyName); + ZVAL_UNDEF(&sql); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + Z_PARAM_STR_OR_NULL(keyName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 2, &table_param, &schema_param, &keyName_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } + if (!keyName_param) { + ZEPHIR_INIT_VAR(&keyName); + } else { + zephir_get_strval(&keyName, keyName_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("customEventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "escape", NULL, 53, &table); + zephir_check_call_status(); ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (zephir_array_isset_fetch(&eventsManager, &_0, &_1, 1)) { - RETURN_CTOR(&eventsManager); + ZEPHIR_CONCAT_SVS(&_1, "SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ", &_0, " COLLATE NOCASE"); + zephir_get_strval(&sql, &_1); + if (!(ZEPHIR_IS_EMPTY(&keyName))) { + ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "escape", NULL, 53, &keyName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&_3$$3); + ZEPHIR_CONCAT_SVS(&_3$$3, " AND name = ", &_2$$3, " COLLATE NOCASE"); + zephir_concat_self(&sql, &_3$$3); } - RETURN_MM_NULL(); + RETURN_CTOR(&sql); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getDI) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, listTables) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); + ZVAL_UNDEF(&schemaName); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "container"); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getEventsManager) -{ - zval *this_ptr = getThis(); - + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - RETURN_MEMBER(getThis(), "eventsManager"); + RETURN_MM_STRING("SELECT tbl_name FROM sqlite_master WHERE type = 'table' ORDER BY tbl_name"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, listViews) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, relations, _0, _1; + zval *schemaName_param = NULL; + zval schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("hasManySingle"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&relations, &_0, &_1, 1))) { - array_init(return_value); - RETURN_MM(); - } - RETURN_CTOR(&relations); + RETURN_MM_STRING("SELECT tbl_name FROM sqlite_master WHERE type = 'view' ORDER BY tbl_name"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasManyRecords) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, modifyColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, *record, record_sub, *parameters = NULL, parameters_sub, *method_param = NULL, __$null, relations, _0, _1, _2, _3, _4; - zval modelName, modelRelation, method, keyRelation; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, *currentColumn = NULL, currentColumn_sub, __$null; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&record_sub); - ZVAL_UNDEF(¶meters_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(¤tColumn_sub); ZVAL_NULL(&__$null); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 5) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) - Z_PARAM_OBJECT_OF_CLASS(record, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(3, 4) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) - Z_PARAM_STR_OR_NULL(method) + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(currentColumn, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 2, &modelName_param, &modelRelation_param, &record, ¶meters, &method_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 1, &tableName_param, &schemaName_param, &column, ¤tColumn); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&modelRelation); - } - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; + ZEPHIR_INIT_VAR(&schemaName); } - if (!method_param) { - ZEPHIR_INIT_VAR(&method); - } else { - zephir_get_strval(&method, method_param); + if (!currentColumn) { + currentColumn = ¤tColumn_sub; + currentColumn = &__$null; } - ZEPHIR_INIT_VAR(&_0); - zephir_fast_strtolower(&_0, &modelName); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &modelRelation); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &_0, "$", &_1); - zephir_get_strval(&keyRelation, &_2); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_3, this_ptr, ZEND_STRL("hasMany"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&relations, &_3, &keyRelation, 0))) { - RETURN_MM_BOOL(0); - } - zephir_array_fetch_long(&_4, &relations, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1141); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getrelationrecords", NULL, 0, &_4, record, parameters, &method); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Altering a DB column is not supported by SQLite", "phalcon/Db/Dialect/Sqlite.zep", 593); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasManyToMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, sharedLock) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, relations, _0, _1; + zval *sqlQuery_param = NULL; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&sqlQuery); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("hasManyToManySingle"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&relations, &_0, &_1, 1))) { - array_init(return_value); - RETURN_MM(); - } - RETURN_CTOR(&relations); + RETURN_CTOR(&sqlQuery); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasOne) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, tableExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, relations, _0, _1; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 1, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("hasOneSingle"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&relations, &_0, &_1, 1))) { - array_init(return_value); - RETURN_MM(); - } - RETURN_CTOR(&relations); + ZEPHIR_CONCAT_SVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='table' AND tbl_name='", &tableName, "'"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasOneAndHasMany) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, tableOptions) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0, _1; + zval *table_param = NULL, *schema_param = NULL; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "gethasone", NULL, 0, model); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_1, this_ptr, "gethasmany", NULL, 0, model); - zephir_check_call_status(); - zephir_fast_array_merge(return_value, &_0, &_1); - RETURN_MM(); + RETURN_MM_STRING(""); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasOneRecords) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, truncateTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, *record, record_sub, *parameters = NULL, parameters_sub, *method_param = NULL, __$null, relations, _0, _1, _2, _3, _4; - zval modelName, modelRelation, method, keyRelation; + zval *tableName_param = NULL, *schemaName_param = NULL; + zval tableName, schemaName, table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&record_sub); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&table); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 5) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) - Z_PARAM_OBJECT_OF_CLASS(record, phalcon_mvc_modelinterface_ce) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) - Z_PARAM_STR_OR_NULL(method) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 2, &modelName_param, &modelRelation_param, &record, ¶meters, &method_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; - } - if (!method_param) { - ZEPHIR_INIT_VAR(&method); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - zephir_get_strval(&method, method_param); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&_0); - zephir_fast_strtolower(&_0, &modelName); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &modelRelation); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &_0, "$", &_1); - zephir_get_strval(&keyRelation, &_2); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_3, this_ptr, ZEND_STRL("hasOne"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&relations, &_3, &keyRelation, 0))) { - RETURN_MM_BOOL(0); + if (!(ZEPHIR_IS_EMPTY(&schemaName))) { + ZEPHIR_INIT_VAR(&table); + ZEPHIR_CONCAT_SVSVS(&table, "\"", &schemaName, "\".\"", &tableName, "\""); + } else { + ZEPHIR_INIT_NVAR(&table); + ZEPHIR_CONCAT_SVS(&table, "\"", &tableName, "\""); } - zephir_array_fetch_long(&_4, &relations, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1210); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getrelationrecords", NULL, 0, &_4, record, parameters, &method); - zephir_check_call_status(); + ZEPHIR_CONCAT_SV(return_value, "DELETE FROM ", &table); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getHasOneThrough) +static PHP_METHOD(Phalcon_Db_Dialect_Sqlite, viewExists) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, relations, _0, _1; + zval *viewName_param = NULL, *schemaName_param = NULL; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 1, &viewName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("hasOneThroughSingle"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&relations, &_0, &_1, 1))) { - array_init(return_value); - RETURN_MM(); - } - RETURN_CTOR(&relations); + ZEPHIR_CONCAT_SVS(return_value, "SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM sqlite_master WHERE type='view' AND tbl_name='", &viewName, "'"); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getLastInitialized) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "lastInitialized"); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getLastQuery) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "lastQuery"); -} -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getModelPrefix) -{ - zval *this_ptr = getThis(); +ZEPHIR_INIT_CLASS(Phalcon_Db_Result_PdoResult) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db\\Result, PdoResult, phalcon, db_result_pdoresult, phalcon_db_result_pdoresult_method_entry, 0); - RETURN_MEMBER(getThis(), "prefix"); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("bindParams"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("bindTypes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("connection"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_result_pdoresult_ce, SL("fetchMode"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("pdoStatement"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("result"), ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_result_pdoresult_ce, SL("rowCount"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_result_pdoresult_ce, SL("sqlStatement"), ZEND_ACC_PROTECTED); + phalcon_db_result_pdoresult_ce->create_object = zephir_init_properties_Phalcon_Db_Result_PdoResult; + + zend_class_implements(phalcon_db_result_pdoresult_ce, 1, phalcon_db_resultinterface_ce); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getModelSchema) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, __construct) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, schema, _0, _1; + zval *connection, connection_sub, *result, result_sub, *sqlStatement = NULL, sqlStatement_sub, *bindParams = NULL, bindParams_sub, *bindTypes = NULL, bindTypes_sub, __$null; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&connection_sub); + ZVAL_UNDEF(&result_sub); + ZVAL_UNDEF(&sqlStatement_sub); + ZVAL_UNDEF(&bindParams_sub); + ZVAL_UNDEF(&bindTypes_sub); + ZVAL_NULL(&__$null); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(2, 5) + Z_PARAM_OBJECT_OF_CLASS(connection, phalcon_db_adapter_adapterinterface_ce) + Z_PARAM_OBJECT_OF_CLASS(result, zephir_get_internal_ce(SL("pdostatement"))) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(sqlStatement) + Z_PARAM_ZVAL_OR_NULL(bindParams) + Z_PARAM_ZVAL_OR_NULL(bindTypes) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params_without_memory_grow(2, 3, &connection, &result, &sqlStatement, &bindParams, &bindTypes); + if (!sqlStatement) { + sqlStatement = &sqlStatement_sub; + sqlStatement = &__$null; + } + if (!bindParams) { + bindParams = &bindParams_sub; + bindParams = &__$null; + } + if (!bindTypes) { + bindTypes = &bindTypes_sub; + bindTypes = &__$null; + } - zephir_read_property(&_0, this_ptr, ZEND_STRL("schemas"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&schema, &_0, &_1, 1))) { - RETURN_MM_NULL(); - } - RETURN_CTOR(&schema); + zephir_update_property_zval(this_ptr, ZEND_STRL("connection"), connection); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdoStatement"), result); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlStatement"), sqlStatement); + zephir_update_property_zval(this_ptr, ZEND_STRL("bindParams"), bindParams); + zephir_update_property_zval(this_ptr, ZEND_STRL("bindTypes"), bindTypes); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getModelSource) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, dataSeek) { + long n = 0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, entityName, _0, _3, _4, _5, _1$$3, _2$$3; + zephir_fcall_cache_entry *_4 = NULL; + zval *number_param = NULL, connection, pdo, sqlStatement, bindParams, statement, _0, _1$$4, _2$$4, _3$$6; + zend_long number, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&entityName); + ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&pdo); + ZVAL_UNDEF(&sqlStatement); + ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&statement); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_LONG(number) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 0, &number_param); + number = zephir_get_intval(number_param); - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sources"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_0, &entityName))) { - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_INIT_VAR(&_2$$3); - zephir_get_class_ns(&_2$$3, model, 0); - zephir_uncamelize(&_1$$3, &_2$$3, NULL ); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setmodelsource", NULL, 0, model, &_1$$3); + zephir_read_property(&_0, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&connection, &_0); + ZEPHIR_CALL_METHOD(&pdo, &connection, "getinternalhandler", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&sqlStatement, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&bindParams, &_0); + if (Z_TYPE_P(&bindParams) == IS_ARRAY) { + ZEPHIR_CALL_METHOD(&statement, &pdo, "prepare", NULL, 0, &sqlStatement); + zephir_check_call_status(); + if (Z_TYPE_P(&statement) == IS_OBJECT) { + zephir_read_property(&_2$$4, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1$$4, &connection, "executeprepared", NULL, 0, &statement, &bindParams, &_2$$4); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&statement, &_1$$4); + } + } else { + ZEPHIR_CALL_METHOD(&statement, &pdo, "query", NULL, 0, &sqlStatement); zephir_check_call_status(); } - zephir_read_property(&_3, this_ptr, ZEND_STRL("prefix"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_4, this_ptr, ZEND_STRL("sources"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_5, &_4, &entityName, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1287); - ZEPHIR_CONCAT_VV(return_value, &_3, &_5); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdoStatement"), &statement); + n = -1; + number--; + while (1) { + if (!(n != number)) { + break; + } + zephir_read_property(&_3$$6, this_ptr, ZEND_STRL("fetchMode"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(NULL, &statement, "fetch", &_4, 0, &_3$$6); + zephir_check_call_status(); + n++; + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getReadConnection) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, execute) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("readConnectionServices"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnection", NULL, 0, model, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "execute", NULL, 0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getReadConnectionService) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, fetch) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0; + zval *fetchStyle_param = NULL, *cursorOrientation_param = NULL, *cursorOffset_param = NULL, mode, _0, _1, _2; + zend_long fetchStyle, cursorOrientation, cursorOffset, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&mode); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 3) + Z_PARAM_OPTIONAL + Z_PARAM_LONG_OR_NULL(fetchStyle, is_null_true) + Z_PARAM_LONG(cursorOrientation) + Z_PARAM_LONG(cursorOffset) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("readConnectionServices"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnectionservice", NULL, 0, model, &_0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getRelationByAlias) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *modelName_param = NULL, *alias_param = NULL, relation, _0, _1; - zval modelName, alias, _2; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(alias) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &alias_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + zephir_fetch_params(1, 0, 3, &fetchStyle_param, &cursorOrientation_param, &cursorOffset_param); + if (!fetchStyle_param) { + fetchStyle = 0; } else { - ZEPHIR_INIT_VAR(&modelName); + fetchStyle = zephir_get_intval(fetchStyle_param); } - if (UNEXPECTED(Z_TYPE_P(alias_param) != IS_STRING && Z_TYPE_P(alias_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'alias' must be of the type string")); - RETURN_MM_NULL(); + if (!cursorOrientation_param) { + cursorOrientation = 0; + } else { + cursorOrientation = zephir_get_intval(cursorOrientation_param); } - if (EXPECTED(Z_TYPE_P(alias_param) == IS_STRING)) { - zephir_get_strval(&alias, alias_param); + if (!cursorOffset_param) { + cursorOffset = 0; } else { - ZEPHIR_INIT_VAR(&alias); + cursorOffset = zephir_get_intval(cursorOffset_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("aliases"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &modelName, "$", &alias); - zephir_fast_strtolower(&_1, &_2); - if (!(zephir_array_isset_fetch(&relation, &_0, &_1, 1))) { - RETURN_MM_BOOL(0); + if (1 == 1) { + ZEPHIR_INIT_VAR(&mode); + ZVAL_LONG(&mode, fetchStyle); + } else { + ZEPHIR_OBS_NVAR(&mode); + zephir_read_property(&mode, this_ptr, ZEND_STRL("fetchMode"), PH_NOISY_CC); } - RETURN_CTOR(&relation); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, cursorOrientation); + ZVAL_LONG(&_2, cursorOffset); + ZEPHIR_RETURN_CALL_METHOD(&_0, "fetch", NULL, 0, &mode, &_1, &_2); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getRelationRecords) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, fetchAll) { - zend_string *_20$$11; - zend_ulong _19$$11; - zend_bool reusable = 0, _35$$21; - zval placeholders, conditions, joinConditions, _36, _34$$21; + zend_bool _3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_24 = NULL, *_29 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval method, retrieveMethod; - zval *relation, relation_sub, *record, record_sub, *parameters = NULL, parameters_sub, *method_param = NULL, __$null, referencedModel, intermediateModel, intermediateFields, fields, builder, extraParameters, refPosition, field, referencedFields, findParams, findArguments, uniqueKey, records, arguments, rows, firstRow, query, _0, _31, _32, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6$$3, _7$$3, _11$$3, _8$$6, _9$$6, _10$$6, _12$$8, _13$$8, _14$$10, _15$$10, _16$$11, *_17$$11, _18$$11, _21$$12, _22$$12, _23$$12, _25$$12, _26$$13, _27$$13, _28$$13, _30$$13, _33$$16; + zval *fetchStyle_param = NULL, *fetchArgument_param = NULL, *ctorArgs_param = NULL, pdoStatement, mode, _0, _1$$3, _2$$3, _4$$4, _5$$4; + zend_long fetchStyle, fetchArgument, ctorArgs, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&relation_sub); - ZVAL_UNDEF(&record_sub); - ZVAL_UNDEF(¶meters_sub); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&referencedModel); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&intermediateFields); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&builder); - ZVAL_UNDEF(&extraParameters); - ZVAL_UNDEF(&refPosition); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&findParams); - ZVAL_UNDEF(&findArguments); - ZVAL_UNDEF(&uniqueKey); - ZVAL_UNDEF(&records); - ZVAL_UNDEF(&arguments); - ZVAL_UNDEF(&rows); - ZVAL_UNDEF(&firstRow); - ZVAL_UNDEF(&query); + ZVAL_UNDEF(&pdoStatement); + ZVAL_UNDEF(&mode); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_31); - ZVAL_UNDEF(&_32); ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_5$$3); - ZVAL_UNDEF(&_6$$3); - ZVAL_UNDEF(&_7$$3); - ZVAL_UNDEF(&_11$$3); - ZVAL_UNDEF(&_8$$6); - ZVAL_UNDEF(&_9$$6); - ZVAL_UNDEF(&_10$$6); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_13$$8); - ZVAL_UNDEF(&_14$$10); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_16$$11); - ZVAL_UNDEF(&_18$$11); - ZVAL_UNDEF(&_21$$12); - ZVAL_UNDEF(&_22$$12); - ZVAL_UNDEF(&_23$$12); - ZVAL_UNDEF(&_25$$12); - ZVAL_UNDEF(&_26$$13); - ZVAL_UNDEF(&_27$$13); - ZVAL_UNDEF(&_28$$13); - ZVAL_UNDEF(&_30$$13); - ZVAL_UNDEF(&_33$$16); - ZVAL_UNDEF(&method); - ZVAL_UNDEF(&retrieveMethod); - ZVAL_UNDEF(&placeholders); - ZVAL_UNDEF(&conditions); - ZVAL_UNDEF(&joinConditions); - ZVAL_UNDEF(&_36); - ZVAL_UNDEF(&_34$$21); + ZVAL_UNDEF(&_4$$4); + ZVAL_UNDEF(&_5$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 4) - Z_PARAM_OBJECT_OF_CLASS(relation, phalcon_mvc_model_relationinterface_ce) - Z_PARAM_OBJECT_OF_CLASS(record, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 3) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(parameters) - Z_PARAM_STR_OR_NULL(method) + Z_PARAM_LONG_OR_NULL(fetchStyle, is_null_true) + Z_PARAM_LONG(fetchArgument) + Z_PARAM_LONG(ctorArgs) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 2, &relation, &record, ¶meters, &method_param); - if (!parameters) { - parameters = ¶meters_sub; - parameters = &__$null; + zephir_fetch_params(1, 0, 3, &fetchStyle_param, &fetchArgument_param, &ctorArgs_param); + if (!fetchStyle_param) { + fetchStyle = 0; + } else { + fetchStyle = zephir_get_intval(fetchStyle_param); } - if (!method_param) { - ZEPHIR_INIT_VAR(&method); + if (!fetchArgument_param) { + fetchArgument = 0; } else { - zephir_get_strval(&method, method_param); + fetchArgument = zephir_get_intval(fetchArgument_param); + } + if (!ctorArgs_param) { + ctorArgs = 0; + } else { + ctorArgs = zephir_get_intval(ctorArgs_param); } - ZEPHIR_INIT_VAR(&placeholders); - array_init(&placeholders); - ZEPHIR_CALL_METHOD(&extraParameters, relation, "getparams", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModel, relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_0, relation, "isthrough", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&_0)) { - ZEPHIR_INIT_VAR(&conditions); - array_init(&conditions); - ZEPHIR_CALL_METHOD(&intermediateModel, relation, "getintermediatemodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateFields, relation, "getintermediatefields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&fields, relation, "getfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&fields) == IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not supported", "phalcon/Mvc/Model/Manager.zep", 1384); - return; - } - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_CONCAT_SVSVS(&_1$$3, "[", &intermediateModel, "].[", &intermediateFields, "] = :APR0:"); - zephir_array_append(&conditions, &_1$$3, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1387); - ZEPHIR_CALL_METHOD(&_2$$3, record, "readattribute", NULL, 0, &fields); - zephir_check_call_status(); - zephir_array_update_string(&placeholders, SL("APR0"), &_2$$3, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&joinConditions); - array_init(&joinConditions); - ZEPHIR_CALL_METHOD(&intermediateFields, relation, "getintermediatereferencedfields", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&intermediateFields) == IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not supported", "phalcon/Mvc/Model/Manager.zep", 1398); - return; - } - ZEPHIR_CALL_METHOD(&_3$$3, relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_4$$3); - ZEPHIR_CONCAT_SVSVSVSVS(&_4$$3, "[", &intermediateModel, "].[", &intermediateFields, "] = [", &referencedModel, "].[", &_3$$3, "]"); - zephir_array_append(&joinConditions, &_4$$3, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1401); - ZEPHIR_CALL_METHOD(&_5$$3, this_ptr, "mergefindparameters", NULL, 441, &extraParameters, parameters); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&builder, this_ptr, "createbuilder", NULL, 0, &_5$$3); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &builder, "from", NULL, 0, &referencedModel); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_6$$3); - zephir_fast_join_str(&_6$$3, SL(" AND "), &joinConditions); - ZEPHIR_CALL_METHOD(NULL, &builder, "innerjoin", NULL, 0, &intermediateModel, &_6$$3); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_7$$3); - zephir_fast_join_str(&_7$$3, SL(" AND "), &conditions); - ZEPHIR_CALL_METHOD(NULL, &builder, "andwhere", NULL, 0, &_7$$3, &placeholders); - zephir_check_call_status(); - if (ZEPHIR_IS_STRING(&method, "count")) { - ZEPHIR_INIT_VAR(&_8$$6); - ZVAL_STRING(&_8$$6, "COUNT(*) AS rowcount"); - ZEPHIR_CALL_METHOD(NULL, &builder, "columns", NULL, 0, &_8$$6); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_9$$6, &builder, "getquery", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&rows, &_9$$6, "execute", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&firstRow, &rows, "getfirst", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_8$$6); - ZVAL_STRING(&_8$$6, "rowcount"); - ZEPHIR_CALL_METHOD(&_10$$6, &firstRow, "readattribute", NULL, 0, &_8$$6); - zephir_check_call_status(); - RETURN_MM_LONG(zephir_get_intval(&_10$$6)); - } - ZEPHIR_CALL_METHOD(&_11$$3, &builder, "getquery", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&query, &_11$$3); - ZEPHIR_CALL_METHOD(&_11$$3, relation, "gettype", NULL, 0); - zephir_check_call_status(); - do { - if (ZEPHIR_IS_LONG(&_11$$3, 4)) { - ZEPHIR_RETURN_CALL_METHOD(&query, "execute", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - if (ZEPHIR_IS_LONG(&_11$$3, 3)) { - ZVAL_BOOL(&_13$$8, 1); - ZEPHIR_CALL_METHOD(&_12$$8, &query, "setuniquerow", NULL, 0, &_13$$8); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&_12$$8, "execute", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Unknown relation type", "phalcon/Mvc/Model/Manager.zep", 1446); - return; - } while(0); - - } - ZEPHIR_INIT_NVAR(&conditions); - array_init(&conditions); - ZEPHIR_CALL_METHOD(&fields, relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&fields) != IS_ARRAY) { - ZEPHIR_INIT_VAR(&_14$$10); - ZEPHIR_CONCAT_SVS(&_14$$10, "[", &referencedFields, "] = :APR0:"); - zephir_array_append(&conditions, &_14$$10, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1463); - ZEPHIR_CALL_METHOD(&_15$$10, record, "readattribute", NULL, 0, &fields); - zephir_check_call_status(); - zephir_array_update_string(&placeholders, SL("APR0"), &_15$$10, PH_COPY | PH_SEPARATE); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&pdoStatement, &_0); + if (1 == 1) { + ZEPHIR_INIT_VAR(&mode); + ZVAL_LONG(&mode, fetchStyle); } else { - ZEPHIR_CALL_METHOD(&_16$$11, relation, "getfields", NULL, 0); - zephir_check_call_status(); - zephir_is_iterable(&_16$$11, 0, "phalcon/Mvc/Model/Manager.zep", 1470); - if (Z_TYPE_P(&_16$$11) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_16$$11), _19$$11, _20$$11, _17$$11) - { - ZEPHIR_INIT_NVAR(&refPosition); - if (_20$$11 != NULL) { - ZVAL_STR_COPY(&refPosition, _20$$11); - } else { - ZVAL_LONG(&refPosition, _19$$11); - } - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _17$$11); - zephir_array_fetch(&_21$$12, &referencedFields, &refPosition, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1467); - ZEPHIR_INIT_NVAR(&_22$$12); - ZEPHIR_CONCAT_SVSVS(&_22$$12, "[", &_21$$12, "] = :APR", &refPosition, ":"); - zephir_array_append(&conditions, &_22$$12, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1467); - ZEPHIR_CALL_METHOD(&_23$$12, record, "readattribute", &_24, 0, &field); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_25$$12); - ZEPHIR_CONCAT_SV(&_25$$12, "APR", &refPosition); - zephir_array_update_zval(&placeholders, &_25$$12, &_23$$12, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_16$$11, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_18$$11, &_16$$11, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_18$$11)) { - break; - } - ZEPHIR_CALL_METHOD(&refPosition, &_16$$11, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&field, &_16$$11, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_fetch(&_26$$13, &referencedFields, &refPosition, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 1467); - ZEPHIR_INIT_NVAR(&_27$$13); - ZEPHIR_CONCAT_SVSVS(&_27$$13, "[", &_26$$13, "] = :APR", &refPosition, ":"); - zephir_array_append(&conditions, &_27$$13, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1467); - ZEPHIR_CALL_METHOD(&_28$$13, record, "readattribute", &_29, 0, &field); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_30$$13); - ZEPHIR_CONCAT_SV(&_30$$13, "APR", &refPosition); - zephir_array_update_zval(&placeholders, &_30$$13, &_28$$13, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &_16$$11, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&field); - ZEPHIR_INIT_NVAR(&refPosition); + ZEPHIR_OBS_NVAR(&mode); + zephir_read_property(&mode, this_ptr, ZEND_STRL("fetchMode"), PH_NOISY_CC); } - ZEPHIR_INIT_VAR(&findParams); - zephir_create_array(&findParams, 3, 0); - ZEPHIR_INIT_VAR(&_31); - zephir_fast_join_str(&_31, SL(" AND "), &conditions); - zephir_array_fast_append(&findParams, &_31); - zephir_array_update_string(&findParams, SL("bind"), &placeholders, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_32, record, "getdi", NULL, 0); - zephir_check_call_status(); - zephir_array_update_string(&findParams, SL("di"), &_32, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&findArguments, this_ptr, "mergefindparameters", NULL, 441, &findParams, parameters); - zephir_check_call_status(); - if (Z_TYPE_P(&extraParameters) == IS_ARRAY) { - ZEPHIR_CALL_METHOD(&findParams, this_ptr, "mergefindparameters", NULL, 441, &extraParameters, &findArguments); + if (fetchStyle == 8) { + ZVAL_LONG(&_1$$3, fetchArgument); + ZVAL_LONG(&_2$$3, ctorArgs); + ZEPHIR_RETURN_CALL_METHOD(&pdoStatement, "fetchall", NULL, 0, &mode, &_1$$3, &_2$$3); zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&findParams, &findArguments); + RETURN_MM(); } - if (ZEPHIR_IS_NULL(&method)) { - ZEPHIR_CALL_METHOD(&_33$$16, relation, "gettype", NULL, 0); - zephir_check_call_status(); - do { - if (ZEPHIR_IS_LONG(&_33$$16, 0) || ZEPHIR_IS_LONG(&_33$$16, 1)) { - ZEPHIR_INIT_VAR(&retrieveMethod); - ZVAL_STRING(&retrieveMethod, "findFirst"); - break; - } - if (ZEPHIR_IS_LONG(&_33$$16, 2)) { - ZEPHIR_INIT_NVAR(&retrieveMethod); - ZVAL_STRING(&retrieveMethod, "find"); - break; - } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Unknown relation type", "phalcon/Mvc/Model/Manager.zep", 1508); - return; - } while(0); - - } else { - ZEPHIR_CPY_WRT(&retrieveMethod, &method); + _3 = fetchStyle == 7; + if (!(_3)) { + _3 = fetchStyle == 10; } - ZEPHIR_CALL_METHOD(&_32, relation, "isreusable", NULL, 0); - zephir_check_call_status(); - reusable = zephir_get_boolval(&_32); - if (reusable) { - ZEPHIR_INIT_VAR(&_34$$21); - zephir_create_array(&_34$$21, 2, 0); - zephir_array_fast_append(&_34$$21, &findParams); - zephir_array_fast_append(&_34$$21, &retrieveMethod); - ZEPHIR_INIT_VAR(&uniqueKey); - zephir_unique_key(&uniqueKey, &referencedModel, &_34$$21); - ZEPHIR_CALL_METHOD(&records, this_ptr, "getreusablerecords", NULL, 0, &referencedModel, &uniqueKey); + if (_3) { + ZVAL_LONG(&_4$$4, fetchStyle); + ZVAL_LONG(&_5$$4, fetchArgument); + ZEPHIR_RETURN_CALL_METHOD(&pdoStatement, "fetchall", NULL, 0, &_4$$4, &_5$$4); zephir_check_call_status(); - _35$$21 = Z_TYPE_P(&records) == IS_ARRAY; - if (!(_35$$21)) { - _35$$21 = Z_TYPE_P(&records) == IS_OBJECT; - } - if (_35$$21) { - RETURN_CCTOR(&records); - } + RETURN_MM(); } - ZEPHIR_INIT_VAR(&arguments); - zephir_create_array(&arguments, 1, 0); - zephir_array_fast_append(&arguments, &findParams); - ZEPHIR_INIT_VAR(&_36); - zephir_create_array(&_36, 2, 0); - ZEPHIR_CALL_METHOD(&_32, this_ptr, "load", NULL, 0, &referencedModel); + ZVAL_LONG(&_0, fetchStyle); + ZEPHIR_RETURN_CALL_METHOD(&pdoStatement, "fetchall", NULL, 0, &_0); zephir_check_call_status(); - zephir_array_fast_append(&_36, &_32); - zephir_array_fast_append(&_36, &retrieveMethod); - ZEPHIR_INIT_NVAR(&records); - ZEPHIR_CALL_USER_FUNC_ARRAY(&records, &_36, &arguments); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Result_PdoResult, fetchArray) +{ + zval _0, _1; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + + + ZEPHIR_MM_GROW(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("fetchMode"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "fetch", NULL, 0, &_1); zephir_check_call_status(); - if (reusable) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setreusablerecords", NULL, 0, &referencedModel, &uniqueKey, &records); - zephir_check_call_status(); - } - RETURN_CCTOR(&records); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getRelations) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, getInternalResult) { - zval allRelations; + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "pdoStatement"); +} + +static PHP_METHOD(Phalcon_Db_Result_PdoResult, numRows) +{ + zend_bool _2$$3; + zval sqlStatement, rowCount, connection, type, pdoStatement, matches, result, row, _0, _1$$3, _3$$4, _4$$5, _5$$6, _6$$6, _7$$6, _8$$7, _9$$7, _10$$7, _11$$7; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, entityName, relations, relation, _0, _3, _6, _9, _12, *_1$$3, _2$$3, *_4$$6, _5$$6, *_7$$9, _8$$9, *_10$$12, _11$$12, *_13$$15, _14$$15; - zval modelName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&relation); + ZVAL_UNDEF(&sqlStatement); + ZVAL_UNDEF(&rowCount); + ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&pdoStatement); + ZVAL_UNDEF(&matches); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&row); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_4$$5); ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_8$$9); - ZVAL_UNDEF(&_11$$12); - ZVAL_UNDEF(&_14$$15); - ZVAL_UNDEF(&allRelations); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(modelName) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_9$$7); + ZVAL_UNDEF(&_10$$7); + ZVAL_UNDEF(&_11$$7); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &modelName_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - - ZEPHIR_INIT_VAR(&entityName); - zephir_fast_strtolower(&entityName, &modelName); - ZEPHIR_INIT_VAR(&allRelations); - array_init(&allRelations); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_0, this_ptr, ZEND_STRL("belongsToSingle"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_0, &entityName, 0)) { - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model/Manager.zep", 1574); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _1$$3) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _1$$3); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1572); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2$$3, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1572); - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&relation); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_3, this_ptr, ZEND_STRL("hasManySingle"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_3, &entityName, 0)) { - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model/Manager.zep", 1583); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _4$$6) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _4$$6); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1581); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_5$$6, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_5$$6)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1581); - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&relation); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_6, this_ptr, ZEND_STRL("hasOneSingle"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_6, &entityName, 0)) { - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model/Manager.zep", 1592); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _7$$9) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _7$$9); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1590); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_8$$9, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_8$$9)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1590); - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_read_property(&_0, this_ptr, ZEND_STRL("rowCount"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&rowCount, &_0); + if (ZEPHIR_IS_FALSE_IDENTICAL(&rowCount)) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("connection"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&connection, &_1$$3); + ZEPHIR_CALL_METHOD(&type, &connection, "gettype", NULL, 0); + zephir_check_call_status(); + _2$$3 = ZEPHIR_IS_STRING(&type, "mysql"); + if (!(_2$$3)) { + _2$$3 = ZEPHIR_IS_STRING(&type, "pgsql"); } - ZEPHIR_INIT_NVAR(&relation); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_9, this_ptr, ZEND_STRL("hasOneThroughSingle"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_9, &entityName, 0)) { - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model/Manager.zep", 1601); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _10$$12) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _10$$12); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1599); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); + if (_2$$3) { + zephir_read_property(&_3$$4, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&pdoStatement, &_3$$4); + ZEPHIR_CALL_METHOD(&rowCount, &pdoStatement, "rowcount", NULL, 0); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_11$$12, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_11$$12)) { - break; - } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1599); - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); - } } - ZEPHIR_INIT_NVAR(&relation); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_12, this_ptr, ZEND_STRL("hasManyToManySingle"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_12, &entityName, 0)) { - zephir_is_iterable(&relations, 0, "phalcon/Mvc/Model/Manager.zep", 1610); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&relations), _13$$15) - { - ZEPHIR_INIT_NVAR(&relation); - ZVAL_COPY(&relation, _13$$15); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1608); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &relations, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_14$$15, &relations, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_14$$15)) { - break; + if (ZEPHIR_IS_FALSE_IDENTICAL(&rowCount)) { + zephir_read_property(&_4$$5, this_ptr, ZEND_STRL("sqlStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&sqlStatement, &_4$$5); + if (!(zephir_start_with_str(&sqlStatement, SL("SELECT COUNT(*) ")))) { + ZEPHIR_INIT_VAR(&matches); + ZVAL_NULL(&matches); + ZEPHIR_INIT_VAR(&_5$$6); + ZVAL_STRING(&_5$$6, "/^SELECT\\s+(.*)/i"); + ZEPHIR_INIT_VAR(&_6$$6); + ZEPHIR_INIT_VAR(&_7$$6); + ZVAL_STRING(&_7$$6, "/^SELECT\\s+(.*)/i"); + zephir_preg_match(&_6$$6, &_7$$6, &sqlStatement, &matches, 0, 0 , 0 ); + if (zephir_is_true(&_6$$6)) { + zephir_array_fetch_long(&_8$$7, &matches, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Result/PdoResult.zep", 311); + ZEPHIR_INIT_VAR(&_9$$7); + ZEPHIR_CONCAT_SVS(&_9$$7, "SELECT COUNT(*) \"numrows\" FROM (SELECT ", &_8$$7, ")"); + zephir_read_property(&_10$$7, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_11$$7, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&result, &connection, "query", NULL, 0, &_9$$7, &_10$$7, &_11$$7); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&row, &result, "fetch", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&rowCount); + zephir_array_fetch_string(&rowCount, &row, SL("numrows"), PH_NOISY, "phalcon/Db/Result/PdoResult.zep", 317); } - ZEPHIR_CALL_METHOD(&relation, &relations, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&allRelations, &relation, PH_SEPARATE, "phalcon/Mvc/Model/Manager.zep", 1608); - ZEPHIR_CALL_METHOD(NULL, &relations, "next", NULL, 0); - zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&rowCount); + ZVAL_LONG(&rowCount, 1); } } - ZEPHIR_INIT_NVAR(&relation); + zephir_update_property_zval(this_ptr, ZEND_STRL("rowCount"), &rowCount); } - RETURN_CTOR(&allRelations); + RETURN_CCTOR(&rowCount); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getRelationsBetween) +static PHP_METHOD(Phalcon_Db_Result_PdoResult, setFetchMode) { + zend_bool _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *first_param = NULL, *second_param = NULL, relations, _0, _1, _2, _3, _4, _5, _6, _7; - zval first, second, keyRelation; + zval *fetchMode_param = NULL, *colNoOrClassNameOrObject = NULL, colNoOrClassNameOrObject_sub, *ctorargs = NULL, ctorargs_sub, __$null, pdoStatement, _0, _2$$3, _3$$3, _4$$5, _5$$5, _6$$7, _7$$7; + zend_long fetchMode, ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&first); - ZVAL_UNDEF(&second); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&relations); + ZVAL_UNDEF(&colNoOrClassNameOrObject_sub); + ZVAL_UNDEF(&ctorargs_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&pdoStatement); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$5); + ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_7$$7); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(first) - Z_PARAM_STR(second) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_LONG(fetchMode) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(colNoOrClassNameOrObject) + Z_PARAM_ZVAL_OR_NULL(ctorargs) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &first_param, &second_param); - if (UNEXPECTED(Z_TYPE_P(first_param) != IS_STRING && Z_TYPE_P(first_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'first' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(first_param) == IS_STRING)) { - zephir_get_strval(&first, first_param); - } else { - ZEPHIR_INIT_VAR(&first); - } - if (UNEXPECTED(Z_TYPE_P(second_param) != IS_STRING && Z_TYPE_P(second_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'second' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 2, &fetchMode_param, &colNoOrClassNameOrObject, &ctorargs); + fetchMode = zephir_get_intval(fetchMode_param); + if (!colNoOrClassNameOrObject) { + colNoOrClassNameOrObject = &colNoOrClassNameOrObject_sub; + colNoOrClassNameOrObject = &__$null; } - if (EXPECTED(Z_TYPE_P(second_param) == IS_STRING)) { - zephir_get_strval(&second, second_param); - } else { - ZEPHIR_INIT_VAR(&second); + if (!ctorargs) { + ctorargs = &ctorargs_sub; + ctorargs = &__$null; } - ZEPHIR_INIT_VAR(&_0); - zephir_fast_strtolower(&_0, &first); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &second); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_VSV(&_2, &_0, "$", &_1); - zephir_get_strval(&keyRelation, &_2); - ZEPHIR_OBS_VAR(&relations); - zephir_read_property(&_3, this_ptr, ZEND_STRL("belongsTo"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_3, &keyRelation, 0)) { - RETURN_CCTOR(&relations); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_4, this_ptr, ZEND_STRL("hasMany"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_4, &keyRelation, 0)) { - RETURN_CCTOR(&relations); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_5, this_ptr, ZEND_STRL("hasOne"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_5, &keyRelation, 0)) { - RETURN_CCTOR(&relations); - } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_6, this_ptr, ZEND_STRL("hasOneThrough"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_6, &keyRelation, 0)) { - RETURN_CCTOR(&relations); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdoStatement"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&pdoStatement, &_0); + _1 = fetchMode == 8; + if (!(_1)) { + _1 = fetchMode == 9; } - ZEPHIR_OBS_NVAR(&relations); - zephir_read_property(&_7, this_ptr, ZEND_STRL("hasManyToMany"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&relations, &_7, &keyRelation, 0)) { - RETURN_CCTOR(&relations); + if (_1) { + ZVAL_LONG(&_3$$3, fetchMode); + ZEPHIR_CALL_METHOD(&_2$$3, &pdoStatement, "setfetchmode", NULL, 0, &_3$$3, colNoOrClassNameOrObject, ctorargs); + zephir_check_call_status(); + if (!(zephir_is_true(&_2$$3))) { + RETURN_MM_BOOL(0); + } + } else if (fetchMode == 7) { + ZVAL_LONG(&_5$$5, fetchMode); + ZEPHIR_CALL_METHOD(&_4$$5, &pdoStatement, "setfetchmode", NULL, 0, &_5$$5, colNoOrClassNameOrObject); + zephir_check_call_status(); + if (!(zephir_is_true(&_4$$5))) { + RETURN_MM_BOOL(0); + } + } else { + ZVAL_LONG(&_7$$7, fetchMode); + ZEPHIR_CALL_METHOD(&_6$$7, &pdoStatement, "setfetchmode", NULL, 0, &_7$$7); + zephir_check_call_status(); + if (!(zephir_is_true(&_6$$7))) { + RETURN_MM_BOOL(0); + } } - RETURN_MM_BOOL(0); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_LONG(&_0, fetchMode); + zephir_update_property_zval(this_ptr, ZEND_STRL("fetchMode"), &_0); + RETURN_MM_BOOL(1); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getReusableRecords) +zend_object *zephir_init_properties_Phalcon_Db_Result_PdoResult(zend_class_entry *class_type) { + zval _0, _2, _1$$3, _3$$4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *modelName_param = NULL, *key_param = NULL, records, _0; - zval modelName, key; - zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_3$$4); + - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&records); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(key) - ZEND_PARSE_PARAMETERS_END(); + ZEPHIR_MM_GROW(); + + { + zval local_this_ptr, *this_ptr = &local_this_ptr; + ZEPHIR_CREATE_OBJECT(this_ptr, class_type); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_0) == IS_NULL) { + ZEPHIR_INIT_VAR(&_1$$3); + array_init(&_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("bindTypes"), &_1$$3); + } + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_2) == IS_NULL) { + ZEPHIR_INIT_VAR(&_3$$4); + array_init(&_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("bindParams"), &_3$$4); + } + ZEPHIR_MM_RESTORE(); + return Z_OBJ_P(this_ptr); + } +} + + + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &key_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); - } else { - ZEPHIR_INIT_VAR(&key); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("reusable"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&records, &_0, &key, 1))) { - RETURN_MM_NULL(); - } - RETURN_CTOR(&records); + +ZEPHIR_INIT_CLASS(Phalcon_Db_Profiler_Item) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Db\\Profiler, Item, phalcon, db_profiler_item, phalcon_db_profiler_item_method_entry, 0); + + zend_declare_property_null(phalcon_db_profiler_item_ce, SL("finalTime"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_profiler_item_ce, SL("initialTime"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_profiler_item_ce, SL("sqlBindTypes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_profiler_item_ce, SL("sqlStatement"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_profiler_item_ce, SL("sqlVariables"), ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getWriteConnection) +static PHP_METHOD(Phalcon_Db_Profiler_Item, setFinalTime) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0; + zval *finalTime_param = NULL, _0; + double finalTime; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_ZVAL(finalTime) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params_without_memory_grow(1, 0, &finalTime_param); + finalTime = zephir_get_doubleval(finalTime_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("writeConnectionServices"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnection", NULL, 0, model, &_0); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_DOUBLE(&_0, finalTime); + zephir_update_property_zval(this_ptr, ZEND_STRL("finalTime"), &_0); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getWriteConnectionService) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getFinalTime) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + + + RETURN_MEMBER(getThis(), "finalTime"); +} + +static PHP_METHOD(Phalcon_Db_Profiler_Item, setInitialTime) +{ + zval *initialTime_param = NULL, _0; + double initialTime; + zval *this_ptr = getThis(); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_ZVAL(initialTime) ZEND_PARSE_PARAMETERS_END(); #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params_without_memory_grow(1, 0, &initialTime_param); + initialTime = zephir_get_doubleval(initialTime_param); - zephir_read_property(&_0, this_ptr, ZEND_STRL("writeConnectionServices"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getconnectionservice", NULL, 0, model, &_0); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_DOUBLE(&_0, initialTime); + zephir_update_property_zval(this_ptr, ZEND_STRL("initialTime"), &_0); + RETURN_THISW(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, hasBelongsTo) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getInitialTime) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "initialTime"); +} + +static PHP_METHOD(Phalcon_Db_Profiler_Item, setSqlBindTypes) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, _0; - zval modelName, modelRelation; + zval *sqlBindTypes_param = NULL; + zval sqlBindTypes; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlBindTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(sqlBindTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } + zephir_fetch_params(1, 1, 0, &sqlBindTypes_param); + zephir_get_arrval(&sqlBindTypes, sqlBindTypes_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "belongsTo"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "checkhasrelationship", NULL, 442, &_0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlBindTypes"), &sqlBindTypes); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, hasHasMany) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getSqlBindTypes) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "sqlBindTypes"); +} + +static PHP_METHOD(Phalcon_Db_Profiler_Item, setSqlStatement) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, _0; - zval modelName, modelRelation; + zval *sqlStatement_param = NULL; + zval sqlStatement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlStatement); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(sqlStatement) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } + zephir_fetch_params(1, 1, 0, &sqlStatement_param); + zephir_get_strval(&sqlStatement, sqlStatement_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hasMany"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "checkhasrelationship", NULL, 442, &_0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlStatement"), &sqlStatement); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, hasHasManyToMany) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getSqlStatement) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, _0; - zval modelName, modelRelation; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hasManyToMany"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "checkhasrelationship", NULL, 442, &_0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "sqlStatement"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, hasHasOne) +static PHP_METHOD(Phalcon_Db_Profiler_Item, setSqlVariables) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, _0; - zval modelName, modelRelation; + zval *sqlVariables_param = NULL; + zval sqlVariables; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlVariables); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(sqlVariables) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } + zephir_fetch_params(1, 1, 0, &sqlVariables_param); + zephir_get_arrval(&sqlVariables, sqlVariables_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hasOne"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "checkhasrelationship", NULL, 442, &_0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlVariables"), &sqlVariables); + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, hasHasOneThrough) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getSqlVariables) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, *modelRelation_param = NULL, _0; - zval modelName, modelRelation; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &modelName_param, &modelRelation_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); - } else { - ZEPHIR_INIT_VAR(&modelName); - } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); - } else { - ZEPHIR_INIT_VAR(&modelRelation); - } - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "hasOneThrough"); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "checkhasrelationship", NULL, 442, &_0, &modelName, &modelRelation); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "sqlVariables"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, initialize) +static PHP_METHOD(Phalcon_Db_Profiler_Item, getTotalElapsedSeconds) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, __$true, className, eventsManager, _0, _1, _2$$5; + zval _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&eventsManager); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$5); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, model, 1); - zephir_read_property(&_0, this_ptr, ZEND_STRL("initialized"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset(&_0, &className)) { - RETURN_MM_BOOL(0); - } - zephir_update_property_array(this_ptr, SL("initialized"), &className, &__$true); - if ((zephir_method_exists_ex(model, ZEND_STRL("initialize")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(NULL, model, "initialize", NULL, 0); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("lastInitialized"), model); - zephir_read_property(&_1, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_1); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_2$$5); - ZVAL_STRING(&_2$$5, "modelsManager:afterInitialize"); - ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_2$$5, this_ptr, model); - zephir_check_call_status(); - } - RETURN_MM_BOOL(1); + zephir_read_property(&_0, this_ptr, ZEND_STRL("finalTime"), PH_NOISY_CC | PH_READONLY); + zephir_read_property(&_1, this_ptr, ZEND_STRL("initialTime"), PH_NOISY_CC | PH_READONLY); + zephir_sub_function(return_value, &_0, &_1); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, isInitialized) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *className_param = NULL, _0, _1; - zval className; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(className) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &className_param); - if (UNEXPECTED(Z_TYPE_P(className_param) != IS_STRING && Z_TYPE_P(className_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'className' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(className_param) == IS_STRING)) { - zephir_get_strval(&className, className_param); - } else { - ZEPHIR_INIT_VAR(&className); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("initialized"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_fast_strtolower(&_1, &className); - RETURN_MM_BOOL(zephir_array_isset(&_0, &_1)); -} -static PHP_METHOD(Phalcon_Mvc_Model_Manager, isKeepingSnapshots) +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_AbstractAdapter) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, isKeeping, _0, _1; - zval *this_ptr = getThis(); + ZEPHIR_REGISTER_CLASS(Phalcon\\Db\\Adapter, AbstractAdapter, phalcon, db_adapter_abstractadapter, phalcon_db_adapter_abstractadapter_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&isKeeping); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif + zend_declare_property_long(phalcon_db_adapter_abstractadapter_ce, SL("connectionConsecutive"), 0, ZEND_ACC_PROTECTED|ZEND_ACC_STATIC); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("connectionId"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("descriptor"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("dialect"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("dialectType"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("eventsManager"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("realSqlStatement"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("sqlBindTypes"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("sqlStatement"), ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("sqlVariables"), ZEND_ACC_PROTECTED); + zend_declare_property_long(phalcon_db_adapter_abstractadapter_ce, SL("transactionLevel"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_bool(phalcon_db_adapter_abstractadapter_ce, SL("transactionsWithSavepoints"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_abstractadapter_ce, SL("type"), ZEND_ACC_PROTECTED); + phalcon_db_adapter_abstractadapter_ce->create_object = zephir_init_properties_Phalcon_Db_Adapter_AbstractAdapter; + zend_class_implements(phalcon_db_adapter_abstractadapter_ce, 1, phalcon_db_adapter_adapterinterface_ce); + zend_class_implements(phalcon_db_adapter_abstractadapter_ce, 1, phalcon_events_eventsawareinterface_ce); + return SUCCESS; +} - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getDialectType) +{ + zval *this_ptr = getThis(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("keepSnapshots"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&isKeeping, &_0, &_1, 1))) { - RETURN_MM_BOOL(0); - } - RETURN_CTOR(&isKeeping); + + RETURN_MEMBER(getThis(), "dialectType"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, isUsingDynamicUpdate) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getType) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, isUsing, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&isUsing); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - zephir_read_property(&_0, this_ptr, ZEND_STRL("dynamicUpdate"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (!(zephir_array_isset_fetch(&isUsing, &_0, &_1, 1))) { - RETURN_MM_BOOL(0); - } - RETURN_CTOR(&isUsing); + RETURN_MEMBER(getThis(), "type"); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, isVisibleModelProperty) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval property; - zval *model, model_sub, *property_param = NULL, __$true, properties, className, publicProperties, classReflection, reflectionProperties, reflectionProperty, _0, _6, _1$$3, *_2$$3, _3$$3, _4$$4, _5$$5; + zval *descriptor_param = NULL, dialectClass, connectionId, _0, _1$$3, _2$$4; + zval descriptor; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&properties); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&publicProperties); - ZVAL_UNDEF(&classReflection); - ZVAL_UNDEF(&reflectionProperties); - ZVAL_UNDEF(&reflectionProperty); + ZVAL_UNDEF(&descriptor); + ZVAL_UNDEF(&dialectClass); + ZVAL_UNDEF(&connectionId); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_6); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&property); + ZVAL_UNDEF(&_2$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(property) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(descriptor) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &property_param); - zephir_get_strval(&property, property_param); + zephir_fetch_params(1, 1, 0, &descriptor_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, model, 0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelVisibility"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_0, &className))) { - ZEPHIR_INIT_VAR(&publicProperties); - array_init(&publicProperties); - ZEPHIR_INIT_VAR(&classReflection); - object_init_ex(&classReflection, zephir_get_internal_ce(SL("reflectionclass"))); - ZEPHIR_CALL_METHOD(NULL, &classReflection, "__construct", NULL, 151, &className); - zephir_check_call_status(); - ZVAL_LONG(&_1$$3, 1); - ZEPHIR_CALL_METHOD(&reflectionProperties, &classReflection, "getproperties", NULL, 157, &_1$$3); + ZEPHIR_OBS_VAR(&connectionId); + zephir_read_static_property_ce(&connectionId, phalcon_db_adapter_abstractadapter_ce, SL("connectionConsecutive"), PH_NOISY_CC); + zephir_update_property_zval(this_ptr, ZEND_STRL("connectionId"), &connectionId); + ZEPHIR_INIT_ZVAL_NREF(_0); + ZVAL_LONG(&_0, (zephir_get_numberval(&connectionId) + 1)); + zephir_update_static_property_ce(phalcon_db_adapter_abstractadapter_ce, ZEND_STRL("connectionConsecutive"), &_0); + ZEPHIR_OBS_VAR(&dialectClass); + if (!(zephir_array_isset_string_fetch(&dialectClass, &descriptor, SL("dialectClass"), 0))) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("dialectType"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_NVAR(&dialectClass); + ZEPHIR_CONCAT_SV(&dialectClass, "phalcon\\db\\dialect\\", &_1$$3); + } + if (Z_TYPE_P(&dialectClass) == IS_STRING) { + ZEPHIR_INIT_VAR(&_2$$4); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance(&_2$$4, &dialectClass); zephir_check_call_status(); - zephir_is_iterable(&reflectionProperties, 0, "phalcon/Mvc/Model/Manager.zep", 1905); - if (Z_TYPE_P(&reflectionProperties) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&reflectionProperties), _2$$3) - { - ZEPHIR_INIT_NVAR(&reflectionProperty); - ZVAL_COPY(&reflectionProperty, _2$$3); - ZEPHIR_OBS_NVAR(&_4$$4); - zephir_read_property(&_4$$4, &reflectionProperty, ZEND_STRL("name"), PH_NOISY_CC); - zephir_array_update_zval(&publicProperties, &_4$$4, &__$true, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &reflectionProperties, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$3, &reflectionProperties, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&reflectionProperty, &reflectionProperties, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&_5$$5); - zephir_read_property(&_5$$5, &reflectionProperty, ZEND_STRL("name"), PH_NOISY_CC); - zephir_array_update_zval(&publicProperties, &_5$$5, &__$true, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &reflectionProperties, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&reflectionProperty); - zephir_update_property_array(this_ptr, SL("modelVisibility"), &className, &publicProperties); + zephir_update_property_zval(this_ptr, ZEND_STRL("dialect"), &_2$$4); + } else if (Z_TYPE_P(&dialectClass) == IS_OBJECT) { + zephir_update_property_zval(this_ptr, ZEND_STRL("dialect"), &dialectClass); } - zephir_read_property(&_6, this_ptr, ZEND_STRL("modelVisibility"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_VAR(&properties); - zephir_array_fetch(&properties, &_6, &className, PH_NOISY, "phalcon/Mvc/Model/Manager.zep", 1908); - RETURN_MM_BOOL(zephir_array_key_exists(&properties, &property)); + zephir_update_property_zval(this_ptr, ZEND_STRL("descriptor"), &descriptor); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, keepSnapshots) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, addColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool keepSnapshots; - zval *model, model_sub, *keepSnapshots_param = NULL, _0, _1; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&column_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_BOOL(keepSnapshots) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &keepSnapshots_param); - keepSnapshots = zephir_get_boolval(keepSnapshots_param); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &column); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - ZEPHIR_INIT_VAR(&_1); - ZVAL_BOOL(&_1, keepSnapshots); - zephir_update_property_array(this_ptr, SL("keepSnapshots"), &_0, &_1); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "addcolumn", NULL, 0, &tableName, &schemaName, column); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, load) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, addForeignKey) { - zval _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *modelName_param = NULL, __$null, model, _3, _0$$3; - zval modelName, _1$$3; + zval *tableName_param = NULL, *schemaName_param = NULL, *reference, reference_sub, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&_1$$3); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&reference_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(modelName) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(reference, phalcon_db_referenceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &modelName_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &reference); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - if (UNEXPECTED(!(zephir_class_exists(&modelName, 1)))) { - ZEPHIR_INIT_VAR(&_0$$3); - object_init_ex(&_0$$3, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_1$$3); - ZEPHIR_CONCAT_SVS(&_1$$3, "Model '", &modelName, "' could not be loaded"); - ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 29, &_1$$3); - zephir_check_call_status(); - zephir_throw_exception_debug(&_0$$3, "phalcon/Mvc/Model/Manager.zep", 1943); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_2); - zephir_create_array(&_2, 3, 0); - zephir_array_fast_append(&_2, &__$null); - ZEPHIR_OBS_VAR(&_3); - zephir_read_property(&_3, this_ptr, ZEND_STRL("container"), PH_NOISY_CC); - zephir_array_fast_append(&_2, &_3); - zephir_array_fast_append(&_2, this_ptr); - ZEPHIR_INIT_VAR(&model); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(&model, &modelName, &_2); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "addforeignkey", NULL, 0, &tableName, &schemaName, reference); zephir_check_call_status(); - RETURN_CCTOR(&model); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, notifyEvent) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, addIndex) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *eventName_param = NULL, *model, model_sub, status, behavior, modelsBehaviors, eventsManager, customEventsManager, _0, _1, _4, _6, *_2$$3, _3$$3; - zval eventName, _5$$8, _7$$10; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventName); - ZVAL_UNDEF(&_5$$8); - ZVAL_UNDEF(&_7$$10); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&status); - ZVAL_UNDEF(&behavior); - ZVAL_UNDEF(&modelsBehaviors); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&customEventsManager); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&index_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_3$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(eventName) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &eventName_param, &model); - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&eventName); - } - - - ZEPHIR_INIT_VAR(&status); - ZVAL_NULL(&status); - ZEPHIR_OBS_VAR(&modelsBehaviors); - zephir_read_property(&_0, this_ptr, ZEND_STRL("behaviors"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (zephir_array_isset_fetch(&modelsBehaviors, &_0, &_1, 0)) { - zephir_is_iterable(&modelsBehaviors, 0, "phalcon/Mvc/Model/Manager.zep", 1990); - if (Z_TYPE_P(&modelsBehaviors) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&modelsBehaviors), _2$$3) - { - ZEPHIR_INIT_NVAR(&behavior); - ZVAL_COPY(&behavior, _2$$3); - ZEPHIR_CALL_METHOD(&status, &behavior, "notify", NULL, 0, &eventName, model); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&status)) { - RETURN_MM_BOOL(0); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &modelsBehaviors, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$3, &modelsBehaviors, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&behavior, &modelsBehaviors, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&status, &behavior, "notify", NULL, 0, &eventName, model); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&status)) { - RETURN_MM_BOOL(0); - } - ZEPHIR_CALL_METHOD(NULL, &modelsBehaviors, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&behavior); + ZEPHIR_INIT_VAR(&tableName); } - zephir_read_property(&_4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_4); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_5$$8); - ZEPHIR_CONCAT_SV(&_5$$8, "model:", &eventName); - ZEPHIR_CALL_METHOD(&status, &eventsManager, "fire", NULL, 0, &_5$$8, model); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&status)) { - RETURN_CCTOR(&status); - } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_OBS_VAR(&customEventsManager); - zephir_read_property(&_4, this_ptr, ZEND_STRL("customEventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_6); - zephir_get_class(&_6, model, 1); - if (zephir_array_isset_fetch(&customEventsManager, &_4, &_6, 0)) { - ZEPHIR_INIT_VAR(&_7$$10); - ZEPHIR_CONCAT_SV(&_7$$10, "model:", &eventName); - ZEPHIR_CALL_METHOD(&status, &customEventsManager, "fire", NULL, 0, &_7$$10, model); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&status)) { - RETURN_MM_BOOL(0); - } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - RETURN_CCTOR(&status); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "addindex", NULL, 0, &tableName, &schemaName, index); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, missingMethod) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, addPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval eventName, _5$$8; - zval *model, model_sub, *eventName_param = NULL, *data, data_sub, modelsBehaviors, result, eventsManager, behavior, _0, _1, _4, *_2$$3, _3$$3; + zval *tableName_param = NULL, *schemaName_param = NULL, *index, index_sub, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&modelsBehaviors); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&eventsManager); - ZVAL_UNDEF(&behavior); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&index_sub); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&eventName); - ZVAL_UNDEF(&_5$$8); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(eventName) - Z_PARAM_ZVAL(data) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(index, phalcon_db_indexinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &model, &eventName_param, &data); - if (UNEXPECTED(Z_TYPE_P(eventName_param) != IS_STRING && Z_TYPE_P(eventName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'eventName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &index); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(eventName_param) == IS_STRING)) { - zephir_get_strval(&eventName, eventName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&eventName); + ZEPHIR_INIT_VAR(&tableName); } - - - ZEPHIR_OBS_VAR(&modelsBehaviors); - zephir_read_property(&_0, this_ptr, ZEND_STRL("behaviors"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_1); - zephir_get_class(&_1, model, 1); - if (zephir_array_isset_fetch(&modelsBehaviors, &_0, &_1, 0)) { - zephir_is_iterable(&modelsBehaviors, 0, "phalcon/Mvc/Model/Manager.zep", 2052); - if (Z_TYPE_P(&modelsBehaviors) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&modelsBehaviors), _2$$3) - { - ZEPHIR_INIT_NVAR(&behavior); - ZVAL_COPY(&behavior, _2$$3); - ZEPHIR_CALL_METHOD(&result, &behavior, "missingmethod", NULL, 0, model, &eventName, data); - zephir_check_call_status(); - if (Z_TYPE_P(&result) != IS_NULL) { - RETURN_CCTOR(&result); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &modelsBehaviors, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$3, &modelsBehaviors, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&behavior, &modelsBehaviors, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&result, &behavior, "missingmethod", NULL, 0, model, &eventName, data); - zephir_check_call_status(); - if (Z_TYPE_P(&result) != IS_NULL) { - RETURN_CCTOR(&result); - } - ZEPHIR_CALL_METHOD(NULL, &modelsBehaviors, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&behavior); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - zephir_read_property(&_4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&eventsManager, &_4); - if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { - ZEPHIR_INIT_VAR(&_5$$8); - ZEPHIR_CONCAT_SV(&_5$$8, "model:", &eventName); - ZEPHIR_RETURN_CALL_METHOD(&eventsManager, "fire", NULL, 0, &_5$$8, model, data); - zephir_check_call_status(); - RETURN_MM(); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - RETURN_MM_NULL(); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "addprimarykey", NULL, 0, &tableName, &schemaName, index); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setConnectionService) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, createSavepoint) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval connectionService; - zval *model, model_sub, *connectionService_param = NULL; + zval *name_param = NULL, dialect, _0, _1, _2; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&dialect); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(connectionService) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - ZEPHIR_INIT_VAR(&connectionService); + ZEPHIR_INIT_VAR(&name); } - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setreadconnectionservice", NULL, 0, model, &connectionService); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&dialect, &_0); + ZEPHIR_CALL_METHOD(&_1, &dialect, "supportssavepoints", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setwriteconnectionservice", NULL, 0, model, &connectionService); + if (UNEXPECTED(!zephir_is_true(&_1))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Savepoints are not supported by this database adapter.", "phalcon/Db/Adapter/AbstractAdapter.zep", 231); + return; + } + ZEPHIR_CALL_METHOD(&_2, &dialect, "createsavepoint", NULL, 0, &name); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_2); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setCustomEventsManager) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, createTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *model, model_sub, *eventsManager, eventsManager_sub, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *tableName_param = NULL, *schemaName_param = NULL, *definition_param = NULL, columns, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&eventsManager_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&columns); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &eventsManager); - - - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - zephir_update_property_array(this_ptr, SL("customEventsManager"), &_0, eventsManager); - ZEPHIR_MM_RESTORE(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setDI) -{ - zval *container, container_sub; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&container_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &container); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The table must contain at least one column", "phalcon/Db/Adapter/AbstractAdapter.zep", 247); + return; + } + if (UNEXPECTED(!(zephir_fast_count_int(&columns)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The table must contain at least one column", "phalcon/Db/Adapter/AbstractAdapter.zep", 251); + return; + } + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "createtable", NULL, 0, &tableName, &schemaName, &definition); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setEventsManager) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, createView) { - zval *eventsManager, eventsManager_sub; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval definition; + zval *viewName_param = NULL, *definition_param = NULL, *schemaName_param = NULL, _0, _1; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&eventsManager_sub); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(viewName) + Z_PARAM_ARRAY(definition) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 1, &viewName_param, &definition_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); + if (UNEXPECTED(!(zephir_array_isset_string(&definition, SL("sql"))))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The table must contain at least one column", "phalcon/Db/Adapter/AbstractAdapter.zep", 269); + return; + } + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "createview", NULL, 0, &viewName, &definition, &schemaName); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setModelPrefix) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, delete) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *prefix_param = NULL; - zval prefix; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval placeholders, dataTypes; + zval whereCondition, _0$$3; + zval *table, table_sub, *whereCondition_param = NULL, *placeholders_param = NULL, *dataTypes_param = NULL, sql, escapedTable; zval *this_ptr = getThis(); - ZVAL_UNDEF(&prefix); + ZVAL_UNDEF(&table_sub); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&escapedTable); + ZVAL_UNDEF(&whereCondition); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&placeholders); + ZVAL_UNDEF(&dataTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(prefix) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_ZVAL(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(whereCondition) + Z_PARAM_ARRAY(placeholders) + Z_PARAM_ARRAY(dataTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &prefix_param); - if (UNEXPECTED(Z_TYPE_P(prefix_param) != IS_STRING && Z_TYPE_P(prefix_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'prefix' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 3, &table, &whereCondition_param, &placeholders_param, &dataTypes_param); + if (!whereCondition_param) { + ZEPHIR_INIT_VAR(&whereCondition); + } else { + zephir_get_strval(&whereCondition, whereCondition_param); } - if (EXPECTED(Z_TYPE_P(prefix_param) == IS_STRING)) { - zephir_get_strval(&prefix, prefix_param); + if (!placeholders_param) { + ZEPHIR_INIT_VAR(&placeholders); + array_init(&placeholders); } else { - ZEPHIR_INIT_VAR(&prefix); + zephir_get_arrval(&placeholders, placeholders_param); + } + if (!dataTypes_param) { + ZEPHIR_INIT_VAR(&dataTypes); + array_init(&dataTypes); + } else { + zephir_get_arrval(&dataTypes, dataTypes_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("prefix"), &prefix); - ZEPHIR_MM_RESTORE(); + ZEPHIR_CALL_METHOD(&escapedTable, this_ptr, "escapeidentifier", NULL, 0, table); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&sql); + ZEPHIR_CONCAT_SV(&sql, "DELETE FROM ", &escapedTable); + if (!(ZEPHIR_IS_EMPTY(&whereCondition))) { + ZEPHIR_INIT_VAR(&_0$$3); + ZEPHIR_CONCAT_SV(&_0$$3, " WHERE ", &whereCondition); + zephir_concat_self(&sql, &_0$$3); + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &sql, &placeholders, &dataTypes); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setModelSchema) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, describeIndexes) { + zend_string *_11; + zend_ulong _10; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval schema; - zval *model, model_sub, *schema_param = NULL, _0; + zephir_fcall_cache_entry *_13 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, indexes, index, keyName, indexObjects, name, indexColumns, columns, _0, _1, _2, _3, *_4, _5, *_8, _9, _6$$3, _7$$6, _12$$9, _14$$10; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&table); ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&keyName); + ZVAL_UNDEF(&indexObjects); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&indexColumns); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_9); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$6); + ZVAL_UNDEF(&_12$$9); + ZVAL_UNDEF(&_14$$10); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(schema) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &schema_param); - if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + zephir_get_strval(&schema, schema_param); + } + + + ZEPHIR_INIT_VAR(&indexes); + array_init(&indexes); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describeindexes", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 348); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) + { + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _4); + zephir_array_fetch_long(&keyName, &index, 2, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 336); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + } else { + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch(&columns, &indexes, &keyName, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 341); + } + zephir_array_fetch_long(&_6$$3, &index, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 344); + zephir_array_append(&columns, &_6$$3, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 344); + zephir_array_update_zval(&indexes, &keyName, &columns, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&index, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&keyName); + zephir_array_fetch_long(&keyName, &index, 2, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 336); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + } else { + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch(&columns, &indexes, &keyName, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 341); + } + zephir_array_fetch_long(&_7$$6, &index, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 344); + zephir_array_append(&columns, &_7$$6, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 344); + zephir_array_update_zval(&indexes, &keyName, &columns, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&index); + ZEPHIR_INIT_VAR(&indexObjects); + array_init(&indexObjects); + zephir_is_iterable(&indexes, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 357); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&indexes), _10, _11, _8) + { + ZEPHIR_INIT_NVAR(&name); + if (_11 != NULL) { + ZVAL_STR_COPY(&name, _11); + } else { + ZVAL_LONG(&name, _10); + } + ZEPHIR_INIT_NVAR(&indexColumns); + ZVAL_COPY(&indexColumns, _8); + ZEPHIR_INIT_NVAR(&_12$$9); + object_init_ex(&_12$$9, phalcon_db_index_ce); + ZEPHIR_CALL_METHOD(NULL, &_12$$9, "__construct", &_13, 30, &name, &indexColumns); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_12$$9, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_9, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_9)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &indexes, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&indexColumns, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_14$$10); + object_init_ex(&_14$$10, phalcon_db_index_ce); + ZEPHIR_CALL_METHOD(NULL, &_14$$10, "__construct", &_13, 30, &name, &indexColumns); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_14$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&indexColumns); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&indexObjects); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, describeReferences) +{ + zval _12$$3, _19$$6, _25$$9, _29$$10; + zend_string *_23; + zend_ulong _22; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_27 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, references, reference, arrayReference, constraintName, referenceObjects, name, referencedSchema, referencedTable, columns, referencedColumns, _0, _1, _2, _3, *_4, _5, *_20, _21, _6$$5, _7$$5, _8$$5, _9$$5, _10$$3, _11$$3, _13$$8, _14$$8, _15$$8, _16$$8, _17$$6, _18$$6, _24$$9, _26$$9, _28$$10, _30$$10; + zval table, schema; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&arrayReference); + ZVAL_UNDEF(&constraintName); + ZVAL_UNDEF(&referenceObjects); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&referencedSchema); + ZVAL_UNDEF(&referencedTable); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&referencedColumns); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_21); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_11$$3); + ZVAL_UNDEF(&_13$$8); + ZVAL_UNDEF(&_14$$8); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$6); + ZVAL_UNDEF(&_18$$6); + ZVAL_UNDEF(&_24$$9); + ZVAL_UNDEF(&_26$$9); + ZVAL_UNDEF(&_28$$10); + ZVAL_UNDEF(&_30$$10); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_19$$6); + ZVAL_UNDEF(&_25$$9); + ZVAL_UNDEF(&_29$$10); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); RETURN_MM_NULL(); } if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { @@ -60375,2144 +56449,2391 @@ static PHP_METHOD(Phalcon_Mvc_Model_Manager, setModelSchema) } else { ZEPHIR_INIT_VAR(&schema); } + } - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - zephir_update_property_array(this_ptr, SL("schemas"), &_0, &schema); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&references); + array_init(&references); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describereferences", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 403); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) + { + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _4); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 378); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 381); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 382); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); + } else { + zephir_array_fetch(&_6$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 386); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_6$$5, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 386); + zephir_array_fetch(&_7$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 387); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_7$$5, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 387); + zephir_array_fetch(&_8$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 388); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_8$$5, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 388); + zephir_array_fetch(&_9$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 389); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_9$$5, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 389); + } + zephir_array_fetch_long(&_10$$3, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 392); + zephir_array_append(&columns, &_10$$3, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 392); + zephir_array_fetch_long(&_11$$3, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 393); + zephir_array_append(&referencedColumns, &_11$$3, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 393); + ZEPHIR_INIT_NVAR(&_12$$3); + zephir_create_array(&_12$$3, 4, 0); + zephir_array_update_string(&_12$$3, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_12$$3, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_12$$3, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_12$$3, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_12$$3, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&reference, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&constraintName); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 378); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 381); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 382); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); + } else { + zephir_array_fetch(&_13$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 386); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_13$$8, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 386); + zephir_array_fetch(&_14$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 387); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_14$$8, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 387); + zephir_array_fetch(&_15$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 388); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_15$$8, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 388); + zephir_array_fetch(&_16$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 389); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_16$$8, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 389); + } + zephir_array_fetch_long(&_17$$6, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 392); + zephir_array_append(&columns, &_17$$6, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 392); + zephir_array_fetch_long(&_18$$6, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 393); + zephir_array_append(&referencedColumns, &_18$$6, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 393); + ZEPHIR_INIT_NVAR(&_19$$6); + zephir_create_array(&_19$$6, 4, 0); + zephir_array_update_string(&_19$$6, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_19$$6, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_19$$6, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_19$$6, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_19$$6, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&reference); + ZEPHIR_INIT_VAR(&referenceObjects); + array_init(&referenceObjects); + zephir_is_iterable(&references, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 417); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&references), _22, _23, _20) + { + ZEPHIR_INIT_NVAR(&name); + if (_23 != NULL) { + ZVAL_STR_COPY(&name, _23); + } else { + ZVAL_LONG(&name, _22); + } + ZEPHIR_INIT_NVAR(&arrayReference); + ZVAL_COPY(&arrayReference, _20); + ZEPHIR_INIT_NVAR(&_24$$9); + object_init_ex(&_24$$9, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_25$$9); + zephir_create_array(&_25$$9, 4, 0); + ZEPHIR_OBS_NVAR(&_26$$9); + zephir_array_fetch_string(&_26$$9, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 409); + zephir_array_update_string(&_25$$9, SL("referencedSchema"), &_26$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_26$$9); + zephir_array_fetch_string(&_26$$9, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 410); + zephir_array_update_string(&_25$$9, SL("referencedTable"), &_26$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_26$$9); + zephir_array_fetch_string(&_26$$9, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 411); + zephir_array_update_string(&_25$$9, SL("columns"), &_26$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_26$$9); + zephir_array_fetch_string(&_26$$9, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 413); + zephir_array_update_string(&_25$$9, SL("referencedColumns"), &_26$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_24$$9, "__construct", &_27, 31, &name, &_25$$9); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_24$$9, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_21, &references, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_21)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &references, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&arrayReference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_28$$10); + object_init_ex(&_28$$10, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_29$$10); + zephir_create_array(&_29$$10, 4, 0); + ZEPHIR_OBS_NVAR(&_30$$10); + zephir_array_fetch_string(&_30$$10, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 409); + zephir_array_update_string(&_29$$10, SL("referencedSchema"), &_30$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$10); + zephir_array_fetch_string(&_30$$10, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 410); + zephir_array_update_string(&_29$$10, SL("referencedTable"), &_30$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$10); + zephir_array_fetch_string(&_30$$10, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 411); + zephir_array_update_string(&_29$$10, SL("columns"), &_30$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$10); + zephir_array_fetch_string(&_30$$10, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/AbstractAdapter.zep", 413); + zephir_array_update_string(&_29$$10, SL("referencedColumns"), &_30$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_28$$10, "__construct", &_27, 31, &name, &_29$$10); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_28$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&arrayReference); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&referenceObjects); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setModelSource) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval source; - zval *model, model_sub, *source_param = NULL, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *columnName_param = NULL, _0, _1; + zval tableName, schemaName, columnName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&columnName); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&source); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(source) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(columnName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &source_param); - if (UNEXPECTED(Z_TYPE_P(source_param) != IS_STRING && Z_TYPE_P(source_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'source' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &columnName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(source_param) == IS_STRING)) { - zephir_get_strval(&source, source_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&source); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } + zephir_get_strval(&columnName, columnName_param); - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - zephir_update_property_array(this_ptr, SL("sources"), &_0, &source); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "dropcolumn", NULL, 0, &tableName, &schemaName, &columnName); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setReadConnectionService) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval connectionService; - zval *model, model_sub, *connectionService_param = NULL, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *referenceName_param = NULL, _0, _1; + zval tableName, schemaName, referenceName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&referenceName); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(connectionService) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_STR(referenceName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &referenceName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&connectionService); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (UNEXPECTED(Z_TYPE_P(referenceName_param) != IS_STRING && Z_TYPE_P(referenceName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referenceName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(referenceName_param) == IS_STRING)) { + zephir_get_strval(&referenceName, referenceName_param); + } else { + ZEPHIR_INIT_VAR(&referenceName); } - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - zephir_update_property_array(this_ptr, SL("readConnectionServices"), &_0, &connectionService); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "dropforeignkey", NULL, 0, &tableName, &schemaName, &referenceName); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setReusableRecords) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropIndex) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *modelName_param = NULL, *key_param = NULL, *records, records_sub; - zval modelName, key; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *indexName, indexName_sub, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&records_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&indexName_sub); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(modelName) - Z_PARAM_STR(key) - Z_PARAM_ZVAL(records) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ZVAL(indexName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &modelName_param, &key_param, &records); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &indexName); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&modelName); + ZEPHIR_INIT_VAR(&tableName); } - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_INIT_VAR(&key); + ZEPHIR_INIT_VAR(&schemaName); } - zephir_update_property_array(this_ptr, SL("reusable"), &key, records); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "dropindex", NULL, 0, &tableName, &schemaName, indexName); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, setWriteConnectionService) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropPrimaryKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval connectionService; - zval *model, model_sub, *connectionService_param = NULL, _0; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&connectionService); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(connectionService) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &connectionService_param); - if (UNEXPECTED(Z_TYPE_P(connectionService_param) != IS_STRING && Z_TYPE_P(connectionService_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'connectionService' must be of the type string")); + zephir_fetch_params(1, 2, 0, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(connectionService_param) == IS_STRING)) { - zephir_get_strval(&connectionService, connectionService_param); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_INIT_VAR(&connectionService); + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - zephir_update_property_array(this_ptr, SL("writeConnectionServices"), &_0, &connectionService); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "dropprimarykey", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, useDynamicUpdate) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool dynamicUpdate; - zval *model, model_sub, *dynamicUpdate_param = NULL, entityName, _0, _1; + zend_long ZEPHIR_LAST_CALL_STATUS; + zend_bool ifExists; + zval *tableName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, _0, _1, _2; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&entityName); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_BOOL(dynamicUpdate) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &dynamicUpdate_param); - dynamicUpdate = zephir_get_boolval(dynamicUpdate_param); + zephir_fetch_params(1, 1, 2, &tableName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } + if (!ifExists_param) { + ifExists = 1; + } else { + ifExists = zephir_get_boolval(ifExists_param); + } - ZEPHIR_INIT_VAR(&entityName); - zephir_get_class(&entityName, model, 1); - ZEPHIR_INIT_VAR(&_0); - ZVAL_BOOL(&_0, dynamicUpdate); - zephir_update_property_array(this_ptr, SL("dynamicUpdate"), &entityName, &_0); - ZEPHIR_INIT_VAR(&_1); - ZVAL_BOOL(&_1, dynamicUpdate); - zephir_update_property_array(this_ptr, SL("keepSnapshots"), &entityName, &_1); - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + if (ifExists) { + ZVAL_BOOL(&_2, 1); + } else { + ZVAL_BOOL(&_2, 0); + } + ZEPHIR_CALL_METHOD(&_1, &_0, "droptable", NULL, 0, &tableName, &schemaName, &_2); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, getConnection) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, dropView) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval connectionServices; - zval *model, model_sub, *connectionServices_param = NULL, container, service, connection, _0, _1; + zend_bool ifExists; + zval *viewName_param = NULL, *schemaName_param = NULL, *ifExists_param = NULL, _0, _1, _2; + zval viewName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&service); - ZVAL_UNDEF(&connection); + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&connectionServices); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(connectionServices) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + Z_PARAM_BOOL(ifExists) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &connectionServices_param); - zephir_get_arrval(&connectionServices, connectionServices_param); + zephir_fetch_params(1, 1, 2, &viewName_param, &schemaName_param, &ifExists_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } + if (!ifExists_param) { + ifExists = 1; + } else { + ifExists = zephir_get_boolval(ifExists_param); + } - ZEPHIR_CALL_METHOD(&service, this_ptr, "getconnectionservice", NULL, 0, model, &connectionServices); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (UNEXPECTED(Z_TYPE_P(&container) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access the services related to the ORM", "phalcon/Mvc/Model/Manager.zep", 2257); - return; + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + if (ifExists) { + ZVAL_BOOL(&_2, 1); + } else { + ZVAL_BOOL(&_2, 0); } - ZEPHIR_CALL_METHOD(&_1, &container, "getshared", NULL, 0, &service); + ZEPHIR_CALL_METHOD(&_1, &_0, "dropview", NULL, 0, &viewName, &schemaName, &_2); zephir_check_call_status(); - ZEPHIR_CPY_WRT(&connection, &_1); - if (UNEXPECTED(Z_TYPE_P(&connection) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid injected connection service", "phalcon/Mvc/Model/Manager.zep", 2266); - return; - } - RETURN_CCTOR(&connection); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, mergeFindParameters) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, escapeIdentifier) { - zend_bool _6$$6, _9$$11, _16$$17, _17$$17, _22$$26, _23$$26; - zend_string *_5$$5, *_15$$16; - zend_ulong _4$$5, _14$$16; - zval findParams; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *findParamsOne = NULL, findParamsOne_sub, *findParamsTwo = NULL, findParamsTwo_sub, key, value, _0$$3, _1$$4, *_2$$5, _3$$5, _7$$9, _8$$9, _10$$14, _11$$14, *_12$$16, _13$$16, _18$$20, _19$$20, _20$$24, _21$$24, _24$$29, _25$$29, _26$$33, _27$$33; + zval *identifier, identifier_sub, _0$$3, _1$$3, _2$$3, _3$$3, _4$$3, _5$$3, _6; zval *this_ptr = getThis(); - ZVAL_UNDEF(&findParamsOne_sub); - ZVAL_UNDEF(&findParamsTwo_sub); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&value); + ZVAL_UNDEF(&identifier_sub); ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_3$$5); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_8$$9); - ZVAL_UNDEF(&_10$$14); - ZVAL_UNDEF(&_11$$14); - ZVAL_UNDEF(&_13$$16); - ZVAL_UNDEF(&_18$$20); - ZVAL_UNDEF(&_19$$20); - ZVAL_UNDEF(&_20$$24); - ZVAL_UNDEF(&_21$$24); - ZVAL_UNDEF(&_24$$29); - ZVAL_UNDEF(&_25$$29); - ZVAL_UNDEF(&_26$$33); - ZVAL_UNDEF(&_27$$33); - ZVAL_UNDEF(&findParams); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_ZVAL(findParamsOne) - Z_PARAM_ZVAL(findParamsTwo) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ZVAL(identifier) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &findParamsOne, &findParamsTwo); - ZEPHIR_SEPARATE_PARAM(findParamsOne); - ZEPHIR_SEPARATE_PARAM(findParamsTwo); + zephir_fetch_params(1, 1, 0, &identifier); - ZEPHIR_INIT_VAR(&findParams); - array_init(&findParams); - if (Z_TYPE_P(findParamsOne) == IS_STRING) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - zephir_array_update_string(&_0$$3, SL("conditions"), findParamsOne, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(findParamsOne, &_0$$3); - } - if (Z_TYPE_P(findParamsTwo) == IS_STRING) { - ZEPHIR_INIT_VAR(&_1$$4); - zephir_create_array(&_1$$4, 1, 0); - zephir_array_update_string(&_1$$4, SL("conditions"), findParamsTwo, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(findParamsTwo, &_1$$4); - } - if (Z_TYPE_P(findParamsOne) == IS_ARRAY) { - zephir_is_iterable(findParamsOne, 0, "phalcon/Mvc/Model/Manager.zep", 2311); - if (Z_TYPE_P(findParamsOne) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(findParamsOne), _4$$5, _5$$5, _2$$5) - { - ZEPHIR_INIT_NVAR(&key); - if (_5$$5 != NULL) { - ZVAL_STR_COPY(&key, _5$$5); - } else { - ZVAL_LONG(&key, _4$$5); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _2$$5); - _6$$6 = ZEPHIR_IS_LONG_IDENTICAL(&key, 0); - if (!(_6$$6)) { - _6$$6 = ZEPHIR_IS_STRING_IDENTICAL(&key, "conditions"); - } - if (_6$$6) { - if (!(zephir_array_isset_long(&findParams, 0))) { - zephir_array_update_long(&findParams, 0, &value, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } else { - zephir_array_fetch_long(&_7$$9, &findParams, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2305); - ZEPHIR_INIT_NVAR(&_8$$9); - ZEPHIR_CONCAT_SVSVS(&_8$$9, "(", &_7$$9, ") AND (", &value, ")"); - zephir_array_update_long(&findParams, 0, &_8$$9, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } - } else { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, findParamsOne, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3$$5, findParamsOne, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3$$5)) { - break; - } - ZEPHIR_CALL_METHOD(&key, findParamsOne, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, findParamsOne, "current", NULL, 0); - zephir_check_call_status(); - _9$$11 = ZEPHIR_IS_LONG_IDENTICAL(&key, 0); - if (!(_9$$11)) { - _9$$11 = ZEPHIR_IS_STRING_IDENTICAL(&key, "conditions"); - } - if (_9$$11) { - if (!(zephir_array_isset_long(&findParams, 0))) { - zephir_array_update_long(&findParams, 0, &value, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } else { - zephir_array_fetch_long(&_10$$14, &findParams, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2305); - ZEPHIR_INIT_NVAR(&_11$$14); - ZEPHIR_CONCAT_SVSVS(&_11$$14, "(", &_10$$14, ") AND (", &value, ")"); - zephir_array_update_long(&findParams, 0, &_11$$14, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } - } else { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, findParamsOne, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); - } - if (Z_TYPE_P(findParamsTwo) == IS_ARRAY) { - zephir_is_iterable(findParamsTwo, 0, "phalcon/Mvc/Model/Manager.zep", 2336); - if (Z_TYPE_P(findParamsTwo) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(findParamsTwo), _14$$16, _15$$16, _12$$16) - { - ZEPHIR_INIT_NVAR(&key); - if (_15$$16 != NULL) { - ZVAL_STR_COPY(&key, _15$$16); - } else { - ZVAL_LONG(&key, _14$$16); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _12$$16); - _16$$17 = ZEPHIR_IS_LONG_IDENTICAL(&key, 0); - if (!(_16$$17)) { - _16$$17 = ZEPHIR_IS_STRING_IDENTICAL(&key, "conditions"); - } - _17$$17 = ZEPHIR_IS_STRING_IDENTICAL(&key, "bind"); - if (!(_17$$17)) { - _17$$17 = ZEPHIR_IS_STRING_IDENTICAL(&key, "bindTypes"); - } - if (_16$$17) { - if (!(zephir_array_isset_long(&findParams, 0))) { - zephir_array_update_long(&findParams, 0, &value, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } else { - zephir_array_fetch_long(&_18$$20, &findParams, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2319); - ZEPHIR_INIT_NVAR(&_19$$20); - ZEPHIR_CONCAT_SVSVS(&_19$$20, "(", &_18$$20, ") AND (", &value, ")"); - zephir_array_update_long(&findParams, 0, &_19$$20, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } - } else if (_17$$17) { - if (Z_TYPE_P(&value) == IS_ARRAY) { - if (!(zephir_array_isset(&findParams, &key))) { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_INIT_NVAR(&_20$$24); - zephir_array_fetch(&_21$$24, &findParams, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2327); - zephir_fast_array_merge(&_20$$24, &_21$$24, &value); - zephir_array_update_zval(&findParams, &key, &_20$$24, PH_COPY | PH_SEPARATE); - } - } - } else { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, findParamsTwo, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_13$$16, findParamsTwo, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_13$$16)) { - break; - } - ZEPHIR_CALL_METHOD(&key, findParamsTwo, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, findParamsTwo, "current", NULL, 0); - zephir_check_call_status(); - _22$$26 = ZEPHIR_IS_LONG_IDENTICAL(&key, 0); - if (!(_22$$26)) { - _22$$26 = ZEPHIR_IS_STRING_IDENTICAL(&key, "conditions"); - } - _23$$26 = ZEPHIR_IS_STRING_IDENTICAL(&key, "bind"); - if (!(_23$$26)) { - _23$$26 = ZEPHIR_IS_STRING_IDENTICAL(&key, "bindTypes"); - } - if (_22$$26) { - if (!(zephir_array_isset_long(&findParams, 0))) { - zephir_array_update_long(&findParams, 0, &value, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } else { - zephir_array_fetch_long(&_24$$29, &findParams, 0, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2319); - ZEPHIR_INIT_NVAR(&_25$$29); - ZEPHIR_CONCAT_SVSVS(&_25$$29, "(", &_24$$29, ") AND (", &value, ")"); - zephir_array_update_long(&findParams, 0, &_25$$29, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); - } - } else if (_23$$26) { - if (Z_TYPE_P(&value) == IS_ARRAY) { - if (!(zephir_array_isset(&findParams, &key))) { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_INIT_NVAR(&_26$$33); - zephir_array_fetch(&_27$$33, &findParams, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Manager.zep", 2327); - zephir_fast_array_merge(&_26$$33, &_27$$33, &value); - zephir_array_update_zval(&findParams, &key, &_26$$33, PH_COPY | PH_SEPARATE); - } - } - } else { - zephir_array_update_zval(&findParams, &key, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, findParamsTwo, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&key); + if (Z_TYPE_P(identifier) == IS_ARRAY) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_long(&_2$$3, identifier, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 522); + ZEPHIR_CALL_METHOD(&_1$$3, &_0$$3, "escape", NULL, 0, &_2$$3); + zephir_check_call_status(); + zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + zephir_array_fetch_long(&_5$$3, identifier, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 522); + ZEPHIR_CALL_METHOD(&_4$$3, &_3$$3, "escape", NULL, 0, &_5$$3); + zephir_check_call_status(); + ZEPHIR_CONCAT_VSV(return_value, &_1$$3, ".", &_4$$3); + RETURN_MM(); } - RETURN_CTOR(&findParams); + zephir_read_property(&_6, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_6, "escape", NULL, 0, identifier); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Manager, checkHasRelationship) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, fetchAll) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *collection_param = NULL, *modelName_param = NULL, *modelRelation_param = NULL, entityName, _0, _1, _2, _3; - zval collection, modelName, modelRelation, keyRelation; + zval bindParams, bindTypes; + zend_long fetchMode, ZEPHIR_LAST_CALL_STATUS; + zval *sqlQuery_param = NULL, *fetchMode_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, result, _1, _0$$4; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&collection); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&modelRelation); - ZVAL_UNDEF(&keyRelation); - ZVAL_UNDEF(&entityName); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&result); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&bindTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_STR(collection) - Z_PARAM_STR(modelName) - Z_PARAM_STR(modelRelation) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(sqlQuery) + Z_PARAM_OPTIONAL + Z_PARAM_LONG(fetchMode) + Z_PARAM_ARRAY(bindParams) + Z_PARAM_ARRAY(bindTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &collection_param, &modelName_param, &modelRelation_param); - zephir_get_strval(&collection, collection_param); - if (UNEXPECTED(Z_TYPE_P(modelName_param) != IS_STRING && Z_TYPE_P(modelName_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelName' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(modelName_param) == IS_STRING)) { - zephir_get_strval(&modelName, modelName_param); + zephir_fetch_params(1, 1, 3, &sqlQuery_param, &fetchMode_param, &bindParams_param, &bindTypes_param); + zephir_get_strval(&sqlQuery, sqlQuery_param); + if (!fetchMode_param) { + fetchMode = 2; } else { - ZEPHIR_INIT_VAR(&modelName); + fetchMode = zephir_get_intval(fetchMode_param); } - if (UNEXPECTED(Z_TYPE_P(modelRelation_param) != IS_STRING && Z_TYPE_P(modelRelation_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'modelRelation' must be of the type string")); - RETURN_MM_NULL(); + if (!bindParams_param) { + ZEPHIR_INIT_VAR(&bindParams); + array_init(&bindParams); + } else { + zephir_get_arrval(&bindParams, bindParams_param); } - if (EXPECTED(Z_TYPE_P(modelRelation_param) == IS_STRING)) { - zephir_get_strval(&modelRelation, modelRelation_param); + if (!bindTypes_param) { + ZEPHIR_INIT_VAR(&bindTypes); + array_init(&bindTypes); } else { - ZEPHIR_INIT_VAR(&modelRelation); + zephir_get_arrval(&bindTypes, bindTypes_param); } - ZEPHIR_INIT_VAR(&entityName); - zephir_fast_strtolower(&entityName, &modelName); - ZEPHIR_INIT_VAR(&_0); - zephir_fast_strtolower(&_0, &modelRelation); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_CONCAT_VSV(&_1, &entityName, "$", &_0); - zephir_get_strval(&keyRelation, &_1); - zephir_read_property(&_2, this_ptr, ZEND_STRL("initialized"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_2, &entityName))) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "load", NULL, 0, &modelName); - zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&result, this_ptr, "query", NULL, 0, &sqlQuery, &bindParams, &bindTypes); + zephir_check_call_status(); + if (Z_TYPE_P(&result) != IS_OBJECT) { + array_init(return_value); + RETURN_MM(); } - ZEPHIR_OBS_VAR(&_3); - zephir_read_property_zval(&_3, this_ptr, &collection, PH_NOISY_CC); - RETURN_MM_BOOL(zephir_array_isset(&_3, &keyRelation)); -} - -zend_object *zephir_init_properties_Phalcon_Mvc_Model_Manager(zend_class_entry *class_type) -{ - zval _0, _2, _4, _6, _8, _10, _12, _14, _16, _18, _20, _22, _24, _26, _28, _30, _32, _34, _36, _38, _40, _42, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8, _13$$9, _15$$10, _17$$11, _19$$12, _21$$13, _23$$14, _25$$15, _27$$16, _29$$17, _31$$18, _33$$19, _35$$20, _37$$21, _39$$22, _41$$23, _43$$24; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_14); - ZVAL_UNDEF(&_16); - ZVAL_UNDEF(&_18); - ZVAL_UNDEF(&_20); - ZVAL_UNDEF(&_22); - ZVAL_UNDEF(&_24); - ZVAL_UNDEF(&_26); - ZVAL_UNDEF(&_28); - ZVAL_UNDEF(&_30); - ZVAL_UNDEF(&_32); - ZVAL_UNDEF(&_34); - ZVAL_UNDEF(&_36); - ZVAL_UNDEF(&_38); - ZVAL_UNDEF(&_40); - ZVAL_UNDEF(&_42); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_17$$11); - ZVAL_UNDEF(&_19$$12); - ZVAL_UNDEF(&_21$$13); - ZVAL_UNDEF(&_23$$14); - ZVAL_UNDEF(&_25$$15); - ZVAL_UNDEF(&_27$$16); - ZVAL_UNDEF(&_29$$17); - ZVAL_UNDEF(&_31$$18); - ZVAL_UNDEF(&_33$$19); - ZVAL_UNDEF(&_35$$20); - ZVAL_UNDEF(&_37$$21); - ZVAL_UNDEF(&_39$$22); - ZVAL_UNDEF(&_41$$23); - ZVAL_UNDEF(&_43$$24); - - - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("reusable"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("reusable"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("writeConnectionServices"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("writeConnectionServices"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("schemas"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("schemas"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("sources"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sources"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("readConnectionServices"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("readConnectionServices"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("modelVisibility"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("modelVisibility"), &_11$$8); - } - zephir_read_property_ex(&_12, this_ptr, ZEND_STRL("keepSnapshots"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_12) == IS_NULL) { - ZEPHIR_INIT_VAR(&_13$$9); - array_init(&_13$$9); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("keepSnapshots"), &_13$$9); - } - zephir_read_property_ex(&_14, this_ptr, ZEND_STRL("initialized"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_14) == IS_NULL) { - ZEPHIR_INIT_VAR(&_15$$10); - array_init(&_15$$10); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("initialized"), &_15$$10); - } - zephir_read_property_ex(&_16, this_ptr, ZEND_STRL("hasOneThroughSingle"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_16) == IS_NULL) { - ZEPHIR_INIT_VAR(&_17$$11); - array_init(&_17$$11); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasOneThroughSingle"), &_17$$11); - } - zephir_read_property_ex(&_18, this_ptr, ZEND_STRL("hasOneThrough"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_18) == IS_NULL) { - ZEPHIR_INIT_VAR(&_19$$12); - array_init(&_19$$12); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasOneThrough"), &_19$$12); - } - zephir_read_property_ex(&_20, this_ptr, ZEND_STRL("hasOneSingle"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_20) == IS_NULL) { - ZEPHIR_INIT_VAR(&_21$$13); - array_init(&_21$$13); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasOneSingle"), &_21$$13); - } - zephir_read_property_ex(&_22, this_ptr, ZEND_STRL("hasOne"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_22) == IS_NULL) { - ZEPHIR_INIT_VAR(&_23$$14); - array_init(&_23$$14); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasOne"), &_23$$14); - } - zephir_read_property_ex(&_24, this_ptr, ZEND_STRL("hasManyToManySingle"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_24) == IS_NULL) { - ZEPHIR_INIT_VAR(&_25$$15); - array_init(&_25$$15); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasManyToManySingle"), &_25$$15); - } - zephir_read_property_ex(&_26, this_ptr, ZEND_STRL("hasManyToMany"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_26) == IS_NULL) { - ZEPHIR_INIT_VAR(&_27$$16); - array_init(&_27$$16); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasManyToMany"), &_27$$16); - } - zephir_read_property_ex(&_28, this_ptr, ZEND_STRL("hasManySingle"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_28) == IS_NULL) { - ZEPHIR_INIT_VAR(&_29$$17); - array_init(&_29$$17); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasManySingle"), &_29$$17); - } - zephir_read_property_ex(&_30, this_ptr, ZEND_STRL("hasMany"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_30) == IS_NULL) { - ZEPHIR_INIT_VAR(&_31$$18); - array_init(&_31$$18); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("hasMany"), &_31$$18); - } - zephir_read_property_ex(&_32, this_ptr, ZEND_STRL("dynamicUpdate"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_32) == IS_NULL) { - ZEPHIR_INIT_VAR(&_33$$19); - array_init(&_33$$19); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("dynamicUpdate"), &_33$$19); - } - zephir_read_property_ex(&_34, this_ptr, ZEND_STRL("customEventsManager"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_34) == IS_NULL) { - ZEPHIR_INIT_VAR(&_35$$20); - array_init(&_35$$20); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("customEventsManager"), &_35$$20); - } - zephir_read_property_ex(&_36, this_ptr, ZEND_STRL("belongsToSingle"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_36) == IS_NULL) { - ZEPHIR_INIT_VAR(&_37$$21); - array_init(&_37$$21); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("belongsToSingle"), &_37$$21); - } - zephir_read_property_ex(&_38, this_ptr, ZEND_STRL("belongsTo"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_38) == IS_NULL) { - ZEPHIR_INIT_VAR(&_39$$22); - array_init(&_39$$22); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("belongsTo"), &_39$$22); - } - zephir_read_property_ex(&_40, this_ptr, ZEND_STRL("behaviors"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_40) == IS_NULL) { - ZEPHIR_INIT_VAR(&_41$$23); - array_init(&_41$$23); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("behaviors"), &_41$$23); - } - zephir_read_property_ex(&_42, this_ptr, ZEND_STRL("aliases"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_42) == IS_NULL) { - ZEPHIR_INIT_VAR(&_43$$24); - array_init(&_43$$24); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("aliases"), &_43$$24); - } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); + if (UNEXPECTED(fetchMode == 7)) { + ZVAL_LONG(&_0$$4, 7); + ZEPHIR_RETURN_CALL_METHOD(&result, "fetchall", NULL, 0, &_0$$4); + zephir_check_call_status(); + RETURN_MM(); } -} - - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_ManagerInterface) -{ - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, ManagerInterface, phalcon, mvc_model_managerinterface, phalcon_mvc_model_managerinterface_method_entry); - - return SUCCESS; -} - -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addBehavior); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addBelongsTo); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addHasMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addHasOne); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addHasOneThrough); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, addHasManyToMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, createBuilder); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, createQuery); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, executeQuery); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getBelongsTo); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getBelongsToRecords); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getBuilder); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasManyRecords); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasManyToMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasOne); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasOneThrough); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasOneAndHasMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getHasOneRecords); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getLastInitialized); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getLastQuery); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getModelSchema); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getModelSource); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getReadConnection); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getReadConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getRelationByAlias); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getRelationRecords); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getRelations); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getRelationsBetween); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getWriteConnection); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, getWriteConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, hasBelongsTo); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, hasHasMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, hasHasOne); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, hasHasOneThrough); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, hasHasManyToMany); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, load); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, initialize); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, isInitialized); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, isKeepingSnapshots); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, isUsingDynamicUpdate); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, isVisibleModelProperty); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, keepSnapshots); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, missingMethod); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, notifyEvent); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, setConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, setReadConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, setModelSchema); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, setModelSource); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, setWriteConnectionService); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_ManagerInterface, useDynamicUpdate); - - - -#ifdef HAVE_CONFIG_H -#endif - - - - - -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_MetaData) -{ - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, MetaData, phalcon, mvc_model_metadata, phalcon_mvc_model_metadata_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - - zend_declare_property_null(phalcon_mvc_model_metadata_ce, SL("adapter"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_metadata_ce, SL("columnMap"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_metadata_ce, SL("container"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_metadata_ce, SL("metaData"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_metadata_ce, SL("strategy"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_metadata_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_MetaData; - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_ATTRIBUTES"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_AUTOMATIC_DEFAULT_INSERT"), 10); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_AUTOMATIC_DEFAULT_UPDATE"), 11); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_COLUMN_MAP"), 0); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DATE_AT"), 6); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DATE_IN"), 7); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DATA_TYPES"), 4); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DATA_TYPES_BIND"), 9); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DATA_TYPES_NUMERIC"), 5); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_DEFAULT_VALUES"), 12); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_EMPTY_STRING_VALUES"), 13); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_IDENTITY_COLUMN"), 8); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_NON_PRIMARY_KEY"), 2); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_NOT_NULL"), 3); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_PRIMARY_KEY"), 1); - - zephir_declare_class_constant_long(phalcon_mvc_model_metadata_ce, SL("MODELS_REVERSE_COLUMN_MAP"), 1); - - zend_class_implements(phalcon_mvc_model_metadata_ce, 1, phalcon_di_injectionawareinterface_ce); - zend_class_implements(phalcon_mvc_model_metadata_ce, 1, phalcon_mvc_model_metadatainterface_ce); - return SUCCESS; -} - -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAttributes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - - ZVAL_LONG(&_0, 0); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + ZVAL_LONG(&_1, fetchMode); + ZEPHIR_CALL_METHOD(NULL, &result, "setfetchmode", NULL, 0, &_1); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 102); - return; - } - RETURN_CCTOR(&data); -} - -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAutomaticCreateAttributes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - - ZVAL_LONG(&_0, 10); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + ZEPHIR_RETURN_CALL_METHOD(&result, "fetchall", NULL, 0); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 129); - return; - } - RETURN_CCTOR(&data); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getAutomaticUpdateAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, fetchColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval placeholders; + zval *sqlQuery_param = NULL, *placeholders_param = NULL, *column = NULL, column_sub, row, columnValue, _0; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(&row); + ZVAL_UNDEF(&columnValue); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&placeholders); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(sqlQuery) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(placeholders) + Z_PARAM_ZVAL(column) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - - ZVAL_LONG(&_0, 11); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 156); - return; + zephir_fetch_params(1, 1, 2, &sqlQuery_param, &placeholders_param, &column); + zephir_get_strval(&sqlQuery, sqlQuery_param); + if (!placeholders_param) { + ZEPHIR_INIT_VAR(&placeholders); + array_init(&placeholders); + } else { + zephir_get_arrval(&placeholders, placeholders_param); + } + if (!column) { + column = &column_sub; + ZEPHIR_INIT_VAR(column); + ZVAL_LONG(column, 0); } - RETURN_CCTOR(&data); -} - -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getBindTypes) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - ZVAL_LONG(&_0, 9); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + ZVAL_LONG(&_0, 4); + ZEPHIR_CALL_METHOD(&row, this_ptr, "fetchone", NULL, 0, &sqlQuery, &_0, &placeholders); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 183); - return; + if (!(zephir_array_isset_fetch(&columnValue, &row, column, 1))) { + RETURN_MM_BOOL(0); } - RETURN_CCTOR(&data); + RETURN_CTOR(&columnValue); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getColumnMap) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, fetchOne) { - zend_bool _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval bindParams, bindTypes; + zval *sqlQuery_param = NULL, *fetchMode = NULL, fetchMode_sub, *bindParams_param = NULL, *bindTypes_param = NULL, result; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&fetchMode_sub); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&bindTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 4) + Z_PARAM_STR(sqlQuery) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL(fetchMode) + Z_PARAM_ARRAY(bindParams) + Z_PARAM_ARRAY(bindTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 3, &sqlQuery_param, &fetchMode, &bindParams_param, &bindTypes_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } + if (!fetchMode) { + fetchMode = &fetchMode_sub; + ZEPHIR_INIT_VAR(fetchMode); + ZVAL_LONG(fetchMode, 2); + } + if (!bindParams_param) { + ZEPHIR_INIT_VAR(&bindParams); + array_init(&bindParams); + } else { + zephir_get_arrval(&bindParams, bindParams_param); + } + if (!bindTypes_param) { + ZEPHIR_INIT_VAR(&bindTypes); + array_init(&bindTypes); + } else { + zephir_get_arrval(&bindTypes, bindTypes_param); + } - ZVAL_LONG(&_0, 0); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readcolumnmapindex", NULL, 24, model, &_0); + ZEPHIR_CALL_METHOD(&result, this_ptr, "query", NULL, 0, &sqlQuery, &bindParams, &bindTypes); zephir_check_call_status(); - _1 = Z_TYPE_P(&data) != IS_NULL; - if (_1) { - _1 = Z_TYPE_P(&data) != IS_ARRAY; + if (Z_TYPE_P(&result) != IS_OBJECT) { + array_init(return_value); + RETURN_MM(); } - if (UNEXPECTED(_1)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 207); - return; + if (Z_TYPE_P(fetchMode) != IS_NULL) { + ZEPHIR_CALL_METHOD(NULL, &result, "setfetchmode", NULL, 0, fetchMode); + zephir_check_call_status(); } - RETURN_CCTOR(&data); + ZEPHIR_RETURN_CALL_METHOD(&result, "fetch", NULL, 0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getDefaultValues) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, forUpdate) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval *sqlQuery_param = NULL, _0; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&sqlQuery); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } - ZVAL_LONG(&_0, 12); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "forupdate", NULL, 0, &sqlQuery); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 231); - return; - } - RETURN_CCTOR(&data); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getDataTypes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getColumnDefinition) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval *column, column_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&column_sub); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 0, &column); - ZVAL_LONG(&_0, 4); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "getcolumndefinition", NULL, 0, column); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 255); - return; - } - RETURN_CCTOR(&data); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getDataTypesNumeric) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getColumnList) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval *columnList, columnList_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); + ZVAL_UNDEF(&columnList_sub); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + Z_PARAM_ZVAL(columnList) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 1, 0, &columnList); - ZVAL_LONG(&_0, 5); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "getcolumnlist", NULL, 0, columnList); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 282); - return; - } - RETURN_CCTOR(&data); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getDI) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getConnectionId) { - zval container, _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&_0); - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&container, &_0); - if (Z_TYPE_P(&container) != IS_OBJECT) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A dependency injection container is required to access internal services", "phalcon/Mvc/Model/MetaData.zep", 300); - return; - } - RETURN_CCTOR(&container); + RETURN_MEMBER(getThis(), "connectionId"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getEmptyStringAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getDefaultIdValue) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - ZVAL_LONG(&_0, 13); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); + object_init_ex(return_value, phalcon_db_rawvalue_ce); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "null"); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 32, &_0); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 327); - return; - } - RETURN_CCTOR(&data); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getIdentityField) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getDefaultValue) { + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - ZVAL_LONG(&_0, 8); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "readmetadataindex", NULL, 23, model, &_0); + object_init_ex(return_value, phalcon_db_rawvalue_ce); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "DEFAULT"); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 32, &_0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getNonPrimaryKeyAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getDescriptor) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - ZVAL_LONG(&_0, 2); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 367); - return; - } - RETURN_CCTOR(&data); + RETURN_MEMBER(getThis(), "descriptor"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getNotNullAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getDialect) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - ZVAL_LONG(&_0, 3); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 391); - return; - } - RETURN_CCTOR(&data); + RETURN_MEMBER(getThis(), "dialect"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getPrimaryKeyAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getEventsManager) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - ZVAL_LONG(&_0, 1); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readmetadataindex", NULL, 23, model, &_0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&data) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 415); - return; - } - RETURN_CCTOR(&data); + RETURN_MEMBER(getThis(), "eventsManager"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getReverseColumnMap) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getNestedTransactionSavepointName) { - zend_bool _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, data, _0; + zval _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data); ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - ZVAL_LONG(&_0, 1); - ZEPHIR_CALL_METHOD(&data, this_ptr, "readcolumnmapindex", NULL, 24, model, &_0); - zephir_check_call_status(); - _1 = Z_TYPE_P(&data) != IS_NULL; - if (_1) { - _1 = Z_TYPE_P(&data) != IS_ARRAY; - } - if (UNEXPECTED(_1)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The meta-data is invalid or is corrupt", "phalcon/Mvc/Model/MetaData.zep", 442); - return; - } - RETURN_CCTOR(&data); + zephir_read_property(&_0, this_ptr, ZEND_STRL("transactionLevel"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CONCAT_SV(return_value, "PHALCON_SAVEPOINT_", &_0); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getStrategy) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getRealSQLStatement) { - zval _0, _1$$3; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - - - ZEPHIR_MM_GROW(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("strategy"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - object_init_ex(&_1$$3, phalcon_mvc_model_metadata_strategy_introspection_ce); - if (zephir_has_constructor(&_1$$3)) { - ZEPHIR_CALL_METHOD(NULL, &_1$$3, "__construct", NULL, 0); - zephir_check_call_status(); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("strategy"), &_1$$3); - } - RETURN_MM_MEMBER(getThis(), "strategy"); + RETURN_MEMBER(getThis(), "realSqlStatement"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, hasAttribute) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getSQLBindTypes) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval attribute; - zval *model, model_sub, *attribute_param = NULL, columnMap, _0, _1; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&attribute); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_STR(attribute) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &attribute_param); - zephir_get_strval(&attribute, attribute_param); - ZEPHIR_CALL_METHOD(&columnMap, this_ptr, "getreversecolumnmap", NULL, 0, model); - zephir_check_call_status(); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - RETURN_MM_BOOL(zephir_array_isset(&columnMap, &attribute)); - } - ZEPHIR_CALL_METHOD(&_0, this_ptr, "readmetadata", NULL, 25, model); - zephir_check_call_status(); - zephir_array_fetch_long(&_1, &_0, 4, PH_READONLY, "phalcon/Mvc/Model/MetaData.zep", 482); - RETURN_MM_BOOL(zephir_array_isset(&_1, &attribute)); + RETURN_MEMBER(getThis(), "sqlBindTypes"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, isEmpty) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getSQLStatement) { - zval _0; zval *this_ptr = getThis(); - ZVAL_UNDEF(&_0); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - RETURN_BOOL(zephir_fast_count_int(&_0) == 0); + RETURN_MEMBER(getThis(), "sqlStatement"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, read) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, getSQLVariables) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *key_param = NULL, _0; - zval key; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STR(key) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &key_param); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); - } else { - ZEPHIR_INIT_VAR(&key); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("adapter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_RETURN_CALL_METHOD(&_0, "get", NULL, 0, &key); - zephir_check_call_status(); - RETURN_MM(); + RETURN_MEMBER(getThis(), "sqlVariables"); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readColumnMap) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, insert) { + zend_bool _6$$4, _11$$12; + zend_string *_5; + zend_ulong _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, keyName, data, _0, _1$$4, _2$$4, _3$$4; + zval values; + zval *table_param = NULL, *values_param = NULL, *fields = NULL, fields_sub, *dataTypes = NULL, dataTypes_sub, __$null, bindDataTypes, bindType, escapedTable, escapedFields, field, insertSql, insertValues, joinedValues, placeholders, position, tableName, value, *_2, _3, _16, _17, _0$$3, _9$$8, _10$$9, _14$$16, _15$$17, *_18$$22, _19$$22, _22$$22, _20$$23, _21$$24; + zval table, _1$$3, _7$$5, _8$$7, _12$$13, _13$$15; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&keyName); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_12$$13); + ZVAL_UNDEF(&_13$$15); + ZVAL_UNDEF(&fields_sub); + ZVAL_UNDEF(&dataTypes_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&bindDataTypes); + ZVAL_UNDEF(&bindType); + ZVAL_UNDEF(&escapedTable); + ZVAL_UNDEF(&escapedFields); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&insertSql); + ZVAL_UNDEF(&insertValues); + ZVAL_UNDEF(&joinedValues); + ZVAL_UNDEF(&placeholders); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_16); + ZVAL_UNDEF(&_17); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_9$$8); + ZVAL_UNDEF(&_10$$9); + ZVAL_UNDEF(&_14$$16); + ZVAL_UNDEF(&_15$$17); + ZVAL_UNDEF(&_19$$22); + ZVAL_UNDEF(&_22$$22); + ZVAL_UNDEF(&_20$$23); + ZVAL_UNDEF(&_21$$24); + ZVAL_UNDEF(&values); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(2, 4) + Z_PARAM_STR(table) + Z_PARAM_ARRAY(values) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(fields) + Z_PARAM_ZVAL_OR_NULL(dataTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); - - - if (!(ZEPHIR_GLOBAL(orm).column_renaming)) { - RETURN_MM_NULL(); + zephir_fetch_params(1, 2, 2, &table_param, &values_param, &fields, &dataTypes); + zephir_get_strval(&table, table_param); + ZEPHIR_OBS_COPY_OR_DUP(&values, values_param); + if (!fields) { + fields = &fields_sub; + fields = &__$null; } - ZEPHIR_INIT_VAR(&keyName); - zephir_get_class(&keyName, model, 1); - ZEPHIR_OBS_VAR(&data); - zephir_read_property(&_0, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&data, &_0, &keyName, 0))) { - ZVAL_NULL(&_1$$4); - ZVAL_NULL(&_2$$4); - ZVAL_NULL(&_3$$4); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 26, model, &_1$$4, &_2$$4, &_3$$4); - zephir_check_call_status(); - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_NVAR(&data); - zephir_array_fetch(&data, &_1$$4, &keyName, PH_NOISY, "phalcon/Mvc/Model/MetaData.zep", 531); + if (!dataTypes) { + dataTypes = &dataTypes_sub; + dataTypes = &__$null; } - RETURN_CCTOR(&data); -} - -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readColumnMapIndex) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long index, ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, *index_param = NULL, keyName, columnMapModel, map, _0, _1$$4, _2$$4, _3$$4; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&keyName); - ZVAL_UNDEF(&columnMapModel); - ZVAL_UNDEF(&map); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_3$$4); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_LONG(index) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &index_param); - index = zephir_get_intval(index_param); - if (!(ZEPHIR_GLOBAL(orm).column_renaming)) { - RETURN_MM_NULL(); + if (UNEXPECTED(!(zephir_fast_count_int(&values)))) { + ZEPHIR_INIT_VAR(&_0$$3); + object_init_ex(&_0$$3, phalcon_db_exception_ce); + ZEPHIR_INIT_VAR(&_1$$3); + ZEPHIR_CONCAT_SVS(&_1$$3, "Unable to insert into ", &table, " without data"); + ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 29, &_1$$3); + zephir_check_call_status(); + zephir_throw_exception_debug(&_0$$3, "phalcon/Db/Adapter/AbstractAdapter.zep", 810); + ZEPHIR_MM_RESTORE(); + return; } - ZEPHIR_INIT_VAR(&keyName); - zephir_get_class(&keyName, model, 1); - ZEPHIR_OBS_VAR(&columnMapModel); - zephir_read_property(&_0, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&columnMapModel, &_0, &keyName, 0))) { - ZVAL_NULL(&_1$$4); - ZVAL_NULL(&_2$$4); - ZVAL_NULL(&_3$$4); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 26, model, &_1$$4, &_2$$4, &_3$$4); + ZEPHIR_INIT_VAR(&placeholders); + array_init(&placeholders); + ZEPHIR_INIT_VAR(&insertValues); + array_init(&insertValues); + ZEPHIR_INIT_VAR(&bindDataTypes); + array_init(&bindDataTypes); + zephir_is_iterable(&values, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 848); + if (Z_TYPE_P(&values) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&values), _4, _5, _2) + { + ZEPHIR_INIT_NVAR(&position); + if (_5 != NULL) { + ZVAL_STR_COPY(&position, _5); + } else { + ZVAL_LONG(&position, _4); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _2); + _6$$4 = Z_TYPE_P(&value) == IS_OBJECT; + if (_6$$4) { + _6$$4 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); + } + if (_6$$4) { + zephir_cast_to_string(&_7$$5, &value); + zephir_array_append(&placeholders, &_7$$5, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 823); + } else { + if (Z_TYPE_P(&value) == IS_OBJECT) { + zephir_cast_to_string(&_8$$7, &value); + ZEPHIR_CPY_WRT(&value, &_8$$7); + } + if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_9$$8); + ZVAL_STRING(&_9$$8, "null"); + zephir_array_append(&placeholders, &_9$$8, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 830); + } else { + ZEPHIR_INIT_NVAR(&_10$$9); + ZVAL_STRING(&_10$$9, "?"); + zephir_array_append(&placeholders, &_10$$9, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 832); + zephir_array_append(&insertValues, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 833); + if (Z_TYPE_P(dataTypes) == IS_ARRAY) { + ZEPHIR_OBS_NVAR(&bindType); + if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, dataTypes, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Incomplete number of bind types", "phalcon/Db/Adapter/AbstractAdapter.zep", 839); + return; + } + zephir_array_append(&bindDataTypes, &bindType, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 842); + } + } + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_OBS_NVAR(&columnMapModel); - zephir_array_fetch(&columnMapModel, &_1$$4, &keyName, PH_NOISY, "phalcon/Mvc/Model/MetaData.zep", 562); + while (1) { + ZEPHIR_CALL_METHOD(&_3, &values, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_3)) { + break; + } + ZEPHIR_CALL_METHOD(&position, &values, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); + zephir_check_call_status(); + _11$$12 = Z_TYPE_P(&value) == IS_OBJECT; + if (_11$$12) { + _11$$12 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); + } + if (_11$$12) { + zephir_cast_to_string(&_12$$13, &value); + zephir_array_append(&placeholders, &_12$$13, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 823); + } else { + if (Z_TYPE_P(&value) == IS_OBJECT) { + zephir_cast_to_string(&_13$$15, &value); + ZEPHIR_CPY_WRT(&value, &_13$$15); + } + if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_14$$16); + ZVAL_STRING(&_14$$16, "null"); + zephir_array_append(&placeholders, &_14$$16, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 830); + } else { + ZEPHIR_INIT_NVAR(&_15$$17); + ZVAL_STRING(&_15$$17, "?"); + zephir_array_append(&placeholders, &_15$$17, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 832); + zephir_array_append(&insertValues, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 833); + if (Z_TYPE_P(dataTypes) == IS_ARRAY) { + ZEPHIR_OBS_NVAR(&bindType); + if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, dataTypes, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Incomplete number of bind types", "phalcon/Db/Adapter/AbstractAdapter.zep", 839); + return; + } + zephir_array_append(&bindDataTypes, &bindType, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 842); + } + } + } + ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_array_isset_long_fetch(&map, &columnMapModel, index, 1); - RETURN_CTOR(&map); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&position); + ZEPHIR_INIT_VAR(&_16); + ZVAL_STRING(&_16, "."); + ZEPHIR_INIT_VAR(&_17); + zephir_fast_strpos(&_17, &table, &_16, 0 ); + if (ZEPHIR_GT_LONG(&_17, 0)) { + ZEPHIR_INIT_VAR(&tableName); + zephir_fast_explode_str(&tableName, SL("."), &table, LONG_MAX); + } else { + ZEPHIR_CPY_WRT(&tableName, &table); + } + ZEPHIR_CALL_METHOD(&escapedTable, this_ptr, "escapeidentifier", NULL, 0, &tableName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&joinedValues); + zephir_fast_join_str(&joinedValues, SL(", "), &placeholders); + ZEPHIR_INIT_VAR(&insertSql); + if (Z_TYPE_P(fields) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&escapedFields); + array_init(&escapedFields); + zephir_is_iterable(fields, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 868); + if (Z_TYPE_P(fields) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(fields), _18$$22) + { + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _18$$22); + ZEPHIR_CALL_METHOD(&_20$$23, this_ptr, "escapeidentifier", NULL, 0, &field); + zephir_check_call_status(); + zephir_array_append(&escapedFields, &_20$$23, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 865); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, fields, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_19$$22, fields, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_19$$22)) { + break; + } + ZEPHIR_CALL_METHOD(&field, fields, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_21$$24, this_ptr, "escapeidentifier", NULL, 0, &field); + zephir_check_call_status(); + zephir_array_append(&escapedFields, &_21$$24, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 865); + ZEPHIR_CALL_METHOD(NULL, fields, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&field); + ZEPHIR_INIT_VAR(&_22$$22); + zephir_fast_join_str(&_22$$22, SL(", "), &escapedFields); + ZEPHIR_CONCAT_SVSVSVS(&insertSql, "INSERT INTO ", &escapedTable, " (", &_22$$22, ") VALUES (", &joinedValues, ")"); + } else { + ZEPHIR_CONCAT_SVSVS(&insertSql, "INSERT INTO ", &escapedTable, " VALUES (", &joinedValues, ")"); + } + if (!(zephir_fast_count_int(&bindDataTypes))) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &insertSql, &insertValues); + zephir_check_call_status(); + RETURN_MM(); + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &insertSql, &insertValues, &bindDataTypes); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readMetaData) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, insertAsDict) { - zval key; + zend_string *_4; + zend_ulong _3; + zend_bool _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, source, schema, _0, _1, _2, _3, _4; + zval *table_param = NULL, *data, data_sub, *dataTypes = NULL, dataTypes_sub, __$null, values, fields, field, value, *_1, _2; + zval table; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&dataTypes_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&key); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(2, 3) + Z_PARAM_STR(table) + Z_PARAM_ZVAL(data) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(dataTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &model); + zephir_fetch_params(1, 2, 1, &table_param, &data, &dataTypes); + zephir_get_strval(&table, table_param); + if (!dataTypes) { + dataTypes = &dataTypes_sub; + dataTypes = &__$null; + } - ZEPHIR_CALL_METHOD(&source, model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, model, "getschema", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_CONCAT_VSVV(&_1, &_0, "-", &schema, &source); - zephir_get_strval(&key, &_1); - zephir_read_property(&_2, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_2, &key))) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 26, model, &key, &source, &schema); + ZEPHIR_INIT_VAR(&values); + array_init(&values); + ZEPHIR_INIT_VAR(&fields); + array_init(&fields); + _0 = Z_TYPE_P(data) != IS_ARRAY; + if (!(_0)) { + _0 = ZEPHIR_IS_EMPTY(data); + } + if (_0) { + RETURN_MM_BOOL(0); + } + zephir_is_iterable(data, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 914); + if (Z_TYPE_P(data) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(data), _3, _4, _1) + { + ZEPHIR_INIT_NVAR(&field); + if (_4 != NULL) { + ZVAL_STR_COPY(&field, _4); + } else { + ZVAL_LONG(&field, _3); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _1); + zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 910); + zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 911); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, data, "rewind", NULL, 0); zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, data, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&field, data, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, data, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 910); + zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 911); + ZEPHIR_CALL_METHOD(NULL, data, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_read_property(&_3, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_4, &_3, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/MetaData.zep", 598); - RETURN_CTOR(&_4); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&field); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "insert", NULL, 0, &table, &values, &fields, dataTypes); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, readMetaDataIndex) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, isNestedTransactionsWithSavepoints) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "transactionsWithSavepoints"); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, limit) { - zval key; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long index, ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, *index_param = NULL, source, schema, _0, _1, _2, _3, _4, _5, _6; + zend_long number, ZEPHIR_LAST_CALL_STATUS; + zval *sqlQuery_param = NULL, *number_param = NULL, _0, _1; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(sqlQuery) + Z_PARAM_LONG(number) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 0, &sqlQuery_param, &number_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); + } + number = zephir_get_intval(number_param); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZVAL_LONG(&_1, number); + ZEPHIR_RETURN_CALL_METHOD(&_0, "limit", NULL, 0, &sqlQuery, &_1); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, listTables) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *schemaName_param = NULL, tables, table, allTables, _0, _1, _2, *_3, _4, _5$$3, _6$$4; + zval schemaName; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&tables); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&allTables); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&key); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_LONG(index) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &index_param); - index = zephir_get_intval(index_param); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } - ZEPHIR_CALL_METHOD(&source, model, "getsource", NULL, 0); + ZEPHIR_INIT_VAR(&allTables); + array_init(&allTables); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "listtables", NULL, 0, &schemaName); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, model, "getschema", NULL, 0); + ZVAL_LONG(&_2, 3); + ZEPHIR_CALL_METHOD(&tables, this_ptr, "fetchall", NULL, 0, &_1, &_2); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_0); - zephir_get_class(&_0, model, 1); - ZEPHIR_INIT_VAR(&_1); - ZEPHIR_CONCAT_VSVV(&_1, &_0, "-", &schema, &source); - zephir_get_strval(&key, &_1); - zephir_read_property(&_2, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_3, &_2, &key, PH_READONLY, "phalcon/Mvc/Model/MetaData.zep", 626); - if (!(zephir_array_isset_long(&_3, index))) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 26, model, &key, &source, &schema); + zephir_is_iterable(&tables, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 961); + if (Z_TYPE_P(&tables) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&tables), _3) + { + ZEPHIR_INIT_NVAR(&table); + ZVAL_COPY(&table, _3); + zephir_array_fetch_long(&_5$$3, &table, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 958); + zephir_array_append(&allTables, &_5$$3, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 958); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &tables, "rewind", NULL, 0); zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_4, &tables, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_4)) { + break; + } + ZEPHIR_CALL_METHOD(&table, &tables, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_fetch_long(&_6$$4, &table, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 958); + zephir_array_append(&allTables, &_6$$4, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 958); + ZEPHIR_CALL_METHOD(NULL, &tables, "next", NULL, 0); + zephir_check_call_status(); + } } - zephir_read_property(&_4, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_5, &_4, &key, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/MetaData.zep", 630); - zephir_array_fetch_long(&_6, &_5, index, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/MetaData.zep", 630); - RETURN_CTOR(&_6); + ZEPHIR_INIT_NVAR(&table); + RETURN_CCTOR(&allTables); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, reset) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, listViews) { - zval _0, _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *schemaName_param = NULL, tables, table, allTables, _0, _1, _2, *_3, _4, _5$$3, _6$$4; + zval schemaName; zval *this_ptr = getThis(); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&tables); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&allTables); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5$$3); + ZVAL_UNDEF(&_6$$4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &schemaName_param); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("metaData"), &_0); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("columnMap"), &_1); - ZEPHIR_MM_RESTORE(); + + ZEPHIR_INIT_VAR(&allTables); + array_init(&allTables); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "listviews", NULL, 0, &schemaName); + zephir_check_call_status(); + ZVAL_LONG(&_2, 3); + ZEPHIR_CALL_METHOD(&tables, this_ptr, "fetchall", NULL, 0, &_1, &_2); + zephir_check_call_status(); + zephir_is_iterable(&tables, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 988); + if (Z_TYPE_P(&tables) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&tables), _3) + { + ZEPHIR_INIT_NVAR(&table); + ZVAL_COPY(&table, _3); + zephir_array_fetch_long(&_5$$3, &table, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 985); + zephir_array_append(&allTables, &_5$$3, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 985); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &tables, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_4, &tables, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_4)) { + break; + } + ZEPHIR_CALL_METHOD(&table, &tables, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_fetch_long(&_6$$4, &table, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 985); + zephir_array_append(&allTables, &_6$$4, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 985); + ZEPHIR_CALL_METHOD(NULL, &tables, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&table); + RETURN_CCTOR(&allTables); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticCreateAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, modifyColumn) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *model, model_sub, *attributes_param = NULL, _0; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, *currentColumn = NULL, currentColumn_sub, __$null, _0, _1; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(¤tColumn_sub); + ZVAL_NULL(&__$null); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(3, 4) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) + Z_PARAM_OPTIONAL + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(currentColumn, phalcon_db_columninterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &attributes_param); - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 3, 1, &tableName_param, &schemaName_param, &column, ¤tColumn); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + if (!currentColumn) { + currentColumn = ¤tColumn_sub; + currentColumn = &__$null; + } - ZVAL_LONG(&_0, 10); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "writemetadataindex", NULL, 27, model, &_0, &attributes); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "modifycolumn", NULL, 0, &tableName, &schemaName, column, currentColumn); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_1); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setAutomaticUpdateAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, releaseSavepoint) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *model, model_sub, *attributes_param = NULL, _0; + zval *name_param = NULL, dialect, _0, _1, _2, _3; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&dialect); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &attributes_param); - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZVAL_LONG(&_0, 11); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "writemetadataindex", NULL, 27, model, &_0, &attributes); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&dialect, &_0); + ZEPHIR_CALL_METHOD(&_1, &dialect, "supportssavepoints", NULL, 0); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + if (UNEXPECTED(!zephir_is_true(&_1))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Savepoints are not supported by this database adapter", "phalcon/Db/Adapter/AbstractAdapter.zep", 1018); + return; + } + ZEPHIR_CALL_METHOD(&_2, &dialect, "supportsreleasesavepoints", NULL, 0); + zephir_check_call_status(); + if (!(zephir_is_true(&_2))) { + RETURN_MM_BOOL(0); + } + ZEPHIR_CALL_METHOD(&_3, &dialect, "releasesavepoint", NULL, 0, &name); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_3); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setEmptyStringAttributes) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, rollbackSavepoint) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval attributes; - zval *model, model_sub, *attributes_param = NULL, _0; + zval *name_param = NULL, dialect, _0, _1, _2; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&dialect); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&attributes); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(attributes) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &model, &attributes_param); - zephir_get_arrval(&attributes, attributes_param); + zephir_fetch_params(1, 1, 0, &name_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); + } - ZVAL_LONG(&_0, 13); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "writemetadataindex", NULL, 27, model, &_0, &attributes); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&dialect, &_0); + ZEPHIR_CALL_METHOD(&_1, &dialect, "supportssavepoints", NULL, 0); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + if (UNEXPECTED(!zephir_is_true(&_1))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Savepoints are not supported by this database adapter", "phalcon/Db/Adapter/AbstractAdapter.zep", 1042); + return; + } + ZEPHIR_CALL_METHOD(&_2, &dialect, "rollbacksavepoint", NULL, 0, &name); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_2); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setDI) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, setEventsManager) { - zval *container, container_sub; + zval *eventsManager, eventsManager_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); + ZVAL_UNDEF(&eventsManager_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_OBJECT_OF_CLASS(eventsManager, phalcon_events_managerinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &container); + zephir_fetch_params_without_memory_grow(1, 0, &eventsManager); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); + zephir_update_property_zval(this_ptr, ZEND_STRL("eventsManager"), eventsManager); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, setStrategy) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, setDialect) { - zval *strategy, strategy_sub; + zval *dialect, dialect_sub; zval *this_ptr = getThis(); - ZVAL_UNDEF(&strategy_sub); + ZVAL_UNDEF(&dialect_sub); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(strategy, phalcon_mvc_model_metadata_strategy_strategyinterface_ce) + Z_PARAM_OBJECT_OF_CLASS(dialect, phalcon_db_dialectinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(1, 0, &strategy); + zephir_fetch_params_without_memory_grow(1, 0, &dialect); - zephir_update_property_zval(this_ptr, ZEND_STRL("strategy"), strategy); + zephir_update_property_zval(this_ptr, ZEND_STRL("dialect"), dialect); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, write) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, setNestedTransactionsWithSavepoints) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval data; - zval *key_param = NULL, *data_param = NULL, result, option, _1, _2, _0$$3; - zval key; + zval *nestedTransactionsWithSavepoints_param = NULL, __$true, __$false, _0, _1, _2; + zend_bool nestedTransactionsWithSavepoints; zval *this_ptr = getThis(); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&option); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&data); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_STR(key) - Z_PARAM_ARRAY(data) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_BOOL(nestedTransactionsWithSavepoints) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &key_param, &data_param); - if (UNEXPECTED(Z_TYPE_P(key_param) != IS_STRING && Z_TYPE_P(key_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'key' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(key_param) == IS_STRING)) { - zephir_get_strval(&key, key_param); - } else { - ZEPHIR_INIT_VAR(&key); - } - zephir_get_arrval(&data, data_param); - - - - /* try_start_1: */ - - ZEPHIR_INIT_VAR(&option); - ZVAL_BOOL(&option, ZEPHIR_GLOBAL(orm).exception_on_failed_metadata_save); - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("adapter"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&result, &_0$$3, "set", NULL, 0, &key, &data); - zephir_check_call_status_or_jump(try_end_1); - if (ZEPHIR_IS_FALSE_IDENTICAL(&result)) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "throwwriteexception", NULL, 28, &option); - zephir_check_call_status_or_jump(try_end_1); - } + zephir_fetch_params(1, 1, 0, &nestedTransactionsWithSavepoints_param); + nestedTransactionsWithSavepoints = zephir_get_boolval(nestedTransactionsWithSavepoints_param); - try_end_1: - if (EG(exception)) { - ZEPHIR_INIT_VAR(&_1); - ZVAL_OBJ(&_1, EG(exception)); - Z_ADDREF_P(&_1); - ZEPHIR_INIT_VAR(&_2); - if (zephir_is_instance_of(&_1, SL("Exception"))) { - zend_clear_exception(); - ZEPHIR_CPY_WRT(&_2, &_1); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "throwwriteexception", NULL, 28, &option); - zephir_check_call_status(); - } + zephir_read_property(&_0, this_ptr, ZEND_STRL("transactionLevel"), PH_NOISY_CC | PH_READONLY); + if (UNEXPECTED(ZEPHIR_GT_LONG(&_0, 0))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Nested transaction with savepoints behavior cannot be changed while a transaction is open", "phalcon/Db/Adapter/AbstractAdapter.zep", 1074); + return; } - ZEPHIR_MM_RESTORE(); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "supportssavepoints", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(!zephir_is_true(&_2))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Savepoints are not supported by this database adapter", "phalcon/Db/Adapter/AbstractAdapter.zep", 1080); + return; + } + if (nestedTransactionsWithSavepoints) { + zephir_update_property_zval(this_ptr, ZEND_STRL("transactionsWithSavepoints"), &__$true); + } else { + zephir_update_property_zval(this_ptr, ZEND_STRL("transactionsWithSavepoints"), &__$false); + } + RETURN_THIS(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, writeMetaDataIndex) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, sharedLock) { - zend_bool _0, _1; - zval key; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long index, ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, *index_param = NULL, *data, data_sub, source, schema, _2, _3, _4; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *sqlQuery_param = NULL, _0; + zval sqlQuery; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&data_sub); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&key); + ZVAL_UNDEF(&sqlQuery); + ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_LONG(index) - Z_PARAM_ZVAL(data) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(sqlQuery) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &model, &index_param, &data); - index = zephir_get_intval(index_param); - - - _0 = Z_TYPE_P(data) != IS_ARRAY; - if (_0) { - _0 = Z_TYPE_P(data) != IS_STRING; - } - _1 = _0; - if (_1) { - _1 = ((Z_TYPE_P(data) == IS_TRUE || Z_TYPE_P(data) == IS_FALSE) != 1); + zephir_fetch_params(1, 1, 0, &sqlQuery_param); + if (UNEXPECTED(Z_TYPE_P(sqlQuery_param) != IS_STRING && Z_TYPE_P(sqlQuery_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlQuery' must be of the type string")); + RETURN_MM_NULL(); } - if (UNEXPECTED(_1)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid data for index", "phalcon/Mvc/Model/MetaData.zep", 765); - return; + if (EXPECTED(Z_TYPE_P(sqlQuery_param) == IS_STRING)) { + zephir_get_strval(&sqlQuery, sqlQuery_param); + } else { + ZEPHIR_INIT_VAR(&sqlQuery); } - ZEPHIR_CALL_METHOD(&source, model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, model, "getschema", NULL, 0); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "sharedlock", NULL, 0, &sqlQuery); zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2); - zephir_get_class(&_2, model, 1); - ZEPHIR_INIT_VAR(&_3); - ZEPHIR_CONCAT_VSVV(&_3, &_2, "-", &schema, &source); - zephir_get_strval(&key, &_3); - zephir_read_property(&_4, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset(&_4, &key))) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "initialize", NULL, 26, model, &key, &source, &schema); - zephir_check_call_status(); - } - zephir_update_property_array_multi(this_ptr, SL("metaData"), data, SL("zl"), 2, &key, index); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, initialize) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, supportSequences) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(0); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, tableExists) { - zval prefixKey; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *model, model_sub, *key, key_sub, *table, table_sub, *schema, schema_sub, strategy, className, metaData, data, modelMetadata, modelColumnMap, container, keyName, _4, _5, _0$$3, _1$$4, _2$$8, _3$$8; + zval *tableName_param = NULL, *schemaName_param = NULL, _0, _1, _2, _3, _4; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&key_sub); - ZVAL_UNDEF(&table_sub); - ZVAL_UNDEF(&schema_sub); - ZVAL_UNDEF(&strategy); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&data); - ZVAL_UNDEF(&modelMetadata); - ZVAL_UNDEF(&modelColumnMap); - ZVAL_UNDEF(&container); - ZVAL_UNDEF(&keyName); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$8); - ZVAL_UNDEF(&_3$$8); - ZVAL_UNDEF(&prefixKey); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ZVAL(key) - Z_PARAM_ZVAL(table) - Z_PARAM_ZVAL(schema) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &model, &key, &table, &schema); - - - ZEPHIR_INIT_VAR(&strategy); - ZVAL_NULL(&strategy); - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, model, 0); - if (Z_TYPE_P(key) != IS_NULL) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_0$$3); - if (!(zephir_array_isset(&metaData, key))) { - ZEPHIR_INIT_VAR(&_1$$4); - ZEPHIR_CONCAT_SV(&_1$$4, "meta-", key); - zephir_get_strval(&prefixKey, &_1$$4); - ZEPHIR_CALL_METHOD(&data, this_ptr, "read", NULL, 0, &prefixKey); - zephir_check_call_status(); - if (Z_TYPE_P(&data) != IS_NULL) { - zephir_update_property_array(this_ptr, SL("metaData"), key, &data); - } else { - if ((zephir_method_exists_ex(model, ZEND_STRL("metadata")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(&modelMetadata, model, "metadata", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&modelMetadata) != IS_ARRAY)) { - ZEPHIR_INIT_VAR(&_2$$8); - object_init_ex(&_2$$8, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_3$$8); - ZEPHIR_CONCAT_SV(&_3$$8, "Invalid meta-data for model ", &className); - ZEPHIR_CALL_METHOD(NULL, &_2$$8, "__construct", NULL, 29, &_3$$8); - zephir_check_call_status(); - zephir_throw_exception_debug(&_2$$8, "phalcon/Mvc/Model/MetaData.zep", 817); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&strategy, this_ptr, "getstrategy", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&modelMetadata, &strategy, "getmetadata", NULL, 0, model, &container); - zephir_check_call_status(); - } - zephir_update_property_array(this_ptr, SL("metaData"), key, &modelMetadata); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "write", NULL, 0, &prefixKey, &modelMetadata); - zephir_check_call_status(); - } - } - } - if (!(ZEPHIR_GLOBAL(orm).column_renaming)) { + zephir_fetch_params(1, 1, 1, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); RETURN_MM_NULL(); } - ZEPHIR_INIT_VAR(&keyName); - zephir_fast_strtolower(&keyName, &className); - zephir_read_property(&_4, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset(&_4, &keyName)) { - RETURN_MM_NULL(); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); } - ZEPHIR_INIT_VAR(&_5); - ZEPHIR_CONCAT_SV(&_5, "map-", &keyName); - zephir_get_strval(&prefixKey, &_5); - ZEPHIR_CALL_METHOD(&data, this_ptr, "read", NULL, 0, &prefixKey); - zephir_check_call_status(); - if (Z_TYPE_P(&data) != IS_NULL) { - zephir_update_property_array(this_ptr, SL("columnMap"), &keyName, &data); + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); RETURN_MM_NULL(); } - if (Z_TYPE_P(&strategy) != IS_OBJECT) { - ZEPHIR_CALL_METHOD(&container, this_ptr, "getdi", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&strategy, this_ptr, "getstrategy", NULL, 0); - zephir_check_call_status(); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_CALL_METHOD(&modelColumnMap, &strategy, "getcolumnmaps", NULL, 0, model, &container); + } + + + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "tableexists", NULL, 0, &tableName, &schemaName); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("columnMap"), &keyName, &modelColumnMap); - ZEPHIR_CALL_METHOD(NULL, this_ptr, "write", NULL, 0, &prefixKey, &modelColumnMap); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchone", NULL, 0, &_2, &_3); zephir_check_call_status(); - ZEPHIR_MM_RESTORE(); + zephir_array_fetch_long(&_4, &_0, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 1116); + RETURN_MM_BOOL(ZEPHIR_GT_LONG(&_4, 0)); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, throwWriteException) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, tableOptions) { - zval message; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *option, option_sub, _0$$3; + zval *tableName_param = NULL, *schemaName_param = NULL, sql, _0, _1, _2, _3; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&option_sub); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&message); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(option) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(tableName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &option); + zephir_fetch_params(1, 1, 1, &tableName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + zephir_get_strval(&schemaName, schemaName_param); + } - ZEPHIR_INIT_VAR(&message); - ZVAL_STRING(&message, "Failed to store metaData to the cache adapter"); - if (zephir_is_true(option)) { - ZEPHIR_INIT_VAR(&_0$$3); - object_init_ex(&_0$$3, phalcon_mvc_model_exception_ce); - ZEPHIR_CALL_METHOD(NULL, &_0$$3, "__construct", NULL, 29, &message); - zephir_check_call_status(); - zephir_throw_exception_debug(&_0$$3, "phalcon/Mvc/Model/MetaData.zep", 901); - ZEPHIR_MM_RESTORE(); - return; - } else { - ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", NULL, 7, &message); - zephir_check_call_status(); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&sql, &_0, "tableoptions", NULL, 0, &tableName, &schemaName); + zephir_check_call_status(); + if (!(zephir_is_true(&sql))) { + array_init(return_value); + RETURN_MM(); } - ZEPHIR_MM_RESTORE(); + ZVAL_LONG(&_2, 2); + ZEPHIR_CALL_METHOD(&_1, this_ptr, "fetchall", NULL, 0, &sql, &_2); + zephir_check_call_status(); + zephir_array_fetch_long(&_3, &_1, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 1138); + RETURN_CTOR(&_3); } -static PHP_METHOD(Phalcon_Mvc_Model_MetaData, getArrVal) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, update) { + zend_bool _5$$3, _11$$12; + zend_string *_3; + zend_ulong _2; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *collection_param = NULL, *index, index_sub, *defaultValue = NULL, defaultValue_sub, __$null, value; - zval collection; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&collection); - ZVAL_UNDEF(&index_sub); - ZVAL_UNDEF(&defaultValue_sub); + zephir_fcall_cache_entry *_4 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *fields, fields_sub, *values, values_sub, *whereCondition = NULL, whereCondition_sub, *dataTypes = NULL, dataTypes_sub, __$null, bindDataTypes, bindType, conditions, escapedField, escapedTable, field, placeholders, position, setClause, tableName, updateSql, updateValues, value, whereBind, whereTypes, *_0, _1, _17, _18, _7$$5, _9$$8, _10$$9, _13$$14, _15$$17, _16$$18; + zval table, _6$$5, _8$$7, _12$$14, _14$$16; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_8$$7); + ZVAL_UNDEF(&_12$$14); + ZVAL_UNDEF(&_14$$16); + ZVAL_UNDEF(&fields_sub); + ZVAL_UNDEF(&values_sub); + ZVAL_UNDEF(&whereCondition_sub); + ZVAL_UNDEF(&dataTypes_sub); ZVAL_NULL(&__$null); + ZVAL_UNDEF(&bindDataTypes); + ZVAL_UNDEF(&bindType); + ZVAL_UNDEF(&conditions); + ZVAL_UNDEF(&escapedField); + ZVAL_UNDEF(&escapedTable); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&placeholders); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&setClause); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&updateSql); + ZVAL_UNDEF(&updateValues); ZVAL_UNDEF(&value); + ZVAL_UNDEF(&whereBind); + ZVAL_UNDEF(&whereTypes); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_17); + ZVAL_UNDEF(&_18); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_9$$8); + ZVAL_UNDEF(&_10$$9); + ZVAL_UNDEF(&_13$$14); + ZVAL_UNDEF(&_15$$17); + ZVAL_UNDEF(&_16$$18); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 3) - Z_PARAM_ARRAY(collection) - Z_PARAM_ZVAL(index) + ZEND_PARSE_PARAMETERS_START(3, 5) + Z_PARAM_STR(table) + Z_PARAM_ZVAL(fields) + Z_PARAM_ZVAL(values) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(defaultValue) + Z_PARAM_ZVAL_OR_NULL(whereCondition) + Z_PARAM_ZVAL_OR_NULL(dataTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 1, &collection_param, &index, &defaultValue); - ZEPHIR_OBS_COPY_OR_DUP(&collection, collection_param); - if (!defaultValue) { - defaultValue = &defaultValue_sub; - defaultValue = &__$null; + zephir_fetch_params(1, 3, 2, &table_param, &fields, &values, &whereCondition, &dataTypes); + zephir_get_strval(&table, table_param); + if (!whereCondition) { + whereCondition = &whereCondition_sub; + whereCondition = &__$null; + } + if (!dataTypes) { + dataTypes = &dataTypes_sub; + dataTypes = &__$null; } - if (UNEXPECTED(!(zephir_array_isset_fetch(&value, &collection, index, 1)))) { - RETVAL_ZVAL(defaultValue, 1, 0); + ZEPHIR_INIT_VAR(&placeholders); + array_init(&placeholders); + ZEPHIR_INIT_VAR(&updateValues); + array_init(&updateValues); + ZEPHIR_INIT_VAR(&bindDataTypes); + array_init(&bindDataTypes); + zephir_is_iterable(values, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 1228); + if (Z_TYPE_P(values) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(values), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&position); + if (_3 != NULL) { + ZVAL_STR_COPY(&position, _3); + } else { + ZVAL_LONG(&position, _2); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0); + ZEPHIR_OBS_NVAR(&field); + if (UNEXPECTED(!(zephir_array_isset_fetch(&field, fields, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The number of values in the update is not the same as fields", "phalcon/Db/Adapter/AbstractAdapter.zep", 1193); + return; + } + ZEPHIR_CALL_METHOD(&escapedField, this_ptr, "escapeidentifier", &_4, 0, &field); + zephir_check_call_status(); + _5$$3 = Z_TYPE_P(&value) == IS_OBJECT; + if (_5$$3) { + _5$$3 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); + } + if (_5$$3) { + zephir_cast_to_string(&_6$$5, &value); + ZEPHIR_INIT_NVAR(&_7$$5); + ZEPHIR_CONCAT_VSV(&_7$$5, &escapedField, " = ", &_6$$5); + zephir_array_append(&placeholders, &_7$$5, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1199); + } else { + if (Z_TYPE_P(&value) == IS_OBJECT) { + zephir_cast_to_string(&_8$$7, &value); + ZEPHIR_CPY_WRT(&value, &_8$$7); + } + if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_9$$8); + ZEPHIR_CONCAT_VS(&_9$$8, &escapedField, " = null"); + zephir_array_append(&placeholders, &_9$$8, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1206); + } else { + zephir_array_append(&updateValues, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1208); + if (Z_TYPE_P(dataTypes) == IS_ARRAY) { + ZEPHIR_OBS_NVAR(&bindType); + if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, dataTypes, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Incomplete number of bind types", "phalcon/Db/Adapter/AbstractAdapter.zep", 1214); + return; + } + zephir_array_append(&bindDataTypes, &bindType, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1217); + } + ZEPHIR_INIT_NVAR(&_10$$9); + ZEPHIR_CONCAT_VS(&_10$$9, &escapedField, " = ?"); + zephir_array_append(&placeholders, &_10$$9, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1220); + } + } + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, values, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_1, values, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_1)) { + break; + } + ZEPHIR_CALL_METHOD(&position, values, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, values, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&field); + if (UNEXPECTED(!(zephir_array_isset_fetch(&field, fields, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The number of values in the update is not the same as fields", "phalcon/Db/Adapter/AbstractAdapter.zep", 1193); + return; + } + ZEPHIR_CALL_METHOD(&escapedField, this_ptr, "escapeidentifier", &_4, 0, &field); + zephir_check_call_status(); + _11$$12 = Z_TYPE_P(&value) == IS_OBJECT; + if (_11$$12) { + _11$$12 = zephir_instance_of_ev(&value, phalcon_db_rawvalue_ce); + } + if (_11$$12) { + zephir_cast_to_string(&_12$$14, &value); + ZEPHIR_INIT_NVAR(&_13$$14); + ZEPHIR_CONCAT_VSV(&_13$$14, &escapedField, " = ", &_12$$14); + zephir_array_append(&placeholders, &_13$$14, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1199); + } else { + if (Z_TYPE_P(&value) == IS_OBJECT) { + zephir_cast_to_string(&_14$$16, &value); + ZEPHIR_CPY_WRT(&value, &_14$$16); + } + if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_15$$17); + ZEPHIR_CONCAT_VS(&_15$$17, &escapedField, " = null"); + zephir_array_append(&placeholders, &_15$$17, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1206); + } else { + zephir_array_append(&updateValues, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1208); + if (Z_TYPE_P(dataTypes) == IS_ARRAY) { + ZEPHIR_OBS_NVAR(&bindType); + if (UNEXPECTED(!(zephir_array_isset_fetch(&bindType, dataTypes, &position, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Incomplete number of bind types", "phalcon/Db/Adapter/AbstractAdapter.zep", 1214); + return; + } + zephir_array_append(&bindDataTypes, &bindType, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1217); + } + ZEPHIR_INIT_NVAR(&_16$$18); + ZEPHIR_CONCAT_VS(&_16$$18, &escapedField, " = ?"); + zephir_array_append(&placeholders, &_16$$18, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1220); + } + } + ZEPHIR_CALL_METHOD(NULL, values, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&position); + ZEPHIR_INIT_VAR(&_17); + ZVAL_STRING(&_17, "."); + ZEPHIR_INIT_VAR(&_18); + zephir_fast_strpos(&_18, &table, &_17, 0 ); + if (ZEPHIR_GT_LONG(&_18, 0)) { + ZEPHIR_INIT_VAR(&tableName); + zephir_fast_explode_str(&tableName, SL("."), &table, LONG_MAX); + } else { + ZEPHIR_CPY_WRT(&tableName, &table); + } + ZEPHIR_CALL_METHOD(&escapedTable, this_ptr, "escapeidentifier", &_4, 0, &tableName); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&setClause); + zephir_fast_join_str(&setClause, SL(", "), &placeholders); + ZEPHIR_INIT_VAR(&updateSql); + if (Z_TYPE_P(whereCondition) != IS_NULL) { + ZEPHIR_CONCAT_SVSVS(&updateSql, "UPDATE ", &escapedTable, " SET ", &setClause, " WHERE "); + if (Z_TYPE_P(whereCondition) == IS_STRING) { + zephir_concat_self(&updateSql, whereCondition); + } else { + if (UNEXPECTED(Z_TYPE_P(whereCondition) != IS_ARRAY)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid WHERE clause conditions", "phalcon/Db/Adapter/AbstractAdapter.zep", 1251); + return; + } + ZEPHIR_OBS_VAR(&conditions); + if (zephir_array_isset_string_fetch(&conditions, whereCondition, SL("conditions"), 0)) { + zephir_concat_self(&updateSql, &conditions); + } + ZEPHIR_OBS_VAR(&whereBind); + if (zephir_array_isset_string_fetch(&whereBind, whereCondition, SL("bind"), 0)) { + zephir_merge_append(&updateValues, &whereBind); + } + ZEPHIR_OBS_VAR(&whereTypes); + if (zephir_array_isset_string_fetch(&whereTypes, whereCondition, SL("bindTypes"), 0)) { + zephir_merge_append(&bindDataTypes, &whereTypes); + } + } + } else { + ZEPHIR_CONCAT_SVSV(&updateSql, "UPDATE ", &escapedTable, " SET ", &setClause); + } + if (!(zephir_fast_count_int(&bindDataTypes))) { + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &updateSql, &updateValues); + zephir_check_call_status(); RETURN_MM(); } - RETURN_CTOR(&value); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &updateSql, &updateValues, &bindDataTypes); + zephir_check_call_status(); + RETURN_MM(); } -zend_object *zephir_init_properties_Phalcon_Mvc_Model_MetaData(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, updateAsDict) { - zval _0, _2, _1$$3, _3$$4; + zend_string *_4; + zend_ulong _3; + zend_bool _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *data, data_sub, *whereCondition = NULL, whereCondition_sub, *dataTypes = NULL, dataTypes_sub, __$null, values, fields, field, value, *_1, _2; + zval table; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&data_sub); + ZVAL_UNDEF(&whereCondition_sub); + ZVAL_UNDEF(&dataTypes_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&values); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_2); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(2, 4) + Z_PARAM_STR(table) + Z_PARAM_ZVAL(data) + Z_PARAM_OPTIONAL + Z_PARAM_ZVAL_OR_NULL(whereCondition) + Z_PARAM_ZVAL_OR_NULL(dataTypes) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 2, 2, &table_param, &data, &whereCondition, &dataTypes); + zephir_get_strval(&table, table_param); + if (!whereCondition) { + whereCondition = &whereCondition_sub; + whereCondition = &__$null; + } + if (!dataTypes) { + dataTypes = &dataTypes_sub; + dataTypes = &__$null; + } + + + ZEPHIR_INIT_VAR(&values); + array_init(&values); + ZEPHIR_INIT_VAR(&fields); + array_init(&fields); + _0 = Z_TYPE_P(data) != IS_ARRAY; + if (!(_0)) { + _0 = ZEPHIR_IS_EMPTY(data); + } + if (_0) { + RETURN_MM_BOOL(0); + } + zephir_is_iterable(data, 0, "phalcon/Db/Adapter/AbstractAdapter.zep", 1324); + if (Z_TYPE_P(data) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(data), _3, _4, _1) + { + ZEPHIR_INIT_NVAR(&field); + if (_4 != NULL) { + ZVAL_STR_COPY(&field, _4); + } else { + ZVAL_LONG(&field, _3); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _1); + zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1320); + zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1321); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, data, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_2, data, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_2)) { + break; + } + ZEPHIR_CALL_METHOD(&field, data, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, data, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_append(&fields, &field, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1320); + zephir_array_append(&values, &value, PH_SEPARATE, "phalcon/Db/Adapter/AbstractAdapter.zep", 1321); + ZEPHIR_CALL_METHOD(NULL, data, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&field); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "update", NULL, 0, &table, &fields, &values, whereCondition, dataTypes); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, useExplicitIdValue) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(0); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, supportsDefaultValue) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(1); +} + +static PHP_METHOD(Phalcon_Db_Adapter_AbstractAdapter, viewExists) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *viewName_param = NULL, *schemaName_param = NULL, _0, _1, _2, _3, _4; + zval viewName, schemaName; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&viewName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(viewName) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schemaName) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &viewName_param, &schemaName_param); + if (UNEXPECTED(Z_TYPE_P(viewName_param) != IS_STRING && Z_TYPE_P(viewName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'viewName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(viewName_param) == IS_STRING)) { + zephir_get_strval(&viewName, viewName_param); + } else { + ZEPHIR_INIT_VAR(&viewName); + } + if (!schemaName_param) { + ZEPHIR_INIT_VAR(&schemaName); + } else { + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + } + + + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "viewexists", NULL, 0, &viewName, &schemaName); + zephir_check_call_status(); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchone", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_array_fetch_long(&_4, &_0, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/AbstractAdapter.zep", 1357); + RETURN_MM_BOOL(ZEPHIR_GT_LONG(&_4, 0)); +} + +zend_object *zephir_init_properties_Phalcon_Db_Adapter_AbstractAdapter(zend_class_entry *class_type) +{ + zval _0, _2, _4, _1$$3, _3$$4, _5$$5; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); ZVAL_UNDEF(&_1$$3); ZVAL_UNDEF(&_3$$4); + ZVAL_UNDEF(&_5$$5); ZEPHIR_MM_GROW(); @@ -62520,17 +58841,23 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Model_MetaData(zend_class_entry { zval local_this_ptr, *this_ptr = &local_this_ptr; ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("sqlVariables"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_0) == IS_NULL) { ZEPHIR_INIT_VAR(&_1$$3); array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("metaData"), &_1$$3); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlVariables"), &_1$$3); } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("columnMap"), PH_NOISY_CC | PH_READONLY); + zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("sqlBindTypes"), PH_NOISY_CC | PH_READONLY); if (Z_TYPE_P(&_2) == IS_NULL) { ZEPHIR_INIT_VAR(&_3$$4); array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("columnMap"), &_3$$4); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlBindTypes"), &_3$$4); + } + zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("descriptor"), PH_NOISY_CC | PH_READONLY); + if (Z_TYPE_P(&_4) == IS_NULL) { + ZEPHIR_INIT_VAR(&_5$$5); + array_init(&_5$$5); + zephir_update_property_zval_ex(this_ptr, ZEND_STRL("descriptor"), &_5$$5); } ZEPHIR_MM_RESTORE(); return Z_OBJ_P(this_ptr); @@ -62547,115 +58874,80 @@ zend_object *zephir_init_properties_Phalcon_Mvc_Model_MetaData(zend_class_entry -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_MetaDataInterface) +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_AdapterInterface) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, MetaDataInterface, phalcon, mvc_model_metadatainterface, phalcon_mvc_model_metadatainterface_method_entry); + ZEPHIR_REGISTER_INTERFACE(Phalcon\\Db\\Adapter, AdapterInterface, phalcon, db_adapter_adapterinterface, phalcon_db_adapter_adapterinterface_method_entry); return SUCCESS; } -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getAutomaticCreateAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getAutomaticUpdateAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getBindTypes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getColumnMap); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getDefaultValues); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getDataTypes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getDataTypesNumeric); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getEmptyStringAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getIdentityField); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getNonPrimaryKeyAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getNotNullAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getPrimaryKeyAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getReverseColumnMap); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, getStrategy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, hasAttribute); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, isEmpty); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, read); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, readColumnMap); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, readColumnMapIndex); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, readMetaData); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, readMetaDataIndex); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, reset); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, setAutomaticCreateAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, setAutomaticUpdateAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, setEmptyStringAttributes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, writeMetaDataIndex); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, setStrategy); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_MetaDataInterface, write); - - - - -#ifdef HAVE_CONFIG_H -#endif - - -#if PHP_VERSION_ID < 70000 -#else -#endif - -static void phalcon_orm_destroy_cache() { - - zend_phalcon_globals *phalcon_globals_ptr = ZEPHIR_VGLOBAL; - - if (phalcon_globals_ptr->orm.parser_cache != NULL) { - zend_hash_destroy(phalcon_globals_ptr->orm.parser_cache); - FREE_HASHTABLE(phalcon_globals_ptr->orm.parser_cache); - phalcon_globals_ptr->orm.parser_cache = NULL; - } - - if (phalcon_globals_ptr->orm.ast_cache != NULL) { - zend_hash_destroy(phalcon_globals_ptr->orm.ast_cache); - FREE_HASHTABLE(phalcon_globals_ptr->orm.ast_cache); - phalcon_globals_ptr->orm.ast_cache = NULL; - } -} - -static void phalcon_orm_singlequotes(zval *return_value, zval *str) { - - int i; - smart_str escaped_str = {0}; - char *marker; - - if (Z_TYPE_P(str) != IS_STRING) { - RETURN_ZVAL(str, 1, 0); - } - - marker = Z_STRVAL_P(str); - - for (i = 0; i < Z_STRLEN_P(str); i++) { - if ((*marker) == '\0') { - break; - } - if ((*marker) == '\'') { - if (i > 0) { - if (*(marker - 1) != '\\') { - smart_str_appendc(&escaped_str, '\''); - } - } else { - smart_str_appendc(&escaped_str, '\''); - } - } - smart_str_appendc(&escaped_str, (*marker)); - marker++; - } - - smart_str_0(&escaped_str); - -#if PHP_VERSION_ID < 70000 - if (escaped_str.len) { - RETURN_STRINGL(escaped_str.c, escaped_str.len, 0); - } -#else - if (escaped_str.s) { - RETURN_STR(escaped_str.s); - } -#endif - - smart_str_free(&escaped_str); - RETURN_EMPTY_STRING(); -} +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, addColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, addIndex); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, addForeignKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, addPrimaryKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, affectedRows); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, begin); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, close); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, commit); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, connect); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, createSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, createTable); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, createView); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, delete); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, describeColumns); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, describeIndexes); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, describeReferences); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropForeignKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropIndex); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropPrimaryKey); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropTable); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, dropView); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, escapeIdentifier); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, escapeString); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, execute); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, fetchAll); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, fetchColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, fetchOne); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, forUpdate); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getColumnDefinition); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getColumnList); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getConnectionId); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getDescriptor); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getDialect); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getDialectType); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getDefaultIdValue); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getDefaultValue); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getInternalHandler); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getNestedTransactionSavepointName); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getRealSQLStatement); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getSQLStatement); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getSQLBindTypes); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getSQLVariables); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, getType); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, insert); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, insertAsDict); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, isNestedTransactionsWithSavepoints); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, isUnderTransaction); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, lastInsertId); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, limit); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, listTables); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, listViews); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, modifyColumn); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, query); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, releaseSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, rollback); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, rollbackSavepoint); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, sharedLock); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, setNestedTransactionsWithSavepoints); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, supportSequences); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, tableExists); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, tableOptions); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, update); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, updateAsDict); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, useExplicitIdValue); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, supportsDefaultValue); +ZEPHIR_DOC_METHOD(Phalcon_Db_Adapter_AdapterInterface, viewExists); @@ -62666,8051 +58958,5971 @@ static void phalcon_orm_singlequotes(zval *return_value, zval *str) { -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Query) +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_PdoFactory) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Query, phalcon, mvc_model_query, phalcon_mvc_model_query_method_entry, 0); - - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("ast"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("bindParams"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("bindTypes"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("cache"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("cacheOptions"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("container"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("enableImplicitJoins"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("intermediate"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("manager"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("metaData"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("models"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("modelsInstances"), ZEND_ACC_PROTECTED); - zend_declare_property_long(phalcon_mvc_model_query_ce, SL("nestingLevel"), -1, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("phql"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_model_query_ce, SL("sharedLock"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("sqlAliases"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("sqlAliasesModels"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("sqlAliasesModelsInstances"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("sqlColumnAliases"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("sqlModelsAliases"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("type"), ZEND_ACC_PROTECTED); - zend_declare_property_bool(phalcon_mvc_model_query_ce, SL("uniqueRow"), 0, ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("transaction"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_query_ce, SL("internalPhqlCache"), ZEND_ACC_PROTECTED|ZEND_ACC_STATIC); - phalcon_mvc_model_query_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_Query; - zephir_declare_class_constant_long(phalcon_mvc_model_query_ce, SL("TYPE_DELETE"), 303); - - zephir_declare_class_constant_long(phalcon_mvc_model_query_ce, SL("TYPE_INSERT"), 306); - - zephir_declare_class_constant_long(phalcon_mvc_model_query_ce, SL("TYPE_SELECT"), 309); - - zephir_declare_class_constant_long(phalcon_mvc_model_query_ce, SL("TYPE_UPDATE"), 300); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Adapter, PdoFactory, phalcon, db_adapter_pdofactory, phalcon_factory_abstractfactory_ce, phalcon_db_adapter_pdofactory_method_entry, 0); - zend_class_implements(phalcon_mvc_model_query_ce, 1, phalcon_mvc_model_queryinterface_ce); - zend_class_implements(phalcon_mvc_model_query_ce, 1, phalcon_di_injectionawareinterface_ce); return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getTransaction) -{ - zval *this_ptr = getThis(); - - - - RETURN_MEMBER(getThis(), "transaction"); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, __construct) +static PHP_METHOD(Phalcon_Db_Adapter_PdoFactory, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval options; - zval *phql_param = NULL, *container = NULL, container_sub, *options_param = NULL, __$true, __$false, __$null, enableImplicitJoins, _0, _1; - zval phql; + zval *services_param = NULL; + zval services; zval *this_ptr = getThis(); - ZVAL_UNDEF(&phql); - ZVAL_UNDEF(&container_sub); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&enableImplicitJoins); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&options); + ZVAL_UNDEF(&services); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 3) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(phql) - Z_PARAM_OBJECT_OF_CLASS_OR_NULL(container, phalcon_di_diinterface_ce) - Z_PARAM_ARRAY(options) + Z_PARAM_ARRAY(services) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 3, &phql_param, &container, &options_param); - if (!phql_param) { - ZEPHIR_INIT_VAR(&phql); - } else { - zephir_get_strval(&phql, phql_param); - } - if (!container) { - container = &container_sub; - container = &__$null; - } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + zephir_fetch_params(1, 0, 1, &services_param); + if (!services_param) { + ZEPHIR_INIT_VAR(&services); + array_init(&services); } else { - zephir_get_arrval(&options, options_param); + ZEPHIR_OBS_COPY_OR_DUP(&services, services_param); } - zephir_update_property_zval(this_ptr, ZEND_STRL("phql"), &phql); - if (Z_TYPE_P(container) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(NULL, this_ptr, "setdi", NULL, 0, container); - zephir_check_call_status(); - } - ZEPHIR_OBS_VAR(&enableImplicitJoins); - if (zephir_array_isset_string_fetch(&enableImplicitJoins, &options, SL("enable_implicit_joins"), 0)) { - if (ZEPHIR_IS_TRUE(&enableImplicitJoins)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("enableImplicitJoins"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("enableImplicitJoins"), &__$false); - } - } else { - if (ZEPHIR_GLOBAL(orm).enable_implicit_joins) { - zephir_update_property_zval(this_ptr, ZEND_STRL("enableImplicitJoins"), &__$true); - } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("enableImplicitJoins"), &__$false); - } - } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("bindParams"), &_0); - ZEPHIR_INIT_VAR(&_1); - array_init(&_1); - zephir_update_property_zval(this_ptr, ZEND_STRL("bindTypes"), &_1); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "init", NULL, 0, &services); + zephir_check_call_status(); ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, cache) +static PHP_METHOD(Phalcon_Db_Adapter_PdoFactory, load) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *cacheOptions_param = NULL; - zval cacheOptions; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *config = NULL, config_sub, name, options, _0, _1, _2, _3; zval *this_ptr = getThis(); - ZVAL_UNDEF(&cacheOptions); + ZVAL_UNDEF(&config_sub); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(cacheOptions) + Z_PARAM_ZVAL(config) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &cacheOptions_param); - zephir_get_arrval(&cacheOptions, cacheOptions_param); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("cacheOptions"), &cacheOptions); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, clean) -{ - zval _0; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); + zephir_fetch_params(1, 1, 0, &config); + ZEPHIR_SEPARATE_PARAM(config); - ZEPHIR_MM_GROW(); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkconfig", NULL, 0, config); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(config, &_0); + ZEPHIR_INIT_VAR(&_1); + ZVAL_STRING(&_1, "adapter"); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "checkconfigelement", NULL, 0, config, &_1); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(config, &_0); + ZEPHIR_OBS_VAR(&name); + zephir_array_fetch_string(&name, config, SL("adapter"), PH_NOISY, "phalcon/Db/Adapter/PdoFactory.zep", 50); + zephir_array_unset_string(config, SL("adapter"), PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_1); + object_init_ex(&_1, phalcon_support_helper_arr_get_ce); + if (zephir_has_constructor(&_1)) { + ZEPHIR_CALL_METHOD(NULL, &_1, "__construct", NULL, 0); + zephir_check_call_status(); + } - ZEPHIR_INIT_VAR(&_0); - array_init(&_0); - zephir_update_static_property_ce(phalcon_mvc_model_query_ce, ZEND_STRL("internalPhqlCache"), &_0); - ZEPHIR_MM_RESTORE(); + ZEPHIR_INIT_VAR(&_2); + array_init(&_2); + ZEPHIR_INIT_VAR(&_3); + ZVAL_STRING(&_3, "options"); + ZEPHIR_CALL_METHOD(&options, &_1, "__invoke", NULL, 151, config, &_3, &_2); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "newinstance", NULL, 0, &name, &options); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, execute) +static PHP_METHOD(Phalcon_Db_Adapter_PdoFactory, newInstance) { - zval _5$$8; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *bindParams_param = NULL, *bindTypes_param = NULL, uniqueRow, cacheOptions, key, cacheService, cache, result, preparedResult, defaultBindParams, mergedParams, defaultBindTypes, mergedTypes, type, lifetime, intermediate, _0, _1$$3, _2$$3, _3$$3, _4$$8, _6$$9, _7$$19, _8$$19; - zval bindParams, bindTypes; + zval options, _0; + zval *name_param = NULL, *options_param = NULL, definition; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&uniqueRow); - ZVAL_UNDEF(&cacheOptions); - ZVAL_UNDEF(&key); - ZVAL_UNDEF(&cacheService); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&preparedResult); - ZVAL_UNDEF(&defaultBindParams); - ZVAL_UNDEF(&mergedParams); - ZVAL_UNDEF(&defaultBindTypes); - ZVAL_UNDEF(&mergedTypes); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&lifetime); - ZVAL_UNDEF(&intermediate); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&options); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$8); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_7$$19); - ZVAL_UNDEF(&_8$$19); - ZVAL_UNDEF(&_5$$8); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(name) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_ARRAY(options) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &bindParams_param, &bindTypes_param); - if (!bindParams_param) { - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); + zephir_fetch_params(1, 1, 1, &name_param, &options_param); + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); } else { - zephir_get_arrval(&bindParams, bindParams_param); + ZEPHIR_INIT_VAR(&name); } - if (!bindTypes_param) { - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); + if (!options_param) { + ZEPHIR_INIT_VAR(&options); + array_init(&options); } else { - zephir_get_arrval(&bindTypes, bindTypes_param); + ZEPHIR_OBS_COPY_OR_DUP(&options, options_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueRow"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&uniqueRow, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("cacheOptions"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cacheOptions, &_0); - if (Z_TYPE_P(&cacheOptions) != IS_NULL) { - if (UNEXPECTED(Z_TYPE_P(&cacheOptions) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid caching options", "phalcon/Mvc/Model/Query.zep", 274); - return; - } - ZEPHIR_OBS_VAR(&key); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&key, &cacheOptions, SL("key"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A cache key must be provided to identify the cached resultset in the cache backend", "phalcon/Mvc/Model/Query.zep", 283); - return; - } - ZEPHIR_OBS_VAR(&lifetime); - if (!(zephir_array_isset_string_fetch(&lifetime, &cacheOptions, SL("lifetime"), 0))) { - ZEPHIR_INIT_NVAR(&lifetime); - ZVAL_LONG(&lifetime, 3600); - } - ZEPHIR_OBS_VAR(&cacheService); - if (!(zephir_array_isset_string_fetch(&cacheService, &cacheOptions, SL("service"), 0))) { - ZEPHIR_INIT_NVAR(&cacheService); - ZVAL_STRING(&cacheService, "modelsCache"); - } - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&cache, &_1$$3, "getshared", NULL, 0, &cacheService); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&_2$$3); - ZVAL_STRING(&_2$$3, "Phalcon\\Cache\\CacheInterface"); - ZEPHIR_CALL_FUNCTION(&_3$$3, "is_a", NULL, 83, &cache, &_2$$3); - zephir_check_call_status(); - if (UNEXPECTED(!ZEPHIR_IS_TRUE_IDENTICAL(&_3$$3))) { - ZEPHIR_INIT_VAR(&_4$$8); - object_init_ex(&_4$$8, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_5$$8); - ZEPHIR_CONCAT_SS(&_5$$8, "Cache service must be an object implementing ", "Phalcon\\Cache\\CacheInterface"); - ZEPHIR_CALL_METHOD(NULL, &_4$$8, "__construct", NULL, 29, &_5$$8); - zephir_check_call_status(); - zephir_throw_exception_debug(&_4$$8, "phalcon/Mvc/Model/Query.zep", 303); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&result, &cache, "get", NULL, 0, &key); - zephir_check_call_status(); - if (!(ZEPHIR_IS_EMPTY(&result))) { - if (UNEXPECTED(Z_TYPE_P(&result) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Cache didn't return a valid resultset", "phalcon/Mvc/Model/Query.zep", 312); - return; - } - ZVAL_BOOL(&_6$$9, 0); - ZEPHIR_CALL_METHOD(NULL, &result, "setisfresh", NULL, 0, &_6$$9); - zephir_check_call_status(); - if (zephir_is_true(&uniqueRow)) { - ZEPHIR_CALL_METHOD(&preparedResult, &result, "getfirst", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&preparedResult, &result); - } - RETURN_CCTOR(&preparedResult); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("cache"), &cache); - } - ZEPHIR_CALL_METHOD(&intermediate, this_ptr, "parse", NULL, 0); + ZEPHIR_CALL_METHOD(&definition, this_ptr, "getservice", NULL, 0, &name); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&defaultBindParams); - zephir_read_property(&defaultBindParams, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&mergedParams); - zephir_add_function(&mergedParams, &defaultBindParams, &bindParams); - ZEPHIR_OBS_VAR(&defaultBindTypes); - zephir_read_property(&defaultBindTypes, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC); - if (Z_TYPE_P(&defaultBindTypes) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&mergedTypes); - zephir_add_function(&mergedTypes, &defaultBindTypes, &bindTypes); - } else { - ZEPHIR_CPY_WRT(&mergedTypes, &bindTypes); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("type"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&type, &_0); - do { - if (ZEPHIR_IS_LONG(&type, 309)) { - ZEPHIR_CALL_METHOD(&result, this_ptr, "executeselect", NULL, 444, &intermediate, &mergedParams, &mergedTypes); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 306)) { - ZEPHIR_CALL_METHOD(&result, this_ptr, "executeinsert", NULL, 445, &intermediate, &mergedParams, &mergedTypes); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 300)) { - ZEPHIR_CALL_METHOD(&result, this_ptr, "executeupdate", NULL, 446, &intermediate, &mergedParams, &mergedTypes); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 303)) { - ZEPHIR_CALL_METHOD(&result, this_ptr, "executedelete", NULL, 447, &intermediate, &mergedParams, &mergedTypes); - zephir_check_call_status(); - break; - } - ZEPHIR_INIT_VAR(&_7$$19); - object_init_ex(&_7$$19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_8$$19); - ZEPHIR_CONCAT_SV(&_8$$19, "Unknown statement ", &type); - ZEPHIR_CALL_METHOD(NULL, &_7$$19, "__construct", NULL, 29, &_8$$19); - zephir_check_call_status(); - zephir_throw_exception_debug(&_7$$19, "phalcon/Mvc/Model/Query.zep", 395); - ZEPHIR_MM_RESTORE(); - return; - } while(0); - - if (Z_TYPE_P(&cacheOptions) != IS_NULL) { - if (!ZEPHIR_IS_LONG(&type, 309)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Only PHQL statements that return resultsets can be cached", "phalcon/Mvc/Model/Query.zep", 408); - return; - } - ZEPHIR_CALL_METHOD(NULL, &cache, "set", NULL, 0, &key, &result, &lifetime); - zephir_check_call_status(); - } - if (zephir_is_true(&uniqueRow)) { - ZEPHIR_CALL_METHOD(&preparedResult, &result, "getfirst", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&preparedResult, &result); - } - RETURN_CCTOR(&preparedResult); + ZEPHIR_INIT_VAR(&_0); + zephir_create_array(&_0, 1, 0); + zephir_array_fast_append(&_0, &options); + ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(return_value, &definition, &_0); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getCache) +static PHP_METHOD(Phalcon_Db_Adapter_PdoFactory, getExceptionClass) { zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "cache"); + RETURN_STRING("Phalcon\\Db\\Exception"); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getCacheOptions) +static PHP_METHOD(Phalcon_Db_Adapter_PdoFactory, getServices) { zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "cacheOptions"); + zephir_create_array(return_value, 3, 0); + add_assoc_stringl_ex(return_value, SL("mysql"), SL("Phalcon\\Db\\Adapter\\Pdo\\Mysql")); + add_assoc_stringl_ex(return_value, SL("postgresql"), SL("Phalcon\\Db\\Adapter\\Pdo\\Postgresql")); + add_assoc_stringl_ex(return_value, SL("sqlite"), SL("Phalcon\\Db\\Adapter\\Pdo\\Sqlite")); + return; } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getBindParams) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "bindParams"); -} +#ifdef HAVE_CONFIG_H +#endif -static PHP_METHOD(Phalcon_Mvc_Model_Query, getBindTypes) -{ - zval *this_ptr = getThis(); - RETURN_MEMBER(getThis(), "bindTypes"); -} -static PHP_METHOD(Phalcon_Mvc_Model_Query, getDI) +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_Pdo_AbstractPdo) { - zval *this_ptr = getThis(); - - + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Adapter\\Pdo, AbstractPdo, phalcon, db_adapter_pdo_abstractpdo, phalcon_db_adapter_abstractadapter_ce, phalcon_db_adapter_pdo_abstractpdo_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); - RETURN_MEMBER(getThis(), "container"); + zend_declare_property_long(phalcon_db_adapter_pdo_abstractpdo_ce, SL("affectedRows"), 0, ZEND_ACC_PROTECTED); + zend_declare_property_null(phalcon_db_adapter_pdo_abstractpdo_ce, SL("pdo"), ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getIntermediate) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, __construct) { + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_0 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *descriptor_param = NULL; + zval descriptor; zval *this_ptr = getThis(); + ZVAL_UNDEF(&descriptor); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(descriptor) + ZEND_PARSE_PARAMETERS_END(); +#endif - RETURN_MEMBER(getThis(), "intermediate"); -} + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &descriptor_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); -static PHP_METHOD(Phalcon_Mvc_Model_Query, getSingleResult) + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "connect", NULL, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_abstractpdo_ce, getThis(), "__construct", &_0, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, affectedRows) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "affectedRows"); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, begin) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *bindParams_param = NULL, *bindTypes_param = NULL, _0, _1; - zval bindParams, bindTypes; + zend_long ZEPHIR_LAST_CALL_STATUS, transactionLevel = 0; + zval *nesting_param = NULL, eventsManager, savepointName, _0, _5, _6, _1$$3, _2$$4, _7$$6; + zend_bool nesting, _3, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&savepointName); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_7$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_BOOL(nesting) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &bindParams_param, &bindTypes_param); - if (!bindParams_param) { - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - } else { - zephir_get_arrval(&bindParams, bindParams_param); - } - if (!bindTypes_param) { - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); + zephir_fetch_params(1, 0, 1, &nesting_param); + if (!nesting_param) { + nesting = 1; } else { - zephir_get_arrval(&bindTypes, bindTypes_param); + nesting = zephir_get_boolval(nesting_param); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("uniqueRow"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_0)) { - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &bindParams, &bindTypes); + RETURN_ON_FAILURE(zephir_property_incr(this_ptr, SL("transactionLevel"))); + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("transactionLevel"), PH_NOISY_CC); + transactionLevel = zephir_get_intval(&_0); + if (transactionLevel == 1) { + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_1$$3); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_2$$4); + ZVAL_STRING(&_2$$4, "db:beginTransaction"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_2$$4, this_ptr); + zephir_check_call_status(); + } + zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_1$$3, "begintransaction", NULL, 0); zephir_check_call_status(); RETURN_MM(); } - ZEPHIR_CALL_METHOD(&_1, this_ptr, "execute", NULL, 0, &bindParams, &bindTypes); + _3 = !transactionLevel; + if (!(_3)) { + _3 = !nesting; + } + _4 = _3; + if (!(_4)) { + ZEPHIR_CALL_METHOD(&_5, this_ptr, "isnestedtransactionswithsavepoints", NULL, 0); + zephir_check_call_status(); + _4 = !zephir_is_true(&_5); + } + if (_4) { + RETURN_MM_BOOL(0); + } + zephir_read_property(&_6, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_6); + ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL, 0); zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&_1, "getfirst", NULL, 0); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_7$$6); + ZVAL_STRING(&_7$$6, "db:createSavepoint"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_7$$6, this_ptr, &savepointName); + zephir_check_call_status(); + } + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "createsavepoint", NULL, 0, &savepointName); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getSql) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, commit) { - zval intermediate, _0, _1$$3, _2$$3, _3$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; + zend_long ZEPHIR_LAST_CALL_STATUS, transactionLevel = 0; + zval *nesting_param = NULL, eventsManager, savepointName, _0, _5, _6, _1$$4, _2$$5, _7$$8; + zend_bool nesting, _3, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&intermediate); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&savepointName); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_3$$3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&_7$$8); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_BOOL(nesting) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &nesting_param); + if (!nesting_param) { + nesting = 1; + } else { + nesting = zephir_get_boolval(nesting_param); + } - ZEPHIR_CALL_METHOD(&intermediate, this_ptr, "parse", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("type"), PH_NOISY_CC | PH_READONLY); - if (ZEPHIR_IS_LONG(&_0, 309)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); - zephir_read_property(&_2$$3, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); - ZVAL_BOOL(&_3$$3, 1); - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "executeselect", NULL, 444, &intermediate, &_1$$3, &_2$$3, &_3$$3); + + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("transactionLevel"), PH_NOISY_CC); + transactionLevel = zephir_get_intval(&_0); + if (UNEXPECTED(!transactionLevel)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "There is no active transaction", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 154); + return; + } + if (transactionLevel == 1) { + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_1$$4); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_2$$5); + ZVAL_STRING(&_2$$5, "db:commitTransaction"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_2$$5, this_ptr); + zephir_check_call_status(); + } + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_1$$4, "commit", NULL, 0); zephir_check_call_status(); RETURN_MM(); } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "This type of statement generates multiple SQL statements", "phalcon/Mvc/Model/Query.zep", 514); - return; + _3 = !transactionLevel; + if (!(_3)) { + _3 = !nesting; + } + _4 = _3; + if (!(_4)) { + ZEPHIR_CALL_METHOD(&_5, this_ptr, "isnestedtransactionswithsavepoints", NULL, 0); + zephir_check_call_status(); + _4 = !zephir_is_true(&_5); + } + if (_4) { + if (transactionLevel > 0) { + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); + } + RETURN_MM_BOOL(0); + } + zephir_read_property(&_6, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_6); + ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_7$$8); + ZVAL_STRING(&_7$$8, "db:releaseSavepoint"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_7$$8, this_ptr, &savepointName); + zephir_check_call_status(); + } + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "releasesavepoint", NULL, 0, &savepointName); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getType) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, close) { + zval __$null; zval *this_ptr = getThis(); - - - RETURN_MEMBER(getThis(), "type"); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, getUniqueRow) -{ - zval *this_ptr = getThis(); + ZVAL_NULL(&__$null); - RETURN_MEMBER(getThis(), "uniqueRow"); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdo"), &__$null); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, parse) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, connect) { - zval intermediate, phql, ast, irPhql, uniqueId, type, _0, _2$$5, _3$$7, _4$$13, _5$$13; + zend_string *_9; + zend_ulong _8; + zend_bool _1; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zephir_fcall_cache_entry *_1 = NULL; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&phql); - ZVAL_UNDEF(&ast); - ZVAL_UNDEF(&irPhql); - ZVAL_UNDEF(&uniqueId); - ZVAL_UNDEF(&type); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_3$$7); - ZVAL_UNDEF(&_4$$13); - ZVAL_UNDEF(&_5$$13); - - - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("intermediate"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&intermediate, &_0); - if (Z_TYPE_P(&intermediate) == IS_ARRAY) { - RETURN_CCTOR(&intermediate); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&phql, &_0); - ZEPHIR_CALL_CE_STATIC(&ast, phalcon_mvc_model_query_lang_ce, "parsephql", &_1, 0, &phql); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&irPhql); - ZVAL_NULL(&irPhql); - ZEPHIR_INIT_VAR(&uniqueId); - ZVAL_NULL(&uniqueId); - if (Z_TYPE_P(&ast) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&uniqueId); - if (zephir_array_isset_string_fetch(&uniqueId, &ast, SL("id"), 0)) { - ZEPHIR_OBS_NVAR(&irPhql); - zephir_read_static_property_ce(&_2$$5, phalcon_mvc_model_query_ce, SL("internalPhqlCache"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset_fetch(&irPhql, &_2$$5, &uniqueId, 0)) { - if (Z_TYPE_P(&irPhql) == IS_ARRAY) { - zephir_array_fetch_string(&_3$$7, &ast, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 567); - zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &_3$$7); - RETURN_CCTOR(&irPhql); - } - } - } - ZEPHIR_OBS_VAR(&type); - if (zephir_array_isset_string_fetch(&type, &ast, SL("type"), 0)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("ast"), &ast); - zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &type); - do { - if (ZEPHIR_IS_LONG(&type, 309)) { - ZEPHIR_CALL_METHOD(&irPhql, this_ptr, "_prepareselect", NULL, 448); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 306)) { - ZEPHIR_CALL_METHOD(&irPhql, this_ptr, "_prepareinsert", NULL, 449); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 300)) { - ZEPHIR_CALL_METHOD(&irPhql, this_ptr, "_prepareupdate", NULL, 450); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&type, 303)) { - ZEPHIR_CALL_METHOD(&irPhql, this_ptr, "_preparedelete", NULL, 451); - zephir_check_call_status(); - break; - } - ZEPHIR_INIT_VAR(&_4$$13); - object_init_ex(&_4$$13, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_5$$13); - ZEPHIR_CONCAT_SVSV(&_5$$13, "Unknown statement ", &type, ", when preparing: ", &phql); - ZEPHIR_CALL_METHOD(NULL, &_4$$13, "__construct", NULL, 29, &_5$$13); - zephir_check_call_status(); - zephir_throw_exception_debug(&_4$$13, "phalcon/Mvc/Model/Query.zep", 601); - ZEPHIR_MM_RESTORE(); - return; - } while(0); - - } - } - if (UNEXPECTED(Z_TYPE_P(&irPhql) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted AST", "phalcon/Mvc/Model/Query.zep", 607); - return; - } - if (Z_TYPE_P(&uniqueId) == IS_LONG) { - zephir_update_static_property_array_multi_ce(phalcon_mvc_model_query_ce, SL("internalPhqlCache"), &irPhql, SL("z"), 1, &uniqueId); - } - zephir_update_property_zval(this_ptr, ZEND_STRL("intermediate"), &irPhql); - RETURN_CCTOR(&irPhql); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, setBindParams) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool merge; - zval *bindParams_param = NULL, *merge_param = NULL, currentBindParams, _0$$3; - zval bindParams; + zval *descriptor_param = NULL, username, password, dsnAttributes, dsnAttributesCustomRaw, dsnAttributesMap, key, options, persistent, value, _2, _4, _5, *_6, _7, _12, _13, _14, _0$$3, _3$$9, _10$$11, _11$$12; + zval descriptor, dsnParts; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(¤tBindParams); + ZVAL_UNDEF(&descriptor); + ZVAL_UNDEF(&dsnParts); + ZVAL_UNDEF(&username); + ZVAL_UNDEF(&password); + ZVAL_UNDEF(&dsnAttributes); + ZVAL_UNDEF(&dsnAttributesCustomRaw); + ZVAL_UNDEF(&dsnAttributesMap); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&options); + ZVAL_UNDEF(&persistent); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_7); + ZVAL_UNDEF(&_12); + ZVAL_UNDEF(&_13); + ZVAL_UNDEF(&_14); ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_3$$9); + ZVAL_UNDEF(&_10$$11); + ZVAL_UNDEF(&_11$$12); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(bindParams) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(merge) + Z_PARAM_ARRAY(descriptor) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &bindParams_param, &merge_param); - ZEPHIR_OBS_COPY_OR_DUP(&bindParams, bindParams_param); - if (!merge_param) { - merge = 0; + zephir_fetch_params(1, 0, 1, &descriptor_param); + if (!descriptor_param) { + ZEPHIR_INIT_VAR(&descriptor); + array_init(&descriptor); } else { - merge = zephir_get_boolval(merge_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); } - if (merge) { - zephir_read_property(¤tBindParams, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_0$$3); - zephir_add_function(&_0$$3, ¤tBindParams, &bindParams); - zephir_update_property_zval(this_ptr, ZEND_STRL("bindParams"), &_0$$3); + ZEPHIR_INIT_VAR(&dsnParts); + array_init(&dsnParts); + if (ZEPHIR_IS_EMPTY(&descriptor)) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("descriptor"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&descriptor, &_0$$3); + } + ZEPHIR_OBS_VAR(&username); + if (zephir_array_isset_string_fetch(&username, &descriptor, SL("username"), 0)) { + zephir_array_unset_string(&descriptor, SL("username"), PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&password); + if (zephir_array_isset_string_fetch(&password, &descriptor, SL("password"), 0)) { + zephir_array_unset_string(&descriptor, SL("password"), PH_SEPARATE); + } + if (zephir_array_isset_string(&descriptor, SL("dialectClass"))) { + zephir_array_unset_string(&descriptor, SL("dialectClass"), PH_SEPARATE); + } + _1 = zephir_array_isset_string(&descriptor, SL("options")); + if (_1) { + zephir_array_fetch_string(&_2, &descriptor, SL("options"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 268); + _1 = Z_TYPE_P(&_2) == IS_ARRAY; + } + if (_1) { + ZEPHIR_OBS_VAR(&options); + zephir_array_fetch_string(&options, &descriptor, SL("options"), PH_NOISY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 269); + zephir_array_unset_string(&descriptor, SL("options"), PH_SEPARATE); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("bindParams"), &bindParams); + ZEPHIR_INIT_NVAR(&options); + array_init(&options); } - RETURN_THIS(); + ZEPHIR_OBS_VAR(&persistent); + if (zephir_array_isset_string_fetch(&persistent, &descriptor, SL("persistent"), 0)) { + ZEPHIR_INIT_VAR(&_3$$9); + ZVAL_BOOL(&_3$$9, zephir_get_boolval(&persistent)); + zephir_array_update_long(&options, 12, &_3$$9, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + } + ZEPHIR_INIT_VAR(&_4); + ZVAL_LONG(&_4, 2); + zephir_array_update_long(&options, 3, &_4, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + ZEPHIR_OBS_VAR(&dsnAttributesCustomRaw); + if (zephir_array_isset_string_fetch(&dsnAttributesCustomRaw, &descriptor, SL("dsn"), 0)) { + zephir_array_append(&dsnParts, &dsnAttributesCustomRaw, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 285); + zephir_array_unset_string(&descriptor, SL("dsn"), PH_SEPARATE); + } + ZEPHIR_CALL_METHOD(&_5, this_ptr, "getdsndefaults", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&dsnAttributesMap); + zephir_fast_array_merge(&dsnAttributesMap, &_5, &descriptor); + zephir_is_iterable(&dsnAttributesMap, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 305); + if (Z_TYPE_P(&dsnAttributesMap) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&dsnAttributesMap), _8, _9, _6) + { + ZEPHIR_INIT_NVAR(&key); + if (_9 != NULL) { + ZVAL_STR_COPY(&key, _9); + } else { + ZVAL_LONG(&key, _8); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _6); + ZEPHIR_INIT_NVAR(&_10$$11); + ZEPHIR_CONCAT_VSV(&_10$$11, &key, "=", &value); + zephir_array_append(&dsnParts, &_10$$11, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 301); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &dsnAttributesMap, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_7, &dsnAttributesMap, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_7)) { + break; + } + ZEPHIR_CALL_METHOD(&key, &dsnAttributesMap, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&value, &dsnAttributesMap, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_11$$12); + ZEPHIR_CONCAT_VSV(&_11$$12, &key, "=", &value); + zephir_array_append(&dsnParts, &_11$$12, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 301); + ZEPHIR_CALL_METHOD(NULL, &dsnAttributesMap, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + ZEPHIR_INIT_VAR(&dsnAttributes); + zephir_fast_join_str(&dsnAttributes, SL(";"), &dsnParts); + ZEPHIR_INIT_VAR(&_12); + object_init_ex(&_12, php_pdo_get_dbh_ce()); + zephir_read_property(&_13, this_ptr, ZEND_STRL("type"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_INIT_VAR(&_14); + ZEPHIR_CONCAT_VSV(&_14, &_13, ":", &dsnAttributes); + ZEPHIR_CALL_METHOD(NULL, &_12, "__construct", NULL, 0, &_14, &username, &password, &options); + zephir_check_call_status(); + zephir_update_property_zval(this_ptr, ZEND_STRL("pdo"), &_12); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, setBindTypes) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, convertBoundParams) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_bool merge; - zval *bindTypes_param = NULL, *merge_param = NULL, currentBindTypes, _0$$4; - zval bindTypes; + zend_long ZEPHIR_LAST_CALL_STATUS, setOrder = 0; + zval params; + zval *sql_param = NULL, *params_param = NULL, boundSql, placeHolders, bindPattern, matches, placeMatch, value, _0, _1, _2, *_3$$3, _4$$3, _9$$3, _5$$4, _6$$5, _7$$8, _8$$9; + zval sql; zval *this_ptr = getThis(); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(¤tBindTypes); - ZVAL_UNDEF(&_0$$4); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&boundSql); + ZVAL_UNDEF(&placeHolders); + ZVAL_UNDEF(&bindPattern); + ZVAL_UNDEF(&matches); + ZVAL_UNDEF(&placeMatch); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$8); + ZVAL_UNDEF(&_8$$9); + ZVAL_UNDEF(¶ms); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_STR(sql) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(merge) + Z_PARAM_ARRAY(params) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &bindTypes_param, &merge_param); - ZEPHIR_OBS_COPY_OR_DUP(&bindTypes, bindTypes_param); - if (!merge_param) { - merge = 0; + zephir_fetch_params(1, 1, 1, &sql_param, ¶ms_param); + if (UNEXPECTED(Z_TYPE_P(sql_param) != IS_STRING && Z_TYPE_P(sql_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sql' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sql_param) == IS_STRING)) { + zephir_get_strval(&sql, sql_param); } else { - merge = zephir_get_boolval(merge_param); + ZEPHIR_INIT_VAR(&sql); + } + if (!params_param) { + ZEPHIR_INIT_VAR(¶ms); + array_init(¶ms); + } else { + zephir_get_arrval(¶ms, params_param); } - if (UNEXPECTED(merge)) { - zephir_read_property(¤tBindTypes, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(¤tBindTypes) == IS_ARRAY) { - ZEPHIR_INIT_VAR(&_0$$4); - zephir_add_function(&_0$$4, ¤tBindTypes, &bindTypes); - zephir_update_property_zval(this_ptr, ZEND_STRL("bindTypes"), &_0$$4); + ZEPHIR_INIT_VAR(&placeHolders); + array_init(&placeHolders); + ZEPHIR_INIT_VAR(&bindPattern); + ZVAL_STRING(&bindPattern, "/\\?([0-9]+)|:([a-zA-Z0-9_]+):/"); + ZEPHIR_INIT_VAR(&matches); + ZVAL_NULL(&matches); + setOrder = 2; + ZVAL_LONG(&_0, setOrder); + ZEPHIR_INIT_VAR(&_1); + ZVAL_LONG(&_2, setOrder); + zephir_preg_match(&_1, &bindPattern, &sql, &matches, 1, zephir_get_intval(&_0) , 0 ); + if (zephir_is_true(&_1)) { + zephir_is_iterable(&matches, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 359); + if (Z_TYPE_P(&matches) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&matches), _3$$3) + { + ZEPHIR_INIT_NVAR(&placeMatch); + ZVAL_COPY(&placeMatch, _3$$3); + ZEPHIR_OBS_NVAR(&value); + zephir_array_fetch_long(&_5$$4, &placeMatch, 1, PH_READONLY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 342); + if (!(zephir_array_isset_fetch(&value, ¶ms, &_5$$4, 0))) { + if (UNEXPECTED(!(zephir_array_isset_long(&placeMatch, 2)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Matched parameter was not found in parameters list", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 346); + return; + } + ZEPHIR_OBS_NVAR(&value); + zephir_array_fetch_long(&_6$$5, &placeMatch, 2, PH_READONLY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 349); + if (UNEXPECTED(!(zephir_array_isset_fetch(&value, ¶ms, &_6$$5, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Matched parameter was not found in parameters list", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 352); + return; + } + } + zephir_array_append(&placeHolders, &value, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 356); + } ZEND_HASH_FOREACH_END(); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("bindTypes"), &bindTypes); + ZEPHIR_CALL_METHOD(NULL, &matches, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_4$$3, &matches, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_4$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&placeMatch, &matches, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&value); + zephir_array_fetch_long(&_7$$8, &placeMatch, 1, PH_READONLY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 342); + if (!(zephir_array_isset_fetch(&value, ¶ms, &_7$$8, 0))) { + if (UNEXPECTED(!(zephir_array_isset_long(&placeMatch, 2)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Matched parameter was not found in parameters list", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 346); + return; + } + ZEPHIR_OBS_NVAR(&value); + zephir_array_fetch_long(&_8$$9, &placeMatch, 2, PH_READONLY, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 349); + if (UNEXPECTED(!(zephir_array_isset_fetch(&value, ¶ms, &_8$$9, 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Matched parameter was not found in parameters list", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 352); + return; + } + } + zephir_array_append(&placeHolders, &value, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 356); + ZEPHIR_CALL_METHOD(NULL, &matches, "next", NULL, 0); + zephir_check_call_status(); + } } + ZEPHIR_INIT_NVAR(&placeMatch); + ZEPHIR_INIT_VAR(&_9$$3); + ZVAL_STRING(&_9$$3, "?"); + ZEPHIR_CALL_FUNCTION(&boundSql, "preg_replace", NULL, 37, &bindPattern, &_9$$3, &sql); + zephir_check_call_status(); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("bindTypes"), &bindTypes); + ZEPHIR_CPY_WRT(&boundSql, &sql); } - RETURN_THIS(); + zephir_create_array(return_value, 2, 0); + zephir_array_update_string(return_value, SL("sql"), &boundSql, PH_COPY | PH_SEPARATE); + zephir_array_update_string(return_value, SL("params"), &placeHolders, PH_COPY | PH_SEPARATE); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, setDI) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, escapeString) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *container, container_sub, manager, metaData, _0; + zval *str_param = NULL, _0; + zval str; zval *this_ptr = getThis(); - ZVAL_UNDEF(&container_sub); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&metaData); + ZVAL_UNDEF(&str); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(container, phalcon_di_diinterface_ce) + Z_PARAM_STR(str) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &container); + zephir_fetch_params(1, 1, 0, &str_param); + zephir_get_strval(&str, str_param); - ZEPHIR_INIT_VAR(&_0); - ZVAL_STRING(&_0, "modelsManager"); - ZEPHIR_CALL_METHOD(&manager, container, "getshared", NULL, 0, &_0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&manager) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Injected service 'modelsManager' is invalid", "phalcon/Mvc/Model/Query.zep", 671); - return; - } - ZEPHIR_INIT_NVAR(&_0); - ZVAL_STRING(&_0, "modelsMetadata"); - ZEPHIR_CALL_METHOD(&metaData, container, "getshared", NULL, 0, &_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "quote", NULL, 0, &str); zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&metaData) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Injected service 'modelsMetaData' is invalid", "phalcon/Mvc/Model/Query.zep", 677); - return; - } - zephir_update_property_zval(this_ptr, ZEND_STRL("manager"), &manager); - zephir_update_property_zval(this_ptr, ZEND_STRL("metaData"), &metaData); - zephir_update_property_zval(this_ptr, ZEND_STRL("container"), container); - ZEPHIR_MM_RESTORE(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, setIntermediate) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, execute) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval *intermediate_param = NULL; - zval intermediate; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&intermediate); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(intermediate) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &intermediate_param); - ZEPHIR_OBS_COPY_OR_DUP(&intermediate, intermediate_param); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("intermediate"), &intermediate); - RETURN_THIS(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, setSharedLock) -{ - zval *sharedLock_param = NULL, __$true, __$false; - zend_bool sharedLock; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval bindParams, bindTypes; + zval *sqlStatement_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, eventsManager, affectedRows, newStatement, statement, _0, _1$$3, _2$$3, _3$$5, _4$$7, _5$$9; + zval sqlStatement; zval *this_ptr = getThis(); - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&sqlStatement); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&affectedRows); + ZVAL_UNDEF(&newStatement); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_4$$7); + ZVAL_UNDEF(&_5$$9); + ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&bindTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 1) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(sqlStatement) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(sharedLock) + Z_PARAM_ARRAY(bindParams) + Z_PARAM_ARRAY(bindTypes) ZEND_PARSE_PARAMETERS_END(); #endif - zephir_fetch_params_without_memory_grow(0, 1, &sharedLock_param); - if (!sharedLock_param) { - sharedLock = 0; + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 2, &sqlStatement_param, &bindParams_param, &bindTypes_param); + if (UNEXPECTED(Z_TYPE_P(sqlStatement_param) != IS_STRING && Z_TYPE_P(sqlStatement_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlStatement' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlStatement_param) == IS_STRING)) { + zephir_get_strval(&sqlStatement, sqlStatement_param); } else { - sharedLock = zephir_get_boolval(sharedLock_param); + ZEPHIR_INIT_VAR(&sqlStatement); } - - - if (sharedLock) { - zephir_update_property_zval(this_ptr, ZEND_STRL("sharedLock"), &__$true); + if (!bindParams_param) { + ZEPHIR_INIT_VAR(&bindParams); + array_init(&bindParams); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("sharedLock"), &__$false); + ZEPHIR_OBS_COPY_OR_DUP(&bindParams, bindParams_param); } - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, setTransaction) -{ - zval *transaction, transaction_sub; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&transaction_sub); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_OBJECT_OF_CLASS(transaction, phalcon_mvc_model_transactioninterface_ce) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &transaction); - - - zephir_update_property_zval(this_ptr, ZEND_STRL("transaction"), transaction); - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, setType) -{ - zval *type_param = NULL, _0; - zend_long type; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&_0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_LONG(type) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &type_param); - type = zephir_get_intval(type_param); - - - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, type); - zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &_0); - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, setUniqueRow) -{ - zval *uniqueRow_param = NULL, __$true, __$false; - zend_bool uniqueRow; - zval *this_ptr = getThis(); - - ZVAL_BOOL(&__$true, 1); - ZVAL_BOOL(&__$false, 0); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_BOOL(uniqueRow) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - zephir_fetch_params_without_memory_grow(1, 0, &uniqueRow_param); - uniqueRow = zephir_get_boolval(uniqueRow_param); - - - if (uniqueRow) { - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueRow"), &__$true); + if (!bindTypes_param) { + ZEPHIR_INIT_VAR(&bindTypes); + array_init(&bindTypes); } else { - zephir_update_property_zval(this_ptr, ZEND_STRL("uniqueRow"), &__$false); + ZEPHIR_OBS_COPY_OR_DUP(&bindTypes, bindTypes_param); } - RETURN_THISW(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, executeDelete) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL, *_6 = NULL, *_8 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, models, modelName, model, records, connection, record, _0, _3, _9, _1$$4, _2$$5, _5$$6, _7$$7; - zval intermediate, bindParams, bindTypes; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&records); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&record); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_9); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_7$$7); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_ARRAY(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) - ZEND_PARSE_PARAMETERS_END(); -#endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &intermediate_param, &bindParams_param, &bindTypes_param); - zephir_get_arrval(&intermediate, intermediate_param); - zephir_get_arrval(&bindParams, bindParams_param); - zephir_get_arrval(&bindTypes, bindTypes_param); - - - ZEPHIR_OBS_VAR(&models); - zephir_array_fetch_string(&models, &intermediate, SL("models"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 745); - if (UNEXPECTED(zephir_array_isset_long(&models, 1))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Delete from several models at the same time is still not supported", "phalcon/Mvc/Model/Query.zep", 750); - return; - } - ZEPHIR_OBS_VAR(&modelName); - zephir_array_fetch_long(&modelName, &models, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 753); - ZEPHIR_OBS_VAR(&model); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&model, &_0, &modelName, 0))) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&model, &_1$$4, "load", NULL, 0, &modelName); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&records, this_ptr, "getrelatedrecords", NULL, 452, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - if (!(zephir_fast_count_int(&records))) { - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_2$$5, 1); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_2$$5); + zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_0); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlStatement"), &sqlStatement); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlVariables"), &bindParams); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlBindTypes"), &bindTypes); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "db:beforeQuery"); + ZEPHIR_CALL_METHOD(&_1$$3, &eventsManager, "fire", NULL, 0, &_2$$3, this_ptr); zephir_check_call_status(); - RETURN_MM(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$3)) { + RETURN_MM_BOOL(0); + } } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getwriteconnection", NULL, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &connection, "begin", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &records, "rewind", NULL, 0); + ZEPHIR_INIT_VAR(&affectedRows); + ZVAL_LONG(&affectedRows, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "preparerealsql", NULL, 0, &sqlStatement, &bindParams); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &records, "valid", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_3))) { - break; - } - ZEPHIR_CALL_METHOD(&record, &records, "current", &_4, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_5$$6, &record, "delete", NULL, 0); + if (!(ZEPHIR_IS_EMPTY(&bindParams))) { + zephir_read_property(&_3$$5, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&statement, &_3$$5, "prepare", NULL, 0, &sqlStatement); zephir_check_call_status(); - if (!(zephir_is_true(&_5$$6))) { - ZEPHIR_CALL_METHOD(NULL, &connection, "rollback", &_6, 0); + if (Z_TYPE_P(&statement) == IS_OBJECT) { + ZEPHIR_CALL_METHOD(&newStatement, this_ptr, "executeprepared", NULL, 0, &statement, &bindParams, &bindTypes); zephir_check_call_status(); - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_7$$7, 0); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_7$$7, &record); + ZEPHIR_CALL_METHOD(&affectedRows, &newStatement, "rowcount", NULL, 0); zephir_check_call_status(); - RETURN_MM(); } - ZEPHIR_CALL_METHOD(NULL, &records, "next", &_8, 0); + } else { + zephir_read_property(&_4$$7, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&affectedRows, &_4$$7, "exec", NULL, 0, &sqlStatement); zephir_check_call_status(); } - ZEPHIR_CALL_METHOD(NULL, &connection, "commit", NULL, 0); - zephir_check_call_status(); - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_9, 1); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_9); - zephir_check_call_status(); - RETURN_MM(); + if (Z_TYPE_P(&affectedRows) == IS_LONG) { + zephir_update_property_zval(this_ptr, ZEND_STRL("affectedRows"), &affectedRows); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_5$$9); + ZVAL_STRING(&_5$$9, "db:afterQuery"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_5$$9, this_ptr); + zephir_check_call_status(); + } + } + RETURN_MM_BOOL(1); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, executeInsert) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, executePrepared) { - zend_string *_5; - zend_ulong _4; - zend_bool automaticFields = 0, _18$$8, _31$$17; + zval _5$$8, _8$$13, _25$$39, _27$$44; + zend_bool _4$$3, _24$$34; + zend_string *_3, *_13$$22, *_21$$31, *_31$$53, *_39$$62; + zend_ulong _2, _12$$22, _20$$31, _30$$53, _38$$62; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_7 = NULL, *_9 = NULL, *_14 = NULL, *_16 = NULL, *_17 = NULL, *_22 = NULL, *_24 = NULL, *_30 = NULL; + zephir_fcall_cache_entry *_7 = NULL, *_9 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, modelName, manager, connection, metaData, attributes, fields, columnMap, dialect, insertValues, number, value, model, values, exprValue, insertValue, wildcard, fieldName, attributeName, insertModel, _0, _1, *_2, _3, _34, _6$$8, _8$$11, _10$$11, _11$$11, _12$$12, _13$$12, _15$$13, _19$$15, _20$$15, _21$$17, _23$$20, _25$$20, _26$$20, _27$$21, _28$$21, _29$$22, _32$$24, _33$$24; - zval intermediate, bindParams, bindTypes; + zval placeholders; + zval *statement, statement_sub, *placeholders_param = NULL, *dataTypes, dataTypes_sub, wildcard, value, type, castValue, parameter, position, itemValue, *_0, _1, _6$$12, *_10$$22, _11$$22, _14$$24, _15$$25, _16$$27, _17$$28, *_18$$31, _19$$31, _22$$32, _23$$33, _26$$43, *_28$$53, _29$$53, _32$$55, _33$$56, _34$$58, _35$$59, *_36$$62, _37$$62, _40$$63, _41$$64; zval *this_ptr = getThis(); - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&dialect); - ZVAL_UNDEF(&insertValues); - ZVAL_UNDEF(&number); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&exprValue); - ZVAL_UNDEF(&insertValue); + ZVAL_UNDEF(&statement_sub); + ZVAL_UNDEF(&dataTypes_sub); ZVAL_UNDEF(&wildcard); - ZVAL_UNDEF(&fieldName); - ZVAL_UNDEF(&attributeName); - ZVAL_UNDEF(&insertModel); - ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&type); + ZVAL_UNDEF(&castValue); + ZVAL_UNDEF(¶meter); + ZVAL_UNDEF(&position); + ZVAL_UNDEF(&itemValue); ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_34); - ZVAL_UNDEF(&_6$$8); - ZVAL_UNDEF(&_8$$11); - ZVAL_UNDEF(&_10$$11); - ZVAL_UNDEF(&_11$$11); - ZVAL_UNDEF(&_12$$12); - ZVAL_UNDEF(&_13$$12); - ZVAL_UNDEF(&_15$$13); - ZVAL_UNDEF(&_19$$15); - ZVAL_UNDEF(&_20$$15); - ZVAL_UNDEF(&_21$$17); - ZVAL_UNDEF(&_23$$20); - ZVAL_UNDEF(&_25$$20); - ZVAL_UNDEF(&_26$$20); - ZVAL_UNDEF(&_27$$21); - ZVAL_UNDEF(&_28$$21); - ZVAL_UNDEF(&_29$$22); - ZVAL_UNDEF(&_32$$24); - ZVAL_UNDEF(&_33$$24); + ZVAL_UNDEF(&_6$$12); + ZVAL_UNDEF(&_11$$22); + ZVAL_UNDEF(&_14$$24); + ZVAL_UNDEF(&_15$$25); + ZVAL_UNDEF(&_16$$27); + ZVAL_UNDEF(&_17$$28); + ZVAL_UNDEF(&_19$$31); + ZVAL_UNDEF(&_22$$32); + ZVAL_UNDEF(&_23$$33); + ZVAL_UNDEF(&_26$$43); + ZVAL_UNDEF(&_29$$53); + ZVAL_UNDEF(&_32$$55); + ZVAL_UNDEF(&_33$$56); + ZVAL_UNDEF(&_34$$58); + ZVAL_UNDEF(&_35$$59); + ZVAL_UNDEF(&_37$$62); + ZVAL_UNDEF(&_40$$63); + ZVAL_UNDEF(&_41$$64); + ZVAL_UNDEF(&placeholders); + ZVAL_UNDEF(&_5$$8); + ZVAL_UNDEF(&_8$$13); + ZVAL_UNDEF(&_25$$39); + ZVAL_UNDEF(&_27$$44); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_ARRAY(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_OBJECT_OF_CLASS(statement, zephir_get_internal_ce(SL("pdostatement"))) + Z_PARAM_ARRAY(placeholders) + Z_PARAM_ZVAL(dataTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &intermediate_param, &bindParams_param, &bindTypes_param); - zephir_get_arrval(&intermediate, intermediate_param); - zephir_get_arrval(&bindParams, bindParams_param); - zephir_get_arrval(&bindTypes, bindTypes_param); + zephir_fetch_params(1, 3, 0, &statement, &placeholders_param, &dataTypes); + ZEPHIR_OBS_COPY_OR_DUP(&placeholders, placeholders_param); - ZEPHIR_OBS_VAR(&modelName); - zephir_array_fetch_string(&modelName, &intermediate, SL("model"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 834); - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_OBS_VAR(&model); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&model, &_0, &modelName, 0))) { - ZEPHIR_CALL_METHOD(&model, &manager, "load", NULL, 0, &modelName); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getwriteconnection", NULL, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - zephir_read_property(&_1, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_1); - ZEPHIR_CALL_METHOD(&attributes, &metaData, "getattributes", NULL, 0, &model); - zephir_check_call_status(); - automaticFields = 0; - ZEPHIR_OBS_VAR(&fields); - if (!(zephir_array_isset_string_fetch(&fields, &intermediate, SL("fields"), 0))) { - automaticFields = 1; - ZEPHIR_CPY_WRT(&fields, &attributes); - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, &model); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - } - ZEPHIR_OBS_VAR(&values); - zephir_array_fetch_string(&values, &intermediate, SL("values"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 869); - if (UNEXPECTED(zephir_fast_count_int(&fields) != zephir_fast_count_int(&values))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The column count does not match the values count", "phalcon/Mvc/Model/Query.zep", 878); - return; - } - ZEPHIR_CALL_METHOD(&dialect, &connection, "getdialect", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_VAR(&insertValues); - array_init(&insertValues); - zephir_is_iterable(&values, 0, "phalcon/Mvc/Model/Query.zep", 949); - if (Z_TYPE_P(&values) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&values), _4, _5, _2) + zephir_is_iterable(&placeholders, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 570); + if (Z_TYPE_P(&placeholders) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&placeholders), _2, _3, _0) { - ZEPHIR_INIT_NVAR(&number); - if (_5 != NULL) { - ZVAL_STR_COPY(&number, _5); + ZEPHIR_INIT_NVAR(&wildcard); + if (_3 != NULL) { + ZVAL_STR_COPY(&wildcard, _3); } else { - ZVAL_LONG(&number, _4); + ZVAL_LONG(&wildcard, _2); } ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _2); - ZEPHIR_OBS_NVAR(&exprValue); - zephir_array_fetch_string(&exprValue, &value, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 888); - zephir_array_fetch_string(&_6$$8, &value, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 890); - do { - if (ZEPHIR_IS_LONG(&_6$$8, 260) || ZEPHIR_IS_LONG(&_6$$8, 258) || ZEPHIR_IS_LONG(&_6$$8, 259)) { - ZEPHIR_CALL_METHOD(&insertValue, &dialect, "getsqlexpression", &_7, 0, &exprValue); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_6$$8, 322)) { - ZEPHIR_INIT_NVAR(&insertValue); - ZVAL_NULL(&insertValue); - break; - } - if (ZEPHIR_IS_LONG(&_6$$8, 273) || ZEPHIR_IS_LONG(&_6$$8, 274) || ZEPHIR_IS_LONG(&_6$$8, 277)) { - ZEPHIR_CALL_METHOD(&_8$$11, &dialect, "getsqlexpression", &_9, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_10$$11); - ZVAL_STRING(&_10$$11, ":"); - ZEPHIR_INIT_NVAR(&_11$$11); - ZVAL_STRING(&_11$$11, ""); - ZEPHIR_INIT_NVAR(&wildcard); - zephir_fast_str_replace(&wildcard, &_10$$11, &_11$$11, &_8$$11); - ZEPHIR_OBS_NVAR(&insertValue); - if (UNEXPECTED(!(zephir_array_isset_fetch(&insertValue, &bindParams, &wildcard, 0)))) { - ZEPHIR_INIT_NVAR(&_12$$12); - object_init_ex(&_12$$12, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_13$$12); - ZEPHIR_CONCAT_SVS(&_13$$12, "Bound parameter '", &wildcard, "' cannot be replaced because it isn't in the placeholders list"); - ZEPHIR_CALL_METHOD(NULL, &_12$$12, "__construct", &_14, 29, &_13$$12); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$12, "phalcon/Mvc/Model/Query.zep", 914); - ZEPHIR_MM_RESTORE(); - return; - } - break; - } - ZEPHIR_INIT_NVAR(&insertValue); - object_init_ex(&insertValue, phalcon_db_rawvalue_ce); - ZEPHIR_CALL_METHOD(&_15$$13, &dialect, "getsqlexpression", &_16, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &insertValue, "__construct", &_17, 32, &_15$$13); - zephir_check_call_status(); - break; - } while(0); - - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch(&fieldName, &fields, &number, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 927); - _18$$8 = automaticFields; - if (_18$$8) { - _18$$8 = Z_TYPE_P(&columnMap) == IS_ARRAY; - } - if (_18$$8) { - ZEPHIR_OBS_NVAR(&attributeName); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeName, &columnMap, &fieldName, 0)))) { - ZEPHIR_INIT_NVAR(&_19$$15); - object_init_ex(&_19$$15, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_20$$15); - ZEPHIR_CONCAT_SVS(&_20$$15, "Column '", &fieldName, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_19$$15, "__construct", &_14, 29, &_20$$15); - zephir_check_call_status(); - zephir_throw_exception_debug(&_19$$15, "phalcon/Mvc/Model/Query.zep", 937); - ZEPHIR_MM_RESTORE(); - return; - } + ZVAL_COPY(&value, _0); + if (Z_TYPE_P(&wildcard) == IS_LONG) { + ZEPHIR_INIT_NVAR(¶meter); + ZVAL_LONG(¶meter, (zephir_get_numberval(&wildcard) + 1)); + } else if (Z_TYPE_P(&wildcard) == IS_STRING) { + ZEPHIR_CPY_WRT(¶meter, &wildcard); } else { - ZEPHIR_CPY_WRT(&attributeName, &fieldName); + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid bind parameter (1)", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 490); + return; } - zephir_array_update_zval(&insertValues, &attributeName, &insertValue, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &values, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &values, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; + _4$$3 = Z_TYPE_P(dataTypes) == IS_ARRAY; + if (_4$$3) { + ZEPHIR_OBS_NVAR(&type); + _4$$3 = zephir_array_isset_fetch(&type, dataTypes, &wildcard, 0); } - ZEPHIR_CALL_METHOD(&number, &values, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &values, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&exprValue); - zephir_array_fetch_string(&exprValue, &value, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 888); - zephir_array_fetch_string(&_21$$17, &value, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 890); - do { - if (ZEPHIR_IS_LONG(&_21$$17, 260) || ZEPHIR_IS_LONG(&_21$$17, 258) || ZEPHIR_IS_LONG(&_21$$17, 259)) { - ZEPHIR_CALL_METHOD(&insertValue, &dialect, "getsqlexpression", &_22, 0, &exprValue); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_21$$17, 322)) { - ZEPHIR_INIT_NVAR(&insertValue); - ZVAL_NULL(&insertValue); - break; - } - if (ZEPHIR_IS_LONG(&_21$$17, 273) || ZEPHIR_IS_LONG(&_21$$17, 274) || ZEPHIR_IS_LONG(&_21$$17, 277)) { - ZEPHIR_CALL_METHOD(&_23$$20, &dialect, "getsqlexpression", &_24, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_25$$20); - ZVAL_STRING(&_25$$20, ":"); - ZEPHIR_INIT_NVAR(&_26$$20); - ZVAL_STRING(&_26$$20, ""); - ZEPHIR_INIT_NVAR(&wildcard); - zephir_fast_str_replace(&wildcard, &_25$$20, &_26$$20, &_23$$20); - ZEPHIR_OBS_NVAR(&insertValue); - if (UNEXPECTED(!(zephir_array_isset_fetch(&insertValue, &bindParams, &wildcard, 0)))) { - ZEPHIR_INIT_NVAR(&_27$$21); - object_init_ex(&_27$$21, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_28$$21); - ZEPHIR_CONCAT_SVS(&_28$$21, "Bound parameter '", &wildcard, "' cannot be replaced because it isn't in the placeholders list"); - ZEPHIR_CALL_METHOD(NULL, &_27$$21, "__construct", &_14, 29, &_28$$21); - zephir_check_call_status(); - zephir_throw_exception_debug(&_27$$21, "phalcon/Mvc/Model/Query.zep", 914); - ZEPHIR_MM_RESTORE(); - return; - } - break; - } - ZEPHIR_INIT_NVAR(&insertValue); - object_init_ex(&insertValue, phalcon_db_rawvalue_ce); - ZEPHIR_CALL_METHOD(&_29$$22, &dialect, "getsqlexpression", &_30, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &insertValue, "__construct", &_17, 32, &_29$$22); - zephir_check_call_status(); - break; - } while(0); - - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch(&fieldName, &fields, &number, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 927); - _31$$17 = automaticFields; - if (_31$$17) { - _31$$17 = Z_TYPE_P(&columnMap) == IS_ARRAY; - } - if (_31$$17) { - ZEPHIR_OBS_NVAR(&attributeName); - if (UNEXPECTED(!(zephir_array_isset_fetch(&attributeName, &columnMap, &fieldName, 0)))) { - ZEPHIR_INIT_NVAR(&_32$$24); - object_init_ex(&_32$$24, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_33$$24); - ZEPHIR_CONCAT_SVS(&_33$$24, "Column '", &fieldName, "' isn't part of the column map"); - ZEPHIR_CALL_METHOD(NULL, &_32$$24, "__construct", &_14, 29, &_33$$24); - zephir_check_call_status(); - zephir_throw_exception_debug(&_32$$24, "phalcon/Mvc/Model/Query.zep", 937); - ZEPHIR_MM_RESTORE(); - return; - } + if (_4$$3) { + if (ZEPHIR_IS_LONG(&type, 32)) { + zephir_cast_to_string(&_5$$8, &value); + ZEPHIR_CPY_WRT(&castValue, &_5$$8); + ZEPHIR_INIT_NVAR(&type); + ZVAL_LONG(&type, 1024); } else { - ZEPHIR_CPY_WRT(&attributeName, &fieldName); - } - zephir_array_update_zval(&insertValues, &attributeName, &insertValue, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &values, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&number); - ZEPHIR_CALL_METHOD(&insertModel, &manager, "load", NULL, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &insertModel, "assign", NULL, 0, &insertValues); - zephir_check_call_status(); - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZEPHIR_CALL_METHOD(&_34, &insertModel, "create", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_34, &insertModel); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, executeSelect) -{ - zend_string *_17, *_63, *_69, *_84$$93; - zend_ulong _16, _62, _68, _83$$93; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL, *_5 = NULL, *_8 = NULL, *_20 = NULL, *_21 = NULL, *_22 = NULL, *_30 = NULL, *_41 = NULL, *_42 = NULL, *_43 = NULL, *_51 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, numberObjects = 0; - zend_bool simulate, haveObjects = 0, haveScalars = 0, isComplex = 0, isSimpleStd = 0, isKeepingSnapshots = 0, _38$$28, _59$$46, _90$$83; - zval *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, *simulate_param = NULL, __$true, __$null, manager, modelName, models, model, connection, connectionTypes, columns, column, selectColumns, simpleColumnMap, metaData, aliasCopy, sqlColumn, attributes, instance, columnMap, attribute, columnAlias, sqlAlias, dialect, sqlSelect, bindCounts, processed, wildcard, value, processedTypes, typeWildcard, result, resultData, cache, resultObject, columns1, typesColumnMap, wildcardValue, resultsetClassName, _0, *_1, _2, *_10, _11, *_14, _15, *_60, _61, *_66, _67, _73, _3$$3, _6$$5, _7$$7, _9$$9, _12$$11, _13$$16, _18$$28, _19$$29, *_23$$31, _24$$31, _29$$31, _26$$34, _28$$35, _31$$36, *_32$$37, _33$$37, _36$$41, _37$$42, _39$$46, _40$$47, *_44$$49, _45$$49, _50$$49, _47$$52, _49$$53, _52$$54, *_53$$55, _54$$55, _57$$59, _58$$60, _64$$67, _65$$71, _70$$73, _71$$76, _72$$79, _74$$90, *_75$$90, _76$$90, _78$$91, _80$$92, *_81$$93, _82$$93, _86$$94, _88$$95, _89$$85, _98$$83, _91$$98, _92$$98, _93$$97, _94$$97, _95$$99, _96$$99; - zval intermediate, bindParams, bindTypes, _25$$34, _27$$35, _34$$38, _35$$39, _46$$52, _48$$53, _55$$56, _56$$57, _77$$91, _79$$92, _85$$94, _87$$95, _97$$97; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&_25$$34); - ZVAL_UNDEF(&_27$$35); - ZVAL_UNDEF(&_34$$38); - ZVAL_UNDEF(&_35$$39); - ZVAL_UNDEF(&_46$$52); - ZVAL_UNDEF(&_48$$53); - ZVAL_UNDEF(&_55$$56); - ZVAL_UNDEF(&_56$$57); - ZVAL_UNDEF(&_77$$91); - ZVAL_UNDEF(&_79$$92); - ZVAL_UNDEF(&_85$$94); - ZVAL_UNDEF(&_87$$95); - ZVAL_UNDEF(&_97$$97); - ZVAL_BOOL(&__$true, 1); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&connectionTypes); - ZVAL_UNDEF(&columns); - ZVAL_UNDEF(&column); - ZVAL_UNDEF(&selectColumns); - ZVAL_UNDEF(&simpleColumnMap); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&aliasCopy); - ZVAL_UNDEF(&sqlColumn); - ZVAL_UNDEF(&attributes); - ZVAL_UNDEF(&instance); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&attribute); - ZVAL_UNDEF(&columnAlias); - ZVAL_UNDEF(&sqlAlias); - ZVAL_UNDEF(&dialect); - ZVAL_UNDEF(&sqlSelect); - ZVAL_UNDEF(&bindCounts); - ZVAL_UNDEF(&processed); - ZVAL_UNDEF(&wildcard); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&processedTypes); - ZVAL_UNDEF(&typeWildcard); - ZVAL_UNDEF(&result); - ZVAL_UNDEF(&resultData); - ZVAL_UNDEF(&cache); - ZVAL_UNDEF(&resultObject); - ZVAL_UNDEF(&columns1); - ZVAL_UNDEF(&typesColumnMap); - ZVAL_UNDEF(&wildcardValue); - ZVAL_UNDEF(&resultsetClassName); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_11); - ZVAL_UNDEF(&_15); - ZVAL_UNDEF(&_61); - ZVAL_UNDEF(&_67); - ZVAL_UNDEF(&_73); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_6$$5); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_9$$9); - ZVAL_UNDEF(&_12$$11); - ZVAL_UNDEF(&_13$$16); - ZVAL_UNDEF(&_18$$28); - ZVAL_UNDEF(&_19$$29); - ZVAL_UNDEF(&_24$$31); - ZVAL_UNDEF(&_29$$31); - ZVAL_UNDEF(&_26$$34); - ZVAL_UNDEF(&_28$$35); - ZVAL_UNDEF(&_31$$36); - ZVAL_UNDEF(&_33$$37); - ZVAL_UNDEF(&_36$$41); - ZVAL_UNDEF(&_37$$42); - ZVAL_UNDEF(&_39$$46); - ZVAL_UNDEF(&_40$$47); - ZVAL_UNDEF(&_45$$49); - ZVAL_UNDEF(&_50$$49); - ZVAL_UNDEF(&_47$$52); - ZVAL_UNDEF(&_49$$53); - ZVAL_UNDEF(&_52$$54); - ZVAL_UNDEF(&_54$$55); - ZVAL_UNDEF(&_57$$59); - ZVAL_UNDEF(&_58$$60); - ZVAL_UNDEF(&_64$$67); - ZVAL_UNDEF(&_65$$71); - ZVAL_UNDEF(&_70$$73); - ZVAL_UNDEF(&_71$$76); - ZVAL_UNDEF(&_72$$79); - ZVAL_UNDEF(&_74$$90); - ZVAL_UNDEF(&_76$$90); - ZVAL_UNDEF(&_78$$91); - ZVAL_UNDEF(&_80$$92); - ZVAL_UNDEF(&_82$$93); - ZVAL_UNDEF(&_86$$94); - ZVAL_UNDEF(&_88$$95); - ZVAL_UNDEF(&_89$$85); - ZVAL_UNDEF(&_98$$83); - ZVAL_UNDEF(&_91$$98); - ZVAL_UNDEF(&_92$$98); - ZVAL_UNDEF(&_93$$97); - ZVAL_UNDEF(&_94$$97); - ZVAL_UNDEF(&_95$$99); - ZVAL_UNDEF(&_96$$99); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 4) - Z_PARAM_ARRAY(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) - Z_PARAM_OPTIONAL - Z_PARAM_BOOL(simulate) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 1, &intermediate_param, &bindParams_param, &bindTypes_param, &simulate_param); - zephir_get_arrval(&intermediate, intermediate_param); - zephir_get_arrval(&bindParams, bindParams_param); - zephir_get_arrval(&bindTypes, bindTypes_param); - if (!simulate_param) { - simulate = 0; - } else { - simulate = zephir_get_boolval(simulate_param); - } - + if (ZEPHIR_GLOBAL(db).force_casting) { + if (Z_TYPE_P(&value) != IS_ARRAY) { + do { + if (ZEPHIR_IS_LONG(&type, 1)) { + ZVAL_LONG(&_6$$12, 10); + ZEPHIR_CALL_FUNCTION(&castValue, "intval", &_7, 38, &value, &_6$$12); + zephir_check_call_status(); + break; + } + if (ZEPHIR_IS_LONG(&type, 2)) { + zephir_cast_to_string(&_8$$13, &value); + ZEPHIR_CPY_WRT(&castValue, &_8$$13); + break; + } + if (ZEPHIR_IS_LONG(&type, 0)) { + ZEPHIR_INIT_NVAR(&castValue); + ZVAL_NULL(&castValue); + break; + } + if (ZEPHIR_IS_LONG(&type, 5)) { + ZEPHIR_INIT_NVAR(&castValue); + ZVAL_BOOL(&castValue, zephir_get_boolval(&value)); + break; + } + ZEPHIR_CPY_WRT(&castValue, &value); + break; + } while(0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_INIT_VAR(&connectionTypes); - array_init(&connectionTypes); - ZEPHIR_OBS_VAR(&models); - zephir_array_fetch_string(&models, &intermediate, SL("models"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 986); - zephir_is_iterable(&models, 0, "phalcon/Mvc/Model/Query.zep", 1014); - if (Z_TYPE_P(&models) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&models), _1) - { - ZEPHIR_INIT_NVAR(&modelName); - ZVAL_COPY(&modelName, _1); - ZEPHIR_OBS_NVAR(&model); - zephir_read_property(&_3$$3, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&model, &_3$$3, &modelName, 0))) { - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_4, 0, &modelName); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("modelsInstances"), &modelName, &model); - } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getreadconnection", &_5, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - if (Z_TYPE_P(&connection) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&_6$$5, &connection, "gettype", NULL, 0); - zephir_check_call_status(); - zephir_array_update_zval(&connectionTypes, &_6$$5, &__$true, PH_COPY | PH_SEPARATE); - if (UNEXPECTED(zephir_fast_count_int(&connectionTypes) == 2)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Cannot use models of different database systems in the same query", "phalcon/Mvc/Model/Query.zep", 1009); - return; - } - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &models, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &models, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&modelName, &models, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&model); - zephir_read_property(&_7$$7, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&model, &_7$$7, &modelName, 0))) { - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_8, 0, &modelName); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("modelsInstances"), &modelName, &model); - } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getreadconnection", &_5, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - if (Z_TYPE_P(&connection) == IS_OBJECT) { - ZEPHIR_CALL_METHOD(&_9$$9, &connection, "gettype", NULL, 0); - zephir_check_call_status(); - zephir_array_update_zval(&connectionTypes, &_9$$9, &__$true, PH_COPY | PH_SEPARATE); - if (UNEXPECTED(zephir_fast_count_int(&connectionTypes) == 2)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Cannot use models of different database systems in the same query", "phalcon/Mvc/Model/Query.zep", 1009); - return; - } - } - ZEPHIR_CALL_METHOD(NULL, &models, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&modelName); - ZEPHIR_OBS_VAR(&columns); - zephir_array_fetch_string(&columns, &intermediate, SL("columns"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1014); - haveObjects = 0; - haveScalars = 0; - isComplex = 0; - numberObjects = 0; - ZEPHIR_CPY_WRT(&columns1, &columns); - zephir_is_iterable(&columns, 0, "phalcon/Mvc/Model/Query.zep", 1042); - if (Z_TYPE_P(&columns) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&columns), _10) - { - ZEPHIR_INIT_NVAR(&column); - ZVAL_COPY(&column, _10); - if (UNEXPECTED(Z_TYPE_P(&column) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid column definition", "phalcon/Mvc/Model/Query.zep", 1026); - return; - } - zephir_array_fetch_string(&_12$$11, &column, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1029); - if (ZEPHIR_IS_STRING(&_12$$11, "scalar")) { - if (!(zephir_array_isset_string(&column, SL("balias")))) { - isComplex = 1; - } - haveScalars = 1; - } else { - haveObjects = 1; - numberObjects++; - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_11, &columns, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_11)) { - break; - } - ZEPHIR_CALL_METHOD(&column, &columns, "current", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&column) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Invalid column definition", "phalcon/Mvc/Model/Query.zep", 1026); - return; - } - zephir_array_fetch_string(&_13$$16, &column, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1029); - if (ZEPHIR_IS_STRING(&_13$$16, "scalar")) { - if (!(zephir_array_isset_string(&column, SL("balias")))) { - isComplex = 1; + } else { + ZEPHIR_CPY_WRT(&castValue, &value); + } + } else { + ZEPHIR_CPY_WRT(&castValue, &value); } - haveScalars = 1; - } else { - haveObjects = 1; - numberObjects++; - } - ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&column); - if (!(isComplex)) { - if (haveObjects) { - if (haveScalars) { - isComplex = 1; - } else { - if (numberObjects == 1) { - isSimpleStd = 0; - } else { - isComplex = 1; - } - } - } else { - isSimpleStd = 1; - } - } - ZEPHIR_INIT_VAR(&instance); - ZVAL_NULL(&instance); - ZEPHIR_INIT_VAR(&selectColumns); - array_init(&selectColumns); - ZEPHIR_INIT_VAR(&simpleColumnMap); - array_init(&simpleColumnMap); - zephir_read_property(&_0, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_0); - zephir_is_iterable(&columns, 0, "phalcon/Mvc/Model/Query.zep", 1148); - if (Z_TYPE_P(&columns) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&columns), _16, _17, _14) - { - ZEPHIR_INIT_NVAR(&aliasCopy); - if (_17 != NULL) { - ZVAL_STR_COPY(&aliasCopy, _17); - } else { - ZVAL_LONG(&aliasCopy, _16); - } - ZEPHIR_INIT_NVAR(&column); - ZVAL_COPY(&column, _14); - ZEPHIR_OBS_NVAR(&sqlColumn); - zephir_array_fetch_string(&sqlColumn, &column, SL("column"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1065); - zephir_array_fetch_string(&_18$$28, &column, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1068); - if (ZEPHIR_IS_STRING(&_18$$28, "object")) { - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &column, SL("model"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1069); - ZEPHIR_OBS_NVAR(&instance); - zephir_read_property(&_19$$29, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&instance, &_19$$29, &modelName, 0))) { - ZEPHIR_CALL_METHOD(&instance, &manager, "load", &_20, 0, &modelName); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("modelsInstances"), &modelName, &instance); } - ZEPHIR_CALL_METHOD(&attributes, &metaData, "getattributes", &_21, 0, &instance); - zephir_check_call_status(); - if (isComplex) { - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", &_22, 0, &instance); + if (Z_TYPE_P(&castValue) != IS_ARRAY) { + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &castValue); zephir_check_call_status(); } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &castValue, &type); + zephir_check_call_status(); } - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model/Query.zep", 1105); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _23$$31) + } else { + zephir_is_iterable(&castValue, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 558); + if (Z_TYPE_P(&castValue) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&castValue), _12$$22, _13$$22, _10$$22) { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _23$$31); - ZEPHIR_INIT_NVAR(&_25$$34); - zephir_create_array(&_25$$34, 3, 0); - zephir_array_fast_append(&_25$$34, &attribute); - zephir_array_fast_append(&_25$$34, &sqlColumn); - ZEPHIR_INIT_NVAR(&_26$$34); - ZEPHIR_CONCAT_SVSV(&_26$$34, "_", &sqlColumn, "_", &attribute); - zephir_array_fast_append(&_25$$34, &_26$$34); - zephir_array_append(&selectColumns, &_25$$34, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1098); + ZEPHIR_INIT_NVAR(&position); + if (_13$$22 != NULL) { + ZVAL_STR_COPY(&position, _13$$22); + } else { + ZVAL_LONG(&position, _12$$22); + } + ZEPHIR_INIT_NVAR(&itemValue); + ZVAL_COPY(&itemValue, _10$$22); + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_INIT_NVAR(&_14$$24); + ZEPHIR_CONCAT_VV(&_14$$24, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_14$$24, &itemValue); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_15$$25); + ZEPHIR_CONCAT_VV(&_15$$25, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_15$$25, &itemValue, &type); + zephir_check_call_status(); + } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &castValue, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_24$$31, &attributes, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_11$$22, &castValue, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_24$$31)) { + if (!zend_is_true(&_11$$22)) { break; } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&position, &castValue, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_27$$35); - zephir_create_array(&_27$$35, 3, 0); - zephir_array_fast_append(&_27$$35, &attribute); - zephir_array_fast_append(&_27$$35, &sqlColumn); - ZEPHIR_INIT_NVAR(&_28$$35); - ZEPHIR_CONCAT_SVSV(&_28$$35, "_", &sqlColumn, "_", &attribute); - zephir_array_fast_append(&_27$$35, &_28$$35); - zephir_array_append(&selectColumns, &_27$$35, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1098); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&itemValue, &castValue, "current", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_INIT_NVAR(&_16$$27); + ZEPHIR_CONCAT_VV(&_16$$27, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_16$$27, &itemValue); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_17$$28); + ZEPHIR_CONCAT_VV(&_17$$28, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_17$$28, &itemValue, &type); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, &castValue, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&attribute); - zephir_array_update_multi(&columns1, &instance, SL("zs"), 3, &aliasCopy, SL("instance")); - zephir_array_update_multi(&columns1, &attributes, SL("zs"), 3, &aliasCopy, SL("attributes")); - zephir_array_update_multi(&columns1, &columnMap, SL("zs"), 3, &aliasCopy, SL("columnMap")); - ZEPHIR_CALL_METHOD(&_29$$31, &manager, "iskeepingsnapshots", &_30, 0, &instance); + ZEPHIR_INIT_NVAR(&itemValue); + ZEPHIR_INIT_NVAR(&position); + } + } else { + if (Z_TYPE_P(&value) != IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &value); zephir_check_call_status(); - isKeepingSnapshots = zephir_get_boolval(&_29$$31); - if (isKeepingSnapshots) { - ZEPHIR_INIT_NVAR(&_31$$36); - ZVAL_BOOL(&_31$$36, isKeepingSnapshots); - zephir_array_update_multi(&columns1, &_31$$36, SL("zs"), 3, &aliasCopy, SL("keepSnapshots")); - } } else { - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model/Query.zep", 1122); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _32$$37) + zephir_is_iterable(&value, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 566); + if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&value), _20$$31, _21$$31, _18$$31) { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _32$$37); - ZEPHIR_INIT_NVAR(&_34$$38); - zephir_create_array(&_34$$38, 2, 0); - zephir_array_fast_append(&_34$$38, &attribute); - zephir_array_fast_append(&_34$$38, &sqlColumn); - zephir_array_append(&selectColumns, &_34$$38, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1120); + ZEPHIR_INIT_NVAR(&position); + if (_21$$31 != NULL) { + ZVAL_STR_COPY(&position, _21$$31); + } else { + ZVAL_LONG(&position, _20$$31); + } + ZEPHIR_INIT_NVAR(&itemValue); + ZVAL_COPY(&itemValue, _18$$31); + ZEPHIR_INIT_NVAR(&_22$$32); + ZEPHIR_CONCAT_VV(&_22$$32, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_22$$32, &itemValue); + zephir_check_call_status(); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_33$$37, &attributes, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_19$$31, &value, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_33$$37)) { + if (!zend_is_true(&_19$$31)) { break; } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&position, &value, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_35$$39); - zephir_create_array(&_35$$39, 2, 0); - zephir_array_fast_append(&_35$$39, &attribute); - zephir_array_fast_append(&_35$$39, &sqlColumn); - zephir_array_append(&selectColumns, &_35$$39, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1120); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&itemValue, &value, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_23$$33); + ZEPHIR_CONCAT_VV(&_23$$33, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_23$$33, &itemValue); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&attribute); - } - } else { - ZEPHIR_INIT_NVAR(&columnAlias); - if (Z_TYPE_P(&aliasCopy) == IS_LONG) { - ZEPHIR_INIT_NVAR(&_36$$41); - zephir_create_array(&_36$$41, 2, 0); - zephir_array_fast_append(&_36$$41, &sqlColumn); - zephir_array_fast_append(&_36$$41, &__$null); - ZEPHIR_CPY_WRT(&columnAlias, &_36$$41); - } else { - ZEPHIR_INIT_NVAR(&_37$$42); - zephir_create_array(&_37$$42, 3, 0); - zephir_array_fast_append(&_37$$42, &sqlColumn); - zephir_array_fast_append(&_37$$42, &__$null); - zephir_array_fast_append(&_37$$42, &aliasCopy); - ZEPHIR_CPY_WRT(&columnAlias, &_37$$42); - } - zephir_array_append(&selectColumns, &columnAlias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1133); - } - _38$$28 = !isComplex; - if (_38$$28) { - _38$$28 = isSimpleStd; - } - if (_38$$28) { - ZEPHIR_OBS_NVAR(&sqlAlias); - if (zephir_array_isset_string_fetch(&sqlAlias, &column, SL("sqlAlias"), 0)) { - zephir_array_update_zval(&simpleColumnMap, &sqlAlias, &aliasCopy, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&simpleColumnMap, &aliasCopy, &aliasCopy, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&itemValue); + ZEPHIR_INIT_NVAR(&position); } } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &columns, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &placeholders, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_15, &columns, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_1, &placeholders, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_15)) { + if (!zend_is_true(&_1)) { break; } - ZEPHIR_CALL_METHOD(&aliasCopy, &columns, "key", NULL, 0); + ZEPHIR_CALL_METHOD(&wildcard, &placeholders, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&column, &columns, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&value, &placeholders, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&sqlColumn); - zephir_array_fetch_string(&sqlColumn, &column, SL("column"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1065); - zephir_array_fetch_string(&_39$$46, &column, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1068); - if (ZEPHIR_IS_STRING(&_39$$46, "object")) { - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &column, SL("model"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1069); - ZEPHIR_OBS_NVAR(&instance); - zephir_read_property(&_40$$47, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&instance, &_40$$47, &modelName, 0))) { - ZEPHIR_CALL_METHOD(&instance, &manager, "load", &_41, 0, &modelName); - zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("modelsInstances"), &modelName, &instance); + if (Z_TYPE_P(&wildcard) == IS_LONG) { + ZEPHIR_INIT_NVAR(¶meter); + ZVAL_LONG(¶meter, (zephir_get_numberval(&wildcard) + 1)); + } else if (Z_TYPE_P(&wildcard) == IS_STRING) { + ZEPHIR_CPY_WRT(¶meter, &wildcard); + } else { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Invalid bind parameter (1)", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 490); + return; + } + _24$$34 = Z_TYPE_P(dataTypes) == IS_ARRAY; + if (_24$$34) { + ZEPHIR_OBS_NVAR(&type); + _24$$34 = zephir_array_isset_fetch(&type, dataTypes, &wildcard, 0); + } + if (_24$$34) { + if (ZEPHIR_IS_LONG(&type, 32)) { + zephir_cast_to_string(&_25$$39, &value); + ZEPHIR_CPY_WRT(&castValue, &_25$$39); + ZEPHIR_INIT_NVAR(&type); + ZVAL_LONG(&type, 1024); + } else { + if (ZEPHIR_GLOBAL(db).force_casting) { + if (Z_TYPE_P(&value) != IS_ARRAY) { + do { + if (ZEPHIR_IS_LONG(&type, 1)) { + ZVAL_LONG(&_26$$43, 10); + ZEPHIR_CALL_FUNCTION(&castValue, "intval", &_7, 38, &value, &_26$$43); + zephir_check_call_status(); + break; + } + if (ZEPHIR_IS_LONG(&type, 2)) { + zephir_cast_to_string(&_27$$44, &value); + ZEPHIR_CPY_WRT(&castValue, &_27$$44); + break; + } + if (ZEPHIR_IS_LONG(&type, 0)) { + ZEPHIR_INIT_NVAR(&castValue); + ZVAL_NULL(&castValue); + break; + } + if (ZEPHIR_IS_LONG(&type, 5)) { + ZEPHIR_INIT_NVAR(&castValue); + ZVAL_BOOL(&castValue, zephir_get_boolval(&value)); + break; + } + ZEPHIR_CPY_WRT(&castValue, &value); + break; + } while(0); + + } else { + ZEPHIR_CPY_WRT(&castValue, &value); + } + } else { + ZEPHIR_CPY_WRT(&castValue, &value); + } } - ZEPHIR_CALL_METHOD(&attributes, &metaData, "getattributes", &_42, 0, &instance); - zephir_check_call_status(); - if (isComplex) { - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", &_43, 0, &instance); + if (Z_TYPE_P(&castValue) != IS_ARRAY) { + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &castValue); zephir_check_call_status(); } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &castValue, &type); + zephir_check_call_status(); } - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model/Query.zep", 1105); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _44$$49) + } else { + zephir_is_iterable(&castValue, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 558); + if (Z_TYPE_P(&castValue) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&castValue), _30$$53, _31$$53, _28$$53) { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _44$$49); - ZEPHIR_INIT_NVAR(&_46$$52); - zephir_create_array(&_46$$52, 3, 0); - zephir_array_fast_append(&_46$$52, &attribute); - zephir_array_fast_append(&_46$$52, &sqlColumn); - ZEPHIR_INIT_NVAR(&_47$$52); - ZEPHIR_CONCAT_SVSV(&_47$$52, "_", &sqlColumn, "_", &attribute); - zephir_array_fast_append(&_46$$52, &_47$$52); - zephir_array_append(&selectColumns, &_46$$52, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1098); + ZEPHIR_INIT_NVAR(&position); + if (_31$$53 != NULL) { + ZVAL_STR_COPY(&position, _31$$53); + } else { + ZVAL_LONG(&position, _30$$53); + } + ZEPHIR_INIT_NVAR(&itemValue); + ZVAL_COPY(&itemValue, _28$$53); + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_INIT_NVAR(&_32$$55); + ZEPHIR_CONCAT_VV(&_32$$55, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_32$$55, &itemValue); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_33$$56); + ZEPHIR_CONCAT_VV(&_33$$56, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_33$$56, &itemValue, &type); + zephir_check_call_status(); + } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &castValue, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_45$$49, &attributes, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_29$$53, &castValue, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_45$$49)) { + if (!zend_is_true(&_29$$53)) { break; } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&position, &castValue, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_48$$53); - zephir_create_array(&_48$$53, 3, 0); - zephir_array_fast_append(&_48$$53, &attribute); - zephir_array_fast_append(&_48$$53, &sqlColumn); - ZEPHIR_INIT_NVAR(&_49$$53); - ZEPHIR_CONCAT_SVSV(&_49$$53, "_", &sqlColumn, "_", &attribute); - zephir_array_fast_append(&_48$$53, &_49$$53); - zephir_array_append(&selectColumns, &_48$$53, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1098); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&itemValue, &castValue, "current", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&type, 1024)) { + ZEPHIR_INIT_NVAR(&_34$$58); + ZEPHIR_CONCAT_VV(&_34$$58, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_34$$58, &itemValue); + zephir_check_call_status(); + } else { + ZEPHIR_INIT_NVAR(&_35$$59); + ZEPHIR_CONCAT_VV(&_35$$59, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_35$$59, &itemValue, &type); + zephir_check_call_status(); + } + ZEPHIR_CALL_METHOD(NULL, &castValue, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&attribute); - zephir_array_update_multi(&columns1, &instance, SL("zs"), 3, &aliasCopy, SL("instance")); - zephir_array_update_multi(&columns1, &attributes, SL("zs"), 3, &aliasCopy, SL("attributes")); - zephir_array_update_multi(&columns1, &columnMap, SL("zs"), 3, &aliasCopy, SL("columnMap")); - ZEPHIR_CALL_METHOD(&_50$$49, &manager, "iskeepingsnapshots", &_51, 0, &instance); + ZEPHIR_INIT_NVAR(&itemValue); + ZEPHIR_INIT_NVAR(&position); + } + } else { + if (Z_TYPE_P(&value) != IS_ARRAY) { + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, ¶meter, &value); zephir_check_call_status(); - isKeepingSnapshots = zephir_get_boolval(&_50$$49); - if (isKeepingSnapshots) { - ZEPHIR_INIT_NVAR(&_52$$54); - ZVAL_BOOL(&_52$$54, isKeepingSnapshots); - zephir_array_update_multi(&columns1, &_52$$54, SL("zs"), 3, &aliasCopy, SL("keepSnapshots")); - } } else { - zephir_is_iterable(&attributes, 0, "phalcon/Mvc/Model/Query.zep", 1122); - if (Z_TYPE_P(&attributes) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&attributes), _53$$55) + zephir_is_iterable(&value, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 566); + if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&value), _38$$62, _39$$62, _36$$62) { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _53$$55); - ZEPHIR_INIT_NVAR(&_55$$56); - zephir_create_array(&_55$$56, 2, 0); - zephir_array_fast_append(&_55$$56, &attribute); - zephir_array_fast_append(&_55$$56, &sqlColumn); - zephir_array_append(&selectColumns, &_55$$56, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1120); + ZEPHIR_INIT_NVAR(&position); + if (_39$$62 != NULL) { + ZVAL_STR_COPY(&position, _39$$62); + } else { + ZVAL_LONG(&position, _38$$62); + } + ZEPHIR_INIT_NVAR(&itemValue); + ZVAL_COPY(&itemValue, _36$$62); + ZEPHIR_INIT_NVAR(&_40$$63); + ZEPHIR_CONCAT_VV(&_40$$63, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_40$$63, &itemValue); + zephir_check_call_status(); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &attributes, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &value, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_54$$55, &attributes, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_37$$62, &value, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_54$$55)) { + if (!zend_is_true(&_37$$62)) { break; } - ZEPHIR_CALL_METHOD(&attribute, &attributes, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&position, &value, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_56$$57); - zephir_create_array(&_56$$57, 2, 0); - zephir_array_fast_append(&_56$$57, &attribute); - zephir_array_fast_append(&_56$$57, &sqlColumn); - zephir_array_append(&selectColumns, &_56$$57, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1120); - ZEPHIR_CALL_METHOD(NULL, &attributes, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&itemValue, &value, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_41$$64); + ZEPHIR_CONCAT_VV(&_41$$64, ¶meter, &position); + ZEPHIR_CALL_METHOD(NULL, statement, "bindvalue", &_9, 0, &_41$$64, &itemValue); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(NULL, &value, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&attribute); - } - } else { - if (Z_TYPE_P(&aliasCopy) == IS_LONG) { - ZEPHIR_INIT_NVAR(&_57$$59); - zephir_create_array(&_57$$59, 2, 0); - zephir_array_fast_append(&_57$$59, &sqlColumn); - zephir_array_fast_append(&_57$$59, &__$null); - ZEPHIR_CPY_WRT(&columnAlias, &_57$$59); - } else { - ZEPHIR_INIT_NVAR(&_58$$60); - zephir_create_array(&_58$$60, 3, 0); - zephir_array_fast_append(&_58$$60, &sqlColumn); - zephir_array_fast_append(&_58$$60, &__$null); - zephir_array_fast_append(&_58$$60, &aliasCopy); - ZEPHIR_CPY_WRT(&columnAlias, &_58$$60); - } - zephir_array_append(&selectColumns, &columnAlias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1133); - } - _59$$46 = !isComplex; - if (_59$$46) { - _59$$46 = isSimpleStd; - } - if (_59$$46) { - ZEPHIR_OBS_NVAR(&sqlAlias); - if (zephir_array_isset_string_fetch(&sqlAlias, &column, SL("sqlAlias"), 0)) { - zephir_array_update_zval(&simpleColumnMap, &sqlAlias, &aliasCopy, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&simpleColumnMap, &aliasCopy, &aliasCopy, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&itemValue); + ZEPHIR_INIT_NVAR(&position); } } - ZEPHIR_CALL_METHOD(NULL, &columns, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&column); - ZEPHIR_INIT_NVAR(&aliasCopy); - ZEPHIR_INIT_VAR(&processed); - array_init(&processed); - ZEPHIR_INIT_VAR(&bindCounts); - array_init(&bindCounts); - zephir_array_update_string(&intermediate, SL("columns"), &selectColumns, PH_COPY | PH_SEPARATE); - zephir_is_iterable(&bindParams, 0, "phalcon/Mvc/Model/Query.zep", 1169); - if (Z_TYPE_P(&bindParams) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&bindParams), _62, _63, _60) - { - ZEPHIR_INIT_NVAR(&wildcard); - if (_63 != NULL) { - ZVAL_STR_COPY(&wildcard, _63); - } else { - ZVAL_LONG(&wildcard, _62); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _60); - if (Z_TYPE_P(&wildcard) == IS_LONG) { - ZEPHIR_INIT_NVAR(&wildcardValue); - ZEPHIR_CONCAT_SV(&wildcardValue, ":", &wildcard); - } else { - ZEPHIR_CPY_WRT(&wildcardValue, &wildcard); - } - zephir_array_update_zval(&processed, &wildcardValue, &value, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEPHIR_INIT_NVAR(&_64$$67); - ZVAL_LONG(&_64$$67, zephir_fast_count_int(&value)); - zephir_array_update_zval(&bindCounts, &wildcardValue, &_64$$67, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &bindParams, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_61, &bindParams, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_61)) { - break; - } - ZEPHIR_CALL_METHOD(&wildcard, &bindParams, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &bindParams, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&wildcard) == IS_LONG) { - ZEPHIR_INIT_NVAR(&wildcardValue); - ZEPHIR_CONCAT_SV(&wildcardValue, ":", &wildcard); - } else { - ZEPHIR_CPY_WRT(&wildcardValue, &wildcard); - } - zephir_array_update_zval(&processed, &wildcardValue, &value, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(&value) == IS_ARRAY) { - ZEPHIR_INIT_NVAR(&_65$$71); - ZVAL_LONG(&_65$$71, zephir_fast_count_int(&value)); - zephir_array_update_zval(&bindCounts, &wildcardValue, &_65$$71, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &bindParams, "next", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &placeholders, "next", NULL, 0); zephir_check_call_status(); } } ZEPHIR_INIT_NVAR(&value); ZEPHIR_INIT_NVAR(&wildcard); - ZEPHIR_INIT_VAR(&processedTypes); - array_init(&processedTypes); - zephir_is_iterable(&bindTypes, 0, "phalcon/Mvc/Model/Query.zep", 1182); - if (Z_TYPE_P(&bindTypes) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&bindTypes), _68, _69, _66) - { - ZEPHIR_INIT_NVAR(&typeWildcard); - if (_69 != NULL) { - ZVAL_STR_COPY(&typeWildcard, _69); - } else { - ZVAL_LONG(&typeWildcard, _68); - } - ZEPHIR_INIT_NVAR(&value); - ZVAL_COPY(&value, _66); - if (Z_TYPE_P(&typeWildcard) == IS_LONG) { - ZEPHIR_INIT_NVAR(&_70$$73); - ZEPHIR_CONCAT_SV(&_70$$73, ":", &typeWildcard); - zephir_array_update_zval(&processedTypes, &_70$$73, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&processedTypes, &typeWildcard, &value, PH_COPY | PH_SEPARATE); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &bindTypes, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_67, &bindTypes, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_67)) { - break; - } - ZEPHIR_CALL_METHOD(&typeWildcard, &bindTypes, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&value, &bindTypes, "current", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&typeWildcard) == IS_LONG) { - ZEPHIR_INIT_NVAR(&_71$$76); - ZEPHIR_CONCAT_SV(&_71$$76, ":", &typeWildcard); - zephir_array_update_zval(&processedTypes, &_71$$76, &value, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&processedTypes, &typeWildcard, &value, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &bindTypes, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&value); - ZEPHIR_INIT_NVAR(&typeWildcard); - if (zephir_fast_count_int(&bindCounts)) { - zephir_array_update_string(&intermediate, SL("bindCounts"), &bindCounts, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(&dialect, &connection, "getdialect", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&sqlSelect, &dialect, "select", NULL, 0, &intermediate); + ZEPHIR_CALL_METHOD(NULL, statement, "execute", NULL, 0); zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sharedLock"), PH_NOISY_CC | PH_READONLY); - if (zephir_is_true(&_0)) { - ZEPHIR_CALL_METHOD(&_72$$79, &dialect, "sharedlock", NULL, 0, &sqlSelect); - zephir_check_call_status(); - ZEPHIR_CPY_WRT(&sqlSelect, &_72$$79); - } - if (simulate) { - zephir_create_array(return_value, 3, 0); - zephir_array_update_string(return_value, SL("sql"), &sqlSelect, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("bind"), &processed, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("bindTypes"), &processedTypes, PH_COPY | PH_SEPARATE); - RETURN_MM(); - } - ZEPHIR_CALL_METHOD(&result, &connection, "query", NULL, 0, &sqlSelect, &processed, &processedTypes); + RETVAL_ZVAL(statement, 1, 0); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, getErrorInfo) +{ + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + + + ZEPHIR_MM_GROW(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "errorinfo", NULL, 0); zephir_check_call_status(); - if (zephir_instance_of_ev(&result, phalcon_db_resultinterface_ce)) { - ZEPHIR_CPY_WRT(&resultData, &result); - } else { - ZEPHIR_INIT_NVAR(&resultData); - ZVAL_NULL(&resultData); - } - zephir_read_property(&_73, this_ptr, ZEND_STRL("cache"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&cache, &_73); - if (!(isComplex)) { - if (isSimpleStd) { - ZEPHIR_INIT_VAR(&resultObject); - object_init_ex(&resultObject, phalcon_mvc_model_row_ce); - if (zephir_has_constructor(&resultObject)) { - ZEPHIR_CALL_METHOD(NULL, &resultObject, "__construct", NULL, 0); - zephir_check_call_status(); - } + RETURN_MM(); +} - isKeepingSnapshots = 0; - } else { - if (Z_TYPE_P(&instance) == IS_OBJECT) { - ZEPHIR_CPY_WRT(&resultObject, &instance); - } else { - ZEPHIR_CPY_WRT(&resultObject, &model); - } - if (!(ZEPHIR_GLOBAL(orm).cast_on_hydrate)) { - ZEPHIR_CALL_METHOD(&simpleColumnMap, &metaData, "getcolumnmap", NULL, 0, &resultObject); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getcolumnmap", NULL, 0, &resultObject); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&typesColumnMap, &metaData, "getdatatypes", NULL, 0, &resultObject); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&simpleColumnMap); - if (Z_TYPE_P(&columnMap) == IS_NULL) { - array_init(&simpleColumnMap); - ZEPHIR_CALL_METHOD(&_74$$90, &metaData, "getattributes", NULL, 0, &resultObject); - zephir_check_call_status(); - zephir_is_iterable(&_74$$90, 0, "phalcon/Mvc/Model/Query.zep", 1270); - if (Z_TYPE_P(&_74$$90) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_74$$90), _75$$90) - { - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _75$$90); - ZEPHIR_INIT_NVAR(&_77$$91); - zephir_create_array(&_77$$91, 2, 0); - zephir_array_fast_append(&_77$$91, &attribute); - ZEPHIR_OBS_NVAR(&_78$$91); - zephir_array_fetch(&_78$$91, &typesColumnMap, &attribute, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1268); - zephir_array_fast_append(&_77$$91, &_78$$91); - zephir_array_update_zval(&simpleColumnMap, &attribute, &_77$$91, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_74$$90, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_76$$90, &_74$$90, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_76$$90)) { - break; - } - ZEPHIR_CALL_METHOD(&attribute, &_74$$90, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_79$$92); - zephir_create_array(&_79$$92, 2, 0); - zephir_array_fast_append(&_79$$92, &attribute); - ZEPHIR_OBS_NVAR(&_80$$92); - zephir_array_fetch(&_80$$92, &typesColumnMap, &attribute, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1268); - zephir_array_fast_append(&_79$$92, &_80$$92); - zephir_array_update_zval(&simpleColumnMap, &attribute, &_79$$92, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &_74$$90, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - } else { - array_init(&simpleColumnMap); - zephir_is_iterable(&columnMap, 0, "phalcon/Mvc/Model/Query.zep", 1279); - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&columnMap), _83$$93, _84$$93, _81$$93) - { - ZEPHIR_INIT_NVAR(&column); - if (_84$$93 != NULL) { - ZVAL_STR_COPY(&column, _84$$93); - } else { - ZVAL_LONG(&column, _83$$93); - } - ZEPHIR_INIT_NVAR(&attribute); - ZVAL_COPY(&attribute, _81$$93); - ZEPHIR_INIT_NVAR(&_85$$94); - zephir_create_array(&_85$$94, 2, 0); - zephir_array_fast_append(&_85$$94, &attribute); - ZEPHIR_OBS_NVAR(&_86$$94); - zephir_array_fetch(&_86$$94, &typesColumnMap, &column, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1277); - zephir_array_fast_append(&_85$$94, &_86$$94); - zephir_array_update_zval(&simpleColumnMap, &column, &_85$$94, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &columnMap, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_82$$93, &columnMap, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_82$$93)) { - break; - } - ZEPHIR_CALL_METHOD(&column, &columnMap, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&attribute, &columnMap, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_87$$95); - zephir_create_array(&_87$$95, 2, 0); - zephir_array_fast_append(&_87$$95, &attribute); - ZEPHIR_OBS_NVAR(&_88$$95); - zephir_array_fetch(&_88$$95, &typesColumnMap, &column, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1277); - zephir_array_fast_append(&_87$$95, &_88$$95); - zephir_array_update_zval(&simpleColumnMap, &column, &_87$$95, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &columnMap, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&attribute); - ZEPHIR_INIT_NVAR(&column); - } - } - ZEPHIR_CALL_METHOD(&_89$$85, &manager, "iskeepingsnapshots", NULL, 0, &resultObject); - zephir_check_call_status(); - isKeepingSnapshots = zephir_get_boolval(&_89$$85); - } - _90$$83 = zephir_instance_of_ev(&resultObject, phalcon_mvc_modelinterface_ce); - if (_90$$83) { - _90$$83 = (zephir_method_exists_ex(&resultObject, ZEND_STRL("getresultsetclass")) == SUCCESS); - } - if (_90$$83) { - ZEPHIR_CALL_METHOD(&resultsetClassName, &resultObject, "getresultsetclass", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&resultsetClassName)) { - if (UNEXPECTED(!(zephir_class_exists(&resultsetClassName, 1)))) { - ZEPHIR_INIT_VAR(&_91$$98); - object_init_ex(&_91$$98, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_92$$98); - ZEPHIR_CONCAT_SVS(&_92$$98, "Resultset class \"", &resultsetClassName, "\" not found"); - ZEPHIR_CALL_METHOD(NULL, &_91$$98, "__construct", NULL, 29, &_92$$98); - zephir_check_call_status(); - zephir_throw_exception_debug(&_91$$98, "phalcon/Mvc/Model/Query.zep", 1295); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_93$$97); - ZVAL_STRING(&_93$$97, "Phalcon\\Mvc\\Model\\ResultsetInterface"); - ZEPHIR_CALL_FUNCTION(&_94$$97, "is_subclass_of", NULL, 436, &resultsetClassName, &_93$$97); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_94$$97))) { - ZEPHIR_INIT_VAR(&_95$$99); - object_init_ex(&_95$$99, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_96$$99); - ZEPHIR_CONCAT_SVS(&_96$$99, "Resultset class \"", &resultsetClassName, "\" must be an implementation of Phalcon\\Mvc\\Model\\ResultsetInterface"); - ZEPHIR_CALL_METHOD(NULL, &_95$$99, "__construct", NULL, 29, &_96$$99); - zephir_check_call_status(); - zephir_throw_exception_debug(&_95$$99, "phalcon/Mvc/Model/Query.zep", 1301); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_97$$97); - zephir_create_array(&_97$$97, 5, 0); - zephir_array_fast_append(&_97$$97, &simpleColumnMap); - zephir_array_fast_append(&_97$$97, &resultObject); - zephir_array_fast_append(&_97$$97, &resultData); - zephir_array_fast_append(&_97$$97, &cache); - ZEPHIR_INIT_NVAR(&_93$$97); - ZVAL_BOOL(&_93$$97, isKeepingSnapshots); - zephir_array_fast_append(&_97$$97, &_93$$97); - ZEPHIR_LAST_CALL_STATUS = zephir_create_instance_params(return_value, &resultsetClassName, &_97$$97); - zephir_check_call_status(); - RETURN_MM(); - } - } - object_init_ex(return_value, phalcon_mvc_model_resultset_simple_ce); - if (isKeepingSnapshots) { - ZVAL_BOOL(&_98$$83, 1); - } else { - ZVAL_BOOL(&_98$$83, 0); - } - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 454, &simpleColumnMap, &resultObject, &resultData, &cache, &_98$$83); - zephir_check_call_status(); - RETURN_MM(); - } - object_init_ex(return_value, phalcon_mvc_model_resultset_complex_ce); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 455, &columns1, &resultData, &cache); +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, getInternalHandler) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "pdo"); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, getTransactionLevel) +{ + zval *this_ptr = getThis(); + + + + RETURN_MEMBER(getThis(), "transactionLevel"); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, isUnderTransaction) +{ + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + + + ZEPHIR_MM_GROW(); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "intransaction", NULL, 0); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, executeUpdate) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, lastInsertId) { - zend_string *_5; - zend_ulong _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_7 = NULL, *_9 = NULL, *_14 = NULL, *_16 = NULL, *_17 = NULL, *_19 = NULL, *_21 = NULL, *_27 = NULL, *_30 = NULL, *_32 = NULL, *_34 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, models, modelName, model, connection, dialect, fields, values, updateValues, fieldName, value, selectBindParams, selectBindTypes, number, field, records, exprValue, updateValue, wildcard, record, _0, *_2, _3, _29, _35, _1$$4, _6$$5, _8$$10, _10$$10, _11$$10, _12$$11, _13$$11, _15$$13, _18$$14, _20$$19, _22$$19, _23$$19, _24$$20, _25$$20, _26$$22, _28$$23, _31$$24, _33$$25; - zval intermediate, bindParams, bindTypes; + zval *name_param = NULL, _0; + zval name; zval *this_ptr = getThis(); - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&dialect); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&updateValues); - ZVAL_UNDEF(&fieldName); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&selectBindParams); - ZVAL_UNDEF(&selectBindTypes); - ZVAL_UNDEF(&number); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&records); - ZVAL_UNDEF(&exprValue); - ZVAL_UNDEF(&updateValue); - ZVAL_UNDEF(&wildcard); - ZVAL_UNDEF(&record); + ZVAL_UNDEF(&name); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_29); - ZVAL_UNDEF(&_35); - ZVAL_UNDEF(&_1$$4); - ZVAL_UNDEF(&_6$$5); - ZVAL_UNDEF(&_8$$10); - ZVAL_UNDEF(&_10$$10); - ZVAL_UNDEF(&_11$$10); - ZVAL_UNDEF(&_12$$11); - ZVAL_UNDEF(&_13$$11); - ZVAL_UNDEF(&_15$$13); - ZVAL_UNDEF(&_18$$14); - ZVAL_UNDEF(&_20$$19); - ZVAL_UNDEF(&_22$$19); - ZVAL_UNDEF(&_23$$19); - ZVAL_UNDEF(&_24$$20); - ZVAL_UNDEF(&_25$$20); - ZVAL_UNDEF(&_26$$22); - ZVAL_UNDEF(&_28$$23); - ZVAL_UNDEF(&_31$$24); - ZVAL_UNDEF(&_33$$25); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(3, 3) - Z_PARAM_ARRAY(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(name) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 3, 0, &intermediate_param, &bindParams_param, &bindTypes_param); - zephir_get_arrval(&intermediate, intermediate_param); - zephir_get_arrval(&bindParams, bindParams_param); - zephir_get_arrval(&bindTypes, bindTypes_param); - - - ZEPHIR_OBS_VAR(&models); - zephir_array_fetch_string(&models, &intermediate, SL("models"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1349); - if (UNEXPECTED(zephir_array_isset_long(&models, 1))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Updating several models at the same time is still not supported", "phalcon/Mvc/Model/Query.zep", 1354); - return; - } - ZEPHIR_OBS_VAR(&modelName); - zephir_array_fetch_long(&modelName, &models, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1357); - ZEPHIR_OBS_VAR(&model); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_array_isset_fetch(&model, &_0, &modelName, 0))) { - zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(&model, &_1$$4, "load", NULL, 0, &modelName); - zephir_check_call_status(); - } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getwriteconnection", NULL, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&dialect, &connection, "getdialect", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_VAR(&fields); - zephir_array_fetch_string(&fields, &intermediate, SL("fields"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1376); - ZEPHIR_OBS_VAR(&values); - zephir_array_fetch_string(&values, &intermediate, SL("values"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1377); - ZEPHIR_INIT_VAR(&updateValues); - array_init(&updateValues); - ZEPHIR_CPY_WRT(&selectBindParams, &bindParams); - ZEPHIR_CPY_WRT(&selectBindTypes, &bindTypes); - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model/Query.zep", 1449); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fields), _4, _5, _2) - { - ZEPHIR_INIT_NVAR(&number); - if (_5 != NULL) { - ZVAL_STR_COPY(&number, _5); - } else { - ZVAL_LONG(&number, _4); - } - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _2); - ZEPHIR_OBS_NVAR(&value); - zephir_array_fetch(&value, &values, &number, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1392); - ZEPHIR_OBS_NVAR(&exprValue); - zephir_array_fetch_string(&exprValue, &value, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1393); - if (zephir_array_isset_string(&field, SL("balias"))) { - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch_string(&fieldName, &field, SL("balias"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1396); - } else { - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch_string(&fieldName, &field, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1398); - } - zephir_array_fetch_string(&_6$$5, &value, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1401); - do { - if (ZEPHIR_IS_LONG(&_6$$5, 260) || ZEPHIR_IS_LONG(&_6$$5, 258) || ZEPHIR_IS_LONG(&_6$$5, 259)) { - ZEPHIR_CALL_METHOD(&updateValue, &dialect, "getsqlexpression", &_7, 0, &exprValue); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_6$$5, 322)) { - ZEPHIR_INIT_NVAR(&updateValue); - ZVAL_NULL(&updateValue); - break; - } - if (ZEPHIR_IS_LONG(&_6$$5, 273) || ZEPHIR_IS_LONG(&_6$$5, 274) || ZEPHIR_IS_LONG(&_6$$5, 277)) { - ZEPHIR_CALL_METHOD(&_8$$10, &dialect, "getsqlexpression", &_9, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_10$$10); - ZVAL_STRING(&_10$$10, ":"); - ZEPHIR_INIT_NVAR(&_11$$10); - ZVAL_STRING(&_11$$10, ""); - ZEPHIR_INIT_NVAR(&wildcard); - zephir_fast_str_replace(&wildcard, &_10$$10, &_11$$10, &_8$$10); - ZEPHIR_OBS_NVAR(&updateValue); - if (UNEXPECTED(!(zephir_array_isset_fetch(&updateValue, &bindParams, &wildcard, 0)))) { - ZEPHIR_INIT_NVAR(&_12$$11); - object_init_ex(&_12$$11, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_13$$11); - ZEPHIR_CONCAT_SVS(&_13$$11, "Bound parameter '", &wildcard, "' cannot be replaced because it's not in the placeholders list"); - ZEPHIR_CALL_METHOD(NULL, &_12$$11, "__construct", &_14, 29, &_13$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$11, "phalcon/Mvc/Model/Query.zep", 1424); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_unset(&selectBindParams, &wildcard, PH_SEPARATE); - zephir_array_unset(&selectBindTypes, &wildcard, PH_SEPARATE); - break; - } - if (ZEPHIR_IS_LONG(&_6$$5, 277)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not supported", "phalcon/Mvc/Model/Query.zep", 1433); - return; - } - ZEPHIR_INIT_NVAR(&updateValue); - object_init_ex(&updateValue, phalcon_db_rawvalue_ce); - ZEPHIR_CALL_METHOD(&_15$$13, &dialect, "getsqlexpression", &_16, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &updateValue, "__construct", &_17, 32, &_15$$13); - zephir_check_call_status(); - break; - } while(0); - - zephir_array_update_zval(&updateValues, &fieldName, &updateValue, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); + zephir_fetch_params(1, 0, 1, &name_param); + if (!name_param) { + ZEPHIR_INIT_VAR(&name); } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&number, &fields, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&value); - zephir_array_fetch(&value, &values, &number, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1392); - ZEPHIR_OBS_NVAR(&exprValue); - zephir_array_fetch_string(&exprValue, &value, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1393); - if (zephir_array_isset_string(&field, SL("balias"))) { - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch_string(&fieldName, &field, SL("balias"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1396); - } else { - ZEPHIR_OBS_NVAR(&fieldName); - zephir_array_fetch_string(&fieldName, &field, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1398); - } - zephir_array_fetch_string(&_18$$14, &value, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1401); - do { - if (ZEPHIR_IS_LONG(&_18$$14, 260) || ZEPHIR_IS_LONG(&_18$$14, 258) || ZEPHIR_IS_LONG(&_18$$14, 259)) { - ZEPHIR_CALL_METHOD(&updateValue, &dialect, "getsqlexpression", &_19, 0, &exprValue); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&_18$$14, 322)) { - ZEPHIR_INIT_NVAR(&updateValue); - ZVAL_NULL(&updateValue); - break; - } - if (ZEPHIR_IS_LONG(&_18$$14, 273) || ZEPHIR_IS_LONG(&_18$$14, 274) || ZEPHIR_IS_LONG(&_18$$14, 277)) { - ZEPHIR_CALL_METHOD(&_20$$19, &dialect, "getsqlexpression", &_21, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_22$$19); - ZVAL_STRING(&_22$$19, ":"); - ZEPHIR_INIT_NVAR(&_23$$19); - ZVAL_STRING(&_23$$19, ""); - ZEPHIR_INIT_NVAR(&wildcard); - zephir_fast_str_replace(&wildcard, &_22$$19, &_23$$19, &_20$$19); - ZEPHIR_OBS_NVAR(&updateValue); - if (UNEXPECTED(!(zephir_array_isset_fetch(&updateValue, &bindParams, &wildcard, 0)))) { - ZEPHIR_INIT_NVAR(&_24$$20); - object_init_ex(&_24$$20, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_NVAR(&_25$$20); - ZEPHIR_CONCAT_SVS(&_25$$20, "Bound parameter '", &wildcard, "' cannot be replaced because it's not in the placeholders list"); - ZEPHIR_CALL_METHOD(NULL, &_24$$20, "__construct", &_14, 29, &_25$$20); - zephir_check_call_status(); - zephir_throw_exception_debug(&_24$$20, "phalcon/Mvc/Model/Query.zep", 1424); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_unset(&selectBindParams, &wildcard, PH_SEPARATE); - zephir_array_unset(&selectBindTypes, &wildcard, PH_SEPARATE); - break; - } - if (ZEPHIR_IS_LONG(&_18$$14, 277)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Not supported", "phalcon/Mvc/Model/Query.zep", 1433); - return; - } - ZEPHIR_INIT_NVAR(&updateValue); - object_init_ex(&updateValue, phalcon_db_rawvalue_ce); - ZEPHIR_CALL_METHOD(&_26$$22, &dialect, "getsqlexpression", &_27, 0, &exprValue); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &updateValue, "__construct", &_17, 32, &_26$$22); - zephir_check_call_status(); - break; - } while(0); - - zephir_array_update_zval(&updateValues, &fieldName, &updateValue, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); - zephir_check_call_status(); - } + if (UNEXPECTED(Z_TYPE_P(name_param) != IS_STRING && Z_TYPE_P(name_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'name' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_INIT_NVAR(&field); - ZEPHIR_INIT_NVAR(&number); - ZEPHIR_CALL_METHOD(&records, this_ptr, "getrelatedrecords", NULL, 452, &model, &intermediate, &selectBindParams, &selectBindTypes); - zephir_check_call_status(); - if (!(zephir_fast_count_int(&records))) { - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_28$$23, 1); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_28$$23); - zephir_check_call_status(); - RETURN_MM(); + if (EXPECTED(Z_TYPE_P(name_param) == IS_STRING)) { + zephir_get_strval(&name, name_param); + } else { + ZEPHIR_INIT_VAR(&name); } - ZEPHIR_CALL_METHOD(&connection, this_ptr, "getwriteconnection", NULL, 0, &model, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &connection, "begin", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &records, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_29, &records, "valid", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_29))) { - break; - } - ZEPHIR_CALL_METHOD(&record, &records, "current", &_30, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &record, "assign", NULL, 0, &updateValues); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_31$$24, &record, "update", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_31$$24))) { - ZEPHIR_CALL_METHOD(NULL, &connection, "rollback", &_32, 0); - zephir_check_call_status(); - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_33$$25, 0); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_33$$25, &record); - zephir_check_call_status(); - RETURN_MM(); - } - ZEPHIR_CALL_METHOD(NULL, &records, "next", &_34, 0); - zephir_check_call_status(); } - ZEPHIR_CALL_METHOD(NULL, &connection, "commit", NULL, 0); - zephir_check_call_status(); - object_init_ex(return_value, phalcon_mvc_model_query_status_ce); - ZVAL_BOOL(&_35, 1); - ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 453, &_35); + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "lastinsertid", NULL, 0, &name); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getCallArgument) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, prepare) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *argument_param = NULL, _0; - zval argument; + zval *sqlStatement_param = NULL, _0; + zval sqlStatement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&argument); + ZVAL_UNDEF(&sqlStatement); ZVAL_UNDEF(&_0); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(argument) + Z_PARAM_STR(sqlStatement) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &argument_param); - ZEPHIR_OBS_COPY_OR_DUP(&argument, argument_param); + zephir_fetch_params(1, 1, 0, &sqlStatement_param); + if (UNEXPECTED(Z_TYPE_P(sqlStatement_param) != IS_STRING && Z_TYPE_P(sqlStatement_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlStatement' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlStatement_param) == IS_STRING)) { + zephir_get_strval(&sqlStatement, sqlStatement_param); + } else { + ZEPHIR_INIT_VAR(&sqlStatement); + } - zephir_array_fetch_string(&_0, &argument, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1511); - if (ZEPHIR_IS_LONG(&_0, 352)) { - zephir_create_array(return_value, 1, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("all")); - RETURN_MM(); - } - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getexpression", NULL, 456, &argument); + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_0, "prepare", NULL, 0, &sqlStatement); zephir_check_call_status(); RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getCaseExpression) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, query) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *expr_param = NULL, whenClauses, whenExpr, _0, *_1, _2, _18, _19, _4$$4, _5$$4, _7$$4, _9$$5, _10$$5, _12$$7, _13$$7, _14$$7, _16$$8, _17$$8; - zval expr, _3$$4, _8$$5, _11$$7, _15$$8; + zval bindParams, bindTypes; + zval *sqlStatement_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, eventsManager, statement, params, types, _0, _3, _1$$3, _2$$3, _4$$9; + zval sqlStatement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_8$$5); - ZVAL_UNDEF(&_11$$7); - ZVAL_UNDEF(&_15$$8); - ZVAL_UNDEF(&whenClauses); - ZVAL_UNDEF(&whenExpr); + ZVAL_UNDEF(&sqlStatement); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&types); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_18); - ZVAL_UNDEF(&_19); - ZVAL_UNDEF(&_4$$4); - ZVAL_UNDEF(&_5$$4); - ZVAL_UNDEF(&_7$$4); - ZVAL_UNDEF(&_9$$5); - ZVAL_UNDEF(&_10$$5); - ZVAL_UNDEF(&_12$$7); - ZVAL_UNDEF(&_13$$7); - ZVAL_UNDEF(&_14$$7); - ZVAL_UNDEF(&_16$$8); - ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_1$$3); + ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&_4$$9); + ZVAL_UNDEF(&bindParams); + ZVAL_UNDEF(&bindTypes); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(expr) + ZEND_PARSE_PARAMETERS_START(1, 3) + Z_PARAM_STR(sqlStatement) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(bindParams) + Z_PARAM_ARRAY(bindTypes) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &expr_param); - ZEPHIR_OBS_COPY_OR_DUP(&expr, expr_param); + zephir_fetch_params(1, 1, 2, &sqlStatement_param, &bindParams_param, &bindTypes_param); + if (UNEXPECTED(Z_TYPE_P(sqlStatement_param) != IS_STRING && Z_TYPE_P(sqlStatement_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'sqlStatement' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(sqlStatement_param) == IS_STRING)) { + zephir_get_strval(&sqlStatement, sqlStatement_param); + } else { + ZEPHIR_INIT_VAR(&sqlStatement); + } + if (!bindParams_param) { + ZEPHIR_INIT_VAR(&bindParams); + array_init(&bindParams); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindParams, bindParams_param); + } + if (!bindTypes_param) { + ZEPHIR_INIT_VAR(&bindTypes); + array_init(&bindTypes); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&bindTypes, bindTypes_param); + } - ZEPHIR_INIT_VAR(&whenClauses); - array_init(&whenClauses); - zephir_array_fetch_string(&_0, &expr, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1529); - zephir_is_iterable(&_0, 0, "phalcon/Mvc/Model/Query.zep", 1544); - if (Z_TYPE_P(&_0) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _1) - { - ZEPHIR_INIT_NVAR(&whenExpr); - ZVAL_COPY(&whenExpr, _1); - if (zephir_array_isset_string(&whenExpr, SL("right"))) { - ZEPHIR_INIT_NVAR(&_3$$4); - zephir_create_array(&_3$$4, 3, 0); - add_assoc_stringl_ex(&_3$$4, SL("type"), SL("when")); - zephir_array_fetch_string(&_5$$4, &whenExpr, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1533); - ZEPHIR_CALL_METHOD(&_4$$4, this_ptr, "getexpression", &_6, 456, &_5$$4); - zephir_check_call_status(); - zephir_array_update_string(&_3$$4, SL("expr"), &_4$$4, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_7$$4, &whenExpr, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1534); - ZEPHIR_CALL_METHOD(&_4$$4, this_ptr, "getexpression", &_6, 456, &_7$$4); - zephir_check_call_status(); - zephir_array_update_string(&_3$$4, SL("then"), &_4$$4, PH_COPY | PH_SEPARATE); - zephir_array_append(&whenClauses, &_3$$4, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1535); - } else { - ZEPHIR_INIT_NVAR(&_8$$5); - zephir_create_array(&_8$$5, 2, 0); - add_assoc_stringl_ex(&_8$$5, SL("type"), SL("else")); - zephir_array_fetch_string(&_10$$5, &whenExpr, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1539); - ZEPHIR_CALL_METHOD(&_9$$5, this_ptr, "getexpression", &_6, 456, &_10$$5); - zephir_check_call_status(); - zephir_array_update_string(&_8$$5, SL("expr"), &_9$$5, PH_COPY | PH_SEPARATE); - zephir_array_append(&whenClauses, &_8$$5, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1540); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_0); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlStatement"), &sqlStatement); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlVariables"), &bindParams); + zephir_update_property_zval(this_ptr, ZEND_STRL("sqlBindTypes"), &bindTypes); + ZEPHIR_INIT_VAR(&_2$$3); + ZVAL_STRING(&_2$$3, "db:beforeQuery"); + ZEPHIR_CALL_METHOD(&_1$$3, &eventsManager, "fire", NULL, 0, &_2$$3, this_ptr); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &_0, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { - break; - } - ZEPHIR_CALL_METHOD(&whenExpr, &_0, "current", NULL, 0); - zephir_check_call_status(); - if (zephir_array_isset_string(&whenExpr, SL("right"))) { - ZEPHIR_INIT_NVAR(&_11$$7); - zephir_create_array(&_11$$7, 3, 0); - add_assoc_stringl_ex(&_11$$7, SL("type"), SL("when")); - zephir_array_fetch_string(&_13$$7, &whenExpr, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1533); - ZEPHIR_CALL_METHOD(&_12$$7, this_ptr, "getexpression", &_6, 456, &_13$$7); - zephir_check_call_status(); - zephir_array_update_string(&_11$$7, SL("expr"), &_12$$7, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_14$$7, &whenExpr, SL("right"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1534); - ZEPHIR_CALL_METHOD(&_12$$7, this_ptr, "getexpression", &_6, 456, &_14$$7); - zephir_check_call_status(); - zephir_array_update_string(&_11$$7, SL("then"), &_12$$7, PH_COPY | PH_SEPARATE); - zephir_array_append(&whenClauses, &_11$$7, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1535); - } else { - ZEPHIR_INIT_NVAR(&_15$$8); - zephir_create_array(&_15$$8, 2, 0); - add_assoc_stringl_ex(&_15$$8, SL("type"), SL("else")); - zephir_array_fetch_string(&_17$$8, &whenExpr, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1539); - ZEPHIR_CALL_METHOD(&_16$$8, this_ptr, "getexpression", &_6, 456, &_17$$8); - zephir_check_call_status(); - zephir_array_update_string(&_15$$8, SL("expr"), &_16$$8, PH_COPY | PH_SEPARATE); - zephir_array_append(&whenClauses, &_15$$8, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 1540); - } - ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); - zephir_check_call_status(); + if (ZEPHIR_IS_FALSE_IDENTICAL(&_1$$3)) { + RETURN_MM_BOOL(0); } } - ZEPHIR_INIT_NVAR(&whenExpr); - zephir_create_array(return_value, 3, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("case")); - zephir_array_fetch_string(&_19, &expr, SL("left"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1546); - ZEPHIR_CALL_METHOD(&_18, this_ptr, "getexpression", &_6, 456, &_19); + if (!(ZEPHIR_IS_EMPTY(&bindParams))) { + ZEPHIR_CPY_WRT(¶ms, &bindParams); + ZEPHIR_CPY_WRT(&types, &bindTypes); + } else { + ZEPHIR_INIT_NVAR(¶ms); + array_init(¶ms); + ZEPHIR_INIT_NVAR(&types); + array_init(&types); + } + zephir_read_property(&_0, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&statement, &_0, "prepare", NULL, 0, &sqlStatement); zephir_check_call_status(); - zephir_array_update_string(return_value, SL("expr"), &_18, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("when-clauses"), &whenClauses, PH_COPY | PH_SEPARATE); - RETURN_MM(); + if (UNEXPECTED(Z_TYPE_P(&statement) != IS_OBJECT)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "Cannot prepare statement", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 720); + return; + } + ZEPHIR_CALL_METHOD(NULL, this_ptr, "preparerealsql", NULL, 0, &sqlStatement, &bindParams); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_3, this_ptr, "executeprepared", NULL, 0, &statement, ¶ms, &types); + zephir_check_call_status(); + ZEPHIR_CPY_WRT(&statement, &_3); + if (Z_TYPE_P(&statement) == IS_OBJECT) { + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_4$$9); + ZVAL_STRING(&_4$$9, "db:afterQuery"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_4$$9, this_ptr); + zephir_check_call_status(); + } + object_init_ex(return_value, phalcon_db_result_pdoresult_ce); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 39, this_ptr, &statement, &sqlStatement, &bindParams, &bindTypes); + zephir_check_call_status(); + RETURN_MM(); + } + RETURN_CCTOR(&statement); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getExpression) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, rollback) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zend_bool quoting, tempNotQuoting = 0; - zval *expr_param = NULL, *quoting_param = NULL, exprType, exprLeft, exprRight, left, right, listItems, exprListItem, exprReturn, value, escapedValue, exprValue, valueParts, name, bindType, bind, _0$$5, _1$$6, _2$$8, _3$$9, _4$$10, _5$$11, _6$$12, _7$$13, _8$$14, _9$$16, _10$$17, _11$$18, _12$$19, _13$$20, _14$$21, _15$$22, _16$$23, _17$$24, _18$$25, _19$$25, _20$$26, _21$$27, _22$$28, _23$$33, _24$$33, _25$$33, _26$$33, _27$$33, _28$$34, _29$$34, _30$$34, _31$$37, _32$$37, _33$$37, _34$$38, _35$$38, _36$$38, _37$$39, _38$$39, _39$$39, _40$$40, _41$$40, _42$$40, _43$$41, _44$$41, _45$$41, _46$$42, _47$$42, _48$$42, _49$$43, _56$$43, _57$$43, _50$$44, _51$$44, _52$$45, _53$$45, _54$$46, _55$$46, _58$$47, _59$$47, _60$$48, _61$$48, _62$$49, _63$$50, _64$$51, _65$$52, _66$$53, _67$$54, _68$$55, _69$$56, _70$$57, _71$$58, _72$$59, _73$$60, _74$$61, _75$$62, _76$$63, _77$$64, _78$$65, _79$$66, _80$$66, _81$$69, _82$$69, _83$$69, _84$$70, _85$$70, *_86$$72, _87$$72, _88$$73, _89$$74; - zval expr; + zend_long ZEPHIR_LAST_CALL_STATUS, transactionLevel = 0; + zval *nesting_param = NULL, eventsManager, savepointName, _0, _5, _6, _1$$4, _2$$5, _7$$8; + zend_bool nesting, _3, _4; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&exprType); - ZVAL_UNDEF(&exprLeft); - ZVAL_UNDEF(&exprRight); - ZVAL_UNDEF(&left); - ZVAL_UNDEF(&right); - ZVAL_UNDEF(&listItems); - ZVAL_UNDEF(&exprListItem); - ZVAL_UNDEF(&exprReturn); - ZVAL_UNDEF(&value); - ZVAL_UNDEF(&escapedValue); - ZVAL_UNDEF(&exprValue); - ZVAL_UNDEF(&valueParts); - ZVAL_UNDEF(&name); - ZVAL_UNDEF(&bindType); - ZVAL_UNDEF(&bind); - ZVAL_UNDEF(&_0$$5); - ZVAL_UNDEF(&_1$$6); - ZVAL_UNDEF(&_2$$8); - ZVAL_UNDEF(&_3$$9); - ZVAL_UNDEF(&_4$$10); - ZVAL_UNDEF(&_5$$11); - ZVAL_UNDEF(&_6$$12); - ZVAL_UNDEF(&_7$$13); - ZVAL_UNDEF(&_8$$14); - ZVAL_UNDEF(&_9$$16); - ZVAL_UNDEF(&_10$$17); - ZVAL_UNDEF(&_11$$18); - ZVAL_UNDEF(&_12$$19); - ZVAL_UNDEF(&_13$$20); - ZVAL_UNDEF(&_14$$21); - ZVAL_UNDEF(&_15$$22); - ZVAL_UNDEF(&_16$$23); - ZVAL_UNDEF(&_17$$24); - ZVAL_UNDEF(&_18$$25); - ZVAL_UNDEF(&_19$$25); - ZVAL_UNDEF(&_20$$26); - ZVAL_UNDEF(&_21$$27); - ZVAL_UNDEF(&_22$$28); - ZVAL_UNDEF(&_23$$33); - ZVAL_UNDEF(&_24$$33); - ZVAL_UNDEF(&_25$$33); - ZVAL_UNDEF(&_26$$33); - ZVAL_UNDEF(&_27$$33); - ZVAL_UNDEF(&_28$$34); - ZVAL_UNDEF(&_29$$34); - ZVAL_UNDEF(&_30$$34); - ZVAL_UNDEF(&_31$$37); - ZVAL_UNDEF(&_32$$37); - ZVAL_UNDEF(&_33$$37); - ZVAL_UNDEF(&_34$$38); - ZVAL_UNDEF(&_35$$38); - ZVAL_UNDEF(&_36$$38); - ZVAL_UNDEF(&_37$$39); - ZVAL_UNDEF(&_38$$39); - ZVAL_UNDEF(&_39$$39); - ZVAL_UNDEF(&_40$$40); - ZVAL_UNDEF(&_41$$40); - ZVAL_UNDEF(&_42$$40); - ZVAL_UNDEF(&_43$$41); - ZVAL_UNDEF(&_44$$41); - ZVAL_UNDEF(&_45$$41); - ZVAL_UNDEF(&_46$$42); - ZVAL_UNDEF(&_47$$42); - ZVAL_UNDEF(&_48$$42); - ZVAL_UNDEF(&_49$$43); - ZVAL_UNDEF(&_56$$43); - ZVAL_UNDEF(&_57$$43); - ZVAL_UNDEF(&_50$$44); - ZVAL_UNDEF(&_51$$44); - ZVAL_UNDEF(&_52$$45); - ZVAL_UNDEF(&_53$$45); - ZVAL_UNDEF(&_54$$46); - ZVAL_UNDEF(&_55$$46); - ZVAL_UNDEF(&_58$$47); - ZVAL_UNDEF(&_59$$47); - ZVAL_UNDEF(&_60$$48); - ZVAL_UNDEF(&_61$$48); - ZVAL_UNDEF(&_62$$49); - ZVAL_UNDEF(&_63$$50); - ZVAL_UNDEF(&_64$$51); - ZVAL_UNDEF(&_65$$52); - ZVAL_UNDEF(&_66$$53); - ZVAL_UNDEF(&_67$$54); - ZVAL_UNDEF(&_68$$55); - ZVAL_UNDEF(&_69$$56); - ZVAL_UNDEF(&_70$$57); - ZVAL_UNDEF(&_71$$58); - ZVAL_UNDEF(&_72$$59); - ZVAL_UNDEF(&_73$$60); - ZVAL_UNDEF(&_74$$61); - ZVAL_UNDEF(&_75$$62); - ZVAL_UNDEF(&_76$$63); - ZVAL_UNDEF(&_77$$64); - ZVAL_UNDEF(&_78$$65); - ZVAL_UNDEF(&_79$$66); - ZVAL_UNDEF(&_80$$66); - ZVAL_UNDEF(&_81$$69); - ZVAL_UNDEF(&_82$$69); - ZVAL_UNDEF(&_83$$69); - ZVAL_UNDEF(&_84$$70); - ZVAL_UNDEF(&_85$$70); - ZVAL_UNDEF(&_87$$72); - ZVAL_UNDEF(&_88$$73); - ZVAL_UNDEF(&_89$$74); + ZVAL_UNDEF(&eventsManager); + ZVAL_UNDEF(&savepointName); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_6); + ZVAL_UNDEF(&_1$$4); + ZVAL_UNDEF(&_2$$5); + ZVAL_UNDEF(&_7$$8); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ARRAY(expr) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_BOOL(quoting) + Z_PARAM_BOOL(nesting) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 1, &expr_param, "ing_param); - zephir_get_arrval(&expr, expr_param); - if (!quoting_param) { - quoting = 1; + zephir_fetch_params(1, 0, 1, &nesting_param); + if (!nesting_param) { + nesting = 1; } else { - quoting = zephir_get_boolval(quoting_param); + nesting = zephir_get_boolval(nesting_param); } - ZEPHIR_INIT_VAR(&left); - ZVAL_NULL(&left); - ZEPHIR_INIT_VAR(&right); - ZVAL_NULL(&right); - ZEPHIR_OBS_VAR(&exprType); - if (zephir_array_isset_string_fetch(&exprType, &expr, SL("type"), 0)) { - tempNotQuoting = 1; - if (!ZEPHIR_IS_LONG(&exprType, 409)) { - ZEPHIR_OBS_VAR(&exprLeft); - if (zephir_array_isset_string_fetch(&exprLeft, &expr, SL("left"), 0)) { - if (tempNotQuoting) { - ZVAL_BOOL(&_0$$5, 1); - } else { - ZVAL_BOOL(&_0$$5, 0); - } - ZEPHIR_CALL_METHOD(&left, this_ptr, "getexpression", NULL, 456, &exprLeft, &_0$$5); - zephir_check_call_status(); - } - ZEPHIR_OBS_VAR(&exprRight); - if (zephir_array_isset_string_fetch(&exprRight, &expr, SL("right"), 0)) { - if (tempNotQuoting) { - ZVAL_BOOL(&_1$$6, 1); - } else { - ZVAL_BOOL(&_1$$6, 0); - } - ZEPHIR_CALL_METHOD(&right, this_ptr, "getexpression", NULL, 456, &exprRight, &_1$$6); - zephir_check_call_status(); - } + ZEPHIR_OBS_VAR(&_0); + zephir_read_property(&_0, this_ptr, ZEND_STRL("transactionLevel"), PH_NOISY_CC); + transactionLevel = zephir_get_intval(&_0); + if (UNEXPECTED(!transactionLevel)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "There is no active transaction", "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 759); + return; + } + if (transactionLevel == 1) { + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_1$$4); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_2$$5); + ZVAL_STRING(&_2$$5, "db:rollbackTransaction"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_2$$5, this_ptr); + zephir_check_call_status(); } - do { - if (ZEPHIR_IS_LONG(&exprType, '<')) { - ZEPHIR_INIT_VAR(&exprReturn); - zephir_create_array(&exprReturn, 4, 0); - add_assoc_stringl_ex(&exprReturn, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&exprReturn, SL("op"), SL("<")); - zephir_array_update_string(&exprReturn, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&exprReturn, SL("right"), &right, PH_COPY | PH_SEPARATE); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '=')) { - ZEPHIR_INIT_VAR(&_2$$8); - zephir_create_array(&_2$$8, 4, 0); - add_assoc_stringl_ex(&_2$$8, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_2$$8, SL("op"), SL("=")); - zephir_array_update_string(&_2$$8, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_2$$8, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_2$$8); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '>')) { - ZEPHIR_INIT_VAR(&_3$$9); - zephir_create_array(&_3$$9, 4, 0); - add_assoc_stringl_ex(&_3$$9, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_3$$9, SL("op"), SL(">")); - zephir_array_update_string(&_3$$9, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_3$$9, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_3$$9); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 270)) { - ZEPHIR_INIT_VAR(&_4$$10); - zephir_create_array(&_4$$10, 4, 0); - add_assoc_stringl_ex(&_4$$10, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_4$$10, SL("op"), SL("<>")); - zephir_array_update_string(&_4$$10, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_4$$10, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_4$$10); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 271)) { - ZEPHIR_INIT_VAR(&_5$$11); - zephir_create_array(&_5$$11, 4, 0); - add_assoc_stringl_ex(&_5$$11, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_5$$11, SL("op"), SL("<=")); - zephir_array_update_string(&_5$$11, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_5$$11, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_5$$11); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 272)) { - ZEPHIR_INIT_VAR(&_6$$12); - zephir_create_array(&_6$$12, 4, 0); - add_assoc_stringl_ex(&_6$$12, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_6$$12, SL("op"), SL(">=")); - zephir_array_update_string(&_6$$12, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_6$$12, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_6$$12); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 266)) { - ZEPHIR_INIT_VAR(&_7$$13); - zephir_create_array(&_7$$13, 4, 0); - add_assoc_stringl_ex(&_7$$13, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_7$$13, SL("op"), SL("AND")); - zephir_array_update_string(&_7$$13, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_7$$13, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_7$$13); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 267)) { - ZEPHIR_INIT_VAR(&_8$$14); - zephir_create_array(&_8$$14, 4, 0); - add_assoc_stringl_ex(&_8$$14, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_8$$14, SL("op"), SL("OR")); - zephir_array_update_string(&_8$$14, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_8$$14, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_8$$14); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 355)) { - ZEPHIR_CALL_METHOD(&exprReturn, this_ptr, "getqualified", NULL, 457, &expr); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '+')) { - ZEPHIR_INIT_VAR(&_9$$16); - zephir_create_array(&_9$$16, 4, 0); - add_assoc_stringl_ex(&_9$$16, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_9$$16, SL("op"), SL("+")); - zephir_array_update_string(&_9$$16, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_9$$16, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_9$$16); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '-')) { - ZEPHIR_INIT_VAR(&_10$$17); - zephir_create_array(&_10$$17, 4, 0); - add_assoc_stringl_ex(&_10$$17, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_10$$17, SL("op"), SL("-")); - zephir_array_update_string(&_10$$17, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_10$$17, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_10$$17); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '*')) { - ZEPHIR_INIT_VAR(&_11$$18); - zephir_create_array(&_11$$18, 4, 0); - add_assoc_stringl_ex(&_11$$18, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_11$$18, SL("op"), SL("*")); - zephir_array_update_string(&_11$$18, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_11$$18, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_11$$18); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '/')) { - ZEPHIR_INIT_VAR(&_12$$19); - zephir_create_array(&_12$$19, 4, 0); - add_assoc_stringl_ex(&_12$$19, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_12$$19, SL("op"), SL("/")); - zephir_array_update_string(&_12$$19, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_12$$19, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_12$$19); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '%')) { - ZEPHIR_INIT_VAR(&_13$$20); - zephir_create_array(&_13$$20, 4, 0); - add_assoc_stringl_ex(&_13$$20, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_13$$20, SL("op"), SL("%")); - zephir_array_update_string(&_13$$20, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_13$$20, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_13$$20); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '&')) { - ZEPHIR_INIT_VAR(&_14$$21); - zephir_create_array(&_14$$21, 4, 0); - add_assoc_stringl_ex(&_14$$21, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_14$$21, SL("op"), SL("&")); - zephir_array_update_string(&_14$$21, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_14$$21, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_14$$21); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '|')) { - ZEPHIR_INIT_VAR(&_15$$22); - zephir_create_array(&_15$$22, 4, 0); - add_assoc_stringl_ex(&_15$$22, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_15$$22, SL("op"), SL("|")); - zephir_array_update_string(&_15$$22, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_15$$22, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_15$$22); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 356) || ZEPHIR_IS_LONG(&exprType, 407)) { - ZEPHIR_INIT_VAR(&_16$$23); - zephir_create_array(&_16$$23, 2, 0); - add_assoc_stringl_ex(&_16$$23, SL("type"), SL("parentheses")); - zephir_array_update_string(&_16$$23, SL("left"), &left, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_16$$23); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 367)) { - ZEPHIR_INIT_VAR(&_17$$24); - zephir_create_array(&_17$$24, 3, 0); - add_assoc_stringl_ex(&_17$$24, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_17$$24, SL("op"), SL("-")); - zephir_array_update_string(&_17$$24, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_17$$24); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 258) || ZEPHIR_IS_LONG(&exprType, 259) || ZEPHIR_IS_LONG(&exprType, 414)) { - ZEPHIR_INIT_VAR(&_18$$25); - zephir_create_array(&_18$$25, 2, 0); - add_assoc_stringl_ex(&_18$$25, SL("type"), SL("literal")); - ZEPHIR_OBS_VAR(&_19$$25); - zephir_array_fetch_string(&_19$$25, &expr, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1762); - zephir_array_update_string(&_18$$25, SL("value"), &_19$$25, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_18$$25); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 334)) { - ZEPHIR_INIT_VAR(&_20$$26); - zephir_create_array(&_20$$26, 2, 0); - add_assoc_stringl_ex(&_20$$26, SL("type"), SL("literal")); - add_assoc_stringl_ex(&_20$$26, SL("value"), SL("TRUE")); - ZEPHIR_CPY_WRT(&exprReturn, &_20$$26); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 335)) { - ZEPHIR_INIT_VAR(&_21$$27); - zephir_create_array(&_21$$27, 2, 0); - add_assoc_stringl_ex(&_21$$27, SL("type"), SL("literal")); - add_assoc_stringl_ex(&_21$$27, SL("value"), SL("FALSE")); - ZEPHIR_CPY_WRT(&exprReturn, &_21$$27); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 260)) { - ZEPHIR_OBS_VAR(&value); - zephir_array_fetch_string(&value, &expr, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1783); - if (quoting) { - if (zephir_memnstr_str(&value, SL("'"), "phalcon/Mvc/Model/Query.zep", 1790)) { - ZEPHIR_INIT_VAR(&escapedValue); - phalcon_orm_singlequotes(&escapedValue, &value); - } else { - ZEPHIR_CPY_WRT(&escapedValue, &value); - } - ZEPHIR_INIT_VAR(&exprValue); - ZEPHIR_CONCAT_SVS(&exprValue, "'", &escapedValue, "'"); - } else { - ZEPHIR_CPY_WRT(&exprValue, &value); - } - ZEPHIR_INIT_VAR(&_22$$28); - zephir_create_array(&_22$$28, 2, 0); - add_assoc_stringl_ex(&_22$$28, SL("type"), SL("literal")); - zephir_array_update_string(&_22$$28, SL("value"), &exprValue, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_22$$28); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 273)) { - ZEPHIR_INIT_VAR(&_23$$33); - zephir_create_array(&_23$$33, 2, 0); - add_assoc_stringl_ex(&_23$$33, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_24$$33); - zephir_array_fetch_string(&_25$$33, &expr, SL("value"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1811); - ZEPHIR_INIT_VAR(&_26$$33); - ZVAL_STRING(&_26$$33, "?"); - ZEPHIR_INIT_VAR(&_27$$33); - ZVAL_STRING(&_27$$33, ":"); - zephir_fast_str_replace(&_24$$33, &_26$$33, &_27$$33, &_25$$33); - zephir_array_update_string(&_23$$33, SL("value"), &_24$$33, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_23$$33); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 274)) { - ZEPHIR_INIT_VAR(&_28$$34); - zephir_create_array(&_28$$34, 2, 0); - add_assoc_stringl_ex(&_28$$34, SL("type"), SL("placeholder")); - zephir_array_fetch_string(&_29$$34, &expr, SL("value"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 1820); - ZEPHIR_INIT_VAR(&_30$$34); - ZEPHIR_CONCAT_SV(&_30$$34, ":", &_29$$34); - zephir_array_update_string(&_28$$34, SL("value"), &_30$$34, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_28$$34); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 277)) { - ZEPHIR_OBS_NVAR(&value); - zephir_array_fetch_string(&value, &expr, SL("value"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1825); - if (zephir_memnstr_str(&value, SL(":"), "phalcon/Mvc/Model/Query.zep", 1827)) { - ZEPHIR_INIT_VAR(&valueParts); - zephir_fast_explode_str(&valueParts, SL(":"), &value, LONG_MAX); - ZEPHIR_OBS_VAR(&name); - zephir_array_fetch_long(&name, &valueParts, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1829); - ZEPHIR_OBS_VAR(&bindType); - zephir_array_fetch_long(&bindType, &valueParts, 1, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 1830); - do { - if (ZEPHIR_IS_STRING(&bindType, "str")) { - ZEPHIR_INIT_VAR(&_31$$37); - ZVAL_LONG(&_31$$37, 2); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_31$$37); - ZEPHIR_INIT_VAR(&_32$$37); - zephir_create_array(&_32$$37, 2, 0); - add_assoc_stringl_ex(&_32$$37, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_33$$37); - ZEPHIR_CONCAT_SV(&_33$$37, ":", &name); - zephir_array_update_string(&_32$$37, SL("value"), &_33$$37, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_32$$37); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "int")) { - ZEPHIR_INIT_VAR(&_34$$38); - ZVAL_LONG(&_34$$38, 1); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_34$$38); - ZEPHIR_INIT_VAR(&_35$$38); - zephir_create_array(&_35$$38, 2, 0); - add_assoc_stringl_ex(&_35$$38, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_36$$38); - ZEPHIR_CONCAT_SV(&_36$$38, ":", &name); - zephir_array_update_string(&_35$$38, SL("value"), &_36$$38, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_35$$38); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "double")) { - ZEPHIR_INIT_VAR(&_37$$39); - ZVAL_LONG(&_37$$39, 32); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_37$$39); - ZEPHIR_INIT_VAR(&_38$$39); - zephir_create_array(&_38$$39, 2, 0); - add_assoc_stringl_ex(&_38$$39, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_39$$39); - ZEPHIR_CONCAT_SV(&_39$$39, ":", &name); - zephir_array_update_string(&_38$$39, SL("value"), &_39$$39, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_38$$39); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "bool")) { - ZEPHIR_INIT_VAR(&_40$$40); - ZVAL_LONG(&_40$$40, 5); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_40$$40); - ZEPHIR_INIT_VAR(&_41$$40); - zephir_create_array(&_41$$40, 2, 0); - add_assoc_stringl_ex(&_41$$40, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_42$$40); - ZEPHIR_CONCAT_SV(&_42$$40, ":", &name); - zephir_array_update_string(&_41$$40, SL("value"), &_42$$40, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_41$$40); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "blob")) { - ZEPHIR_INIT_VAR(&_43$$41); - ZVAL_LONG(&_43$$41, 3); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_43$$41); - ZEPHIR_INIT_VAR(&_44$$41); - zephir_create_array(&_44$$41, 2, 0); - add_assoc_stringl_ex(&_44$$41, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_45$$41); - ZEPHIR_CONCAT_SV(&_45$$41, ":", &name); - zephir_array_update_string(&_44$$41, SL("value"), &_45$$41, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_44$$41); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "null")) { - ZEPHIR_INIT_VAR(&_46$$42); - ZVAL_LONG(&_46$$42, 0); - zephir_update_property_array(this_ptr, SL("bindTypes"), &name, &_46$$42); - ZEPHIR_INIT_VAR(&_47$$42); - zephir_create_array(&_47$$42, 2, 0); - add_assoc_stringl_ex(&_47$$42, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_48$$42); - ZEPHIR_CONCAT_SV(&_48$$42, ":", &name); - zephir_array_update_string(&_47$$42, SL("value"), &_48$$42, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_47$$42); - break; - } - if (ZEPHIR_IS_STRING(&bindType, "array") || ZEPHIR_IS_STRING(&bindType, "array-str") || ZEPHIR_IS_STRING(&bindType, "array-int")) { - ZEPHIR_OBS_VAR(&bind); - zephir_read_property(&_49$$43, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); - if (UNEXPECTED(!(zephir_array_isset_fetch(&bind, &_49$$43, &name, 0)))) { - ZEPHIR_INIT_VAR(&_50$$44); - object_init_ex(&_50$$44, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_51$$44); - ZEPHIR_CONCAT_SV(&_51$$44, "Bind value is required for array type placeholder: ", &name); - ZEPHIR_CALL_METHOD(NULL, &_50$$44, "__construct", NULL, 29, &_51$$44); - zephir_check_call_status(); - zephir_throw_exception_debug(&_50$$44, "phalcon/Mvc/Model/Query.zep", 1900); - ZEPHIR_MM_RESTORE(); - return; - } - if (UNEXPECTED(Z_TYPE_P(&bind) != IS_ARRAY)) { - ZEPHIR_INIT_VAR(&_52$$45); - object_init_ex(&_52$$45, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_53$$45); - ZEPHIR_CONCAT_SV(&_53$$45, "Bind type requires an array in placeholder: ", &name); - ZEPHIR_CALL_METHOD(NULL, &_52$$45, "__construct", NULL, 29, &_53$$45); - zephir_check_call_status(); - zephir_throw_exception_debug(&_52$$45, "phalcon/Mvc/Model/Query.zep", 1906); - ZEPHIR_MM_RESTORE(); - return; - } - if (UNEXPECTED(zephir_fast_count_int(&bind) < 1)) { - ZEPHIR_INIT_VAR(&_54$$46); - object_init_ex(&_54$$46, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_55$$46); - ZEPHIR_CONCAT_SV(&_55$$46, "At least one value must be bound in placeholder: ", &name); - ZEPHIR_CALL_METHOD(NULL, &_54$$46, "__construct", NULL, 29, &_55$$46); - zephir_check_call_status(); - zephir_throw_exception_debug(&_54$$46, "phalcon/Mvc/Model/Query.zep", 1912); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_VAR(&_56$$43); - zephir_create_array(&_56$$43, 4, 0); - add_assoc_stringl_ex(&_56$$43, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_57$$43); - ZEPHIR_CONCAT_SV(&_57$$43, ":", &name); - zephir_array_update_string(&_56$$43, SL("value"), &_57$$43, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_56$$43, SL("rawValue"), &name, PH_COPY | PH_SEPARATE); - add_assoc_long_ex(&_56$$43, SL("times"), zephir_fast_count_int(&bind)); - ZEPHIR_CPY_WRT(&exprReturn, &_56$$43); - break; - } - ZEPHIR_INIT_VAR(&_58$$47); - object_init_ex(&_58$$47, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_59$$47); - ZEPHIR_CONCAT_SV(&_59$$47, "Unknown bind type: ", &bindType); - ZEPHIR_CALL_METHOD(NULL, &_58$$47, "__construct", NULL, 29, &_59$$47); - zephir_check_call_status(); - zephir_throw_exception_debug(&_58$$47, "phalcon/Mvc/Model/Query.zep", 1927); - ZEPHIR_MM_RESTORE(); - return; - } while(0); - - } else { - ZEPHIR_INIT_VAR(&_60$$48); - zephir_create_array(&_60$$48, 2, 0); - add_assoc_stringl_ex(&_60$$48, SL("type"), SL("placeholder")); - ZEPHIR_INIT_VAR(&_61$$48); - ZEPHIR_CONCAT_SV(&_61$$48, ":", &value); - zephir_array_update_string(&_60$$48, SL("value"), &_61$$48, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_60$$48); - } - break; - } - if (ZEPHIR_IS_LONG(&exprType, 322)) { - ZEPHIR_INIT_VAR(&_62$$49); - zephir_create_array(&_62$$49, 2, 0); - add_assoc_stringl_ex(&_62$$49, SL("type"), SL("literal")); - add_assoc_stringl_ex(&_62$$49, SL("value"), SL("NULL")); - ZEPHIR_CPY_WRT(&exprReturn, &_62$$49); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 268)) { - ZEPHIR_INIT_VAR(&_63$$50); - zephir_create_array(&_63$$50, 4, 0); - add_assoc_stringl_ex(&_63$$50, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_63$$50, SL("op"), SL("LIKE")); - zephir_array_update_string(&_63$$50, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_63$$50, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_63$$50); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 351)) { - ZEPHIR_INIT_VAR(&_64$$51); - zephir_create_array(&_64$$51, 4, 0); - add_assoc_stringl_ex(&_64$$51, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_64$$51, SL("op"), SL("NOT LIKE")); - zephir_array_update_string(&_64$$51, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_64$$51, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_64$$51); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 275)) { - ZEPHIR_INIT_VAR(&_65$$52); - zephir_create_array(&_65$$52, 4, 0); - add_assoc_stringl_ex(&_65$$52, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_65$$52, SL("op"), SL("ILIKE")); - zephir_array_update_string(&_65$$52, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_65$$52, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_65$$52); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 357)) { - ZEPHIR_INIT_VAR(&_66$$53); - zephir_create_array(&_66$$53, 4, 0); - add_assoc_stringl_ex(&_66$$53, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_66$$53, SL("op"), SL("NOT ILIKE")); - zephir_array_update_string(&_66$$53, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_66$$53, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_66$$53); - break; - } - if (ZEPHIR_IS_LONG(&exprType, '!')) { - ZEPHIR_INIT_VAR(&_67$$54); - zephir_create_array(&_67$$54, 3, 0); - add_assoc_stringl_ex(&_67$$54, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_67$$54, SL("op"), SL("NOT ")); - zephir_array_update_string(&_67$$54, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_67$$54); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 365)) { - ZEPHIR_INIT_VAR(&_68$$55); - zephir_create_array(&_68$$55, 3, 0); - add_assoc_stringl_ex(&_68$$55, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_68$$55, SL("op"), SL(" IS NULL")); - zephir_array_update_string(&_68$$55, SL("left"), &left, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_68$$55); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 366)) { - ZEPHIR_INIT_VAR(&_69$$56); - zephir_create_array(&_69$$56, 3, 0); - add_assoc_stringl_ex(&_69$$56, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_69$$56, SL("op"), SL(" IS NOT NULL")); - zephir_array_update_string(&_69$$56, SL("left"), &left, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_69$$56); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 315)) { - ZEPHIR_INIT_VAR(&_70$$57); - zephir_create_array(&_70$$57, 4, 0); - add_assoc_stringl_ex(&_70$$57, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_70$$57, SL("op"), SL("IN")); - zephir_array_update_string(&_70$$57, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_70$$57, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_70$$57); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 323)) { - ZEPHIR_INIT_VAR(&_71$$58); - zephir_create_array(&_71$$58, 4, 0); - add_assoc_stringl_ex(&_71$$58, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_71$$58, SL("op"), SL("NOT IN")); - zephir_array_update_string(&_71$$58, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_71$$58, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_71$$58); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 408)) { - ZEPHIR_INIT_VAR(&_72$$59); - zephir_create_array(&_72$$59, 3, 0); - add_assoc_stringl_ex(&_72$$59, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_72$$59, SL("op"), SL("EXISTS")); - zephir_array_update_string(&_72$$59, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_72$$59); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 330)) { - ZEPHIR_INIT_VAR(&_73$$60); - zephir_create_array(&_73$$60, 3, 0); - add_assoc_stringl_ex(&_73$$60, SL("type"), SL("unary-op")); - add_assoc_stringl_ex(&_73$$60, SL("op"), SL("DISTINCT ")); - zephir_array_update_string(&_73$$60, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_73$$60); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 332)) { - ZEPHIR_INIT_VAR(&_74$$61); - zephir_create_array(&_74$$61, 4, 0); - add_assoc_stringl_ex(&_74$$61, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_74$$61, SL("op"), SL("BETWEEN NOT")); - zephir_array_update_string(&_74$$61, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_74$$61, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_74$$61); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 331)) { - ZEPHIR_INIT_VAR(&_75$$62); - zephir_create_array(&_75$$62, 4, 0); - add_assoc_stringl_ex(&_75$$62, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_75$$62, SL("op"), SL("BETWEEN")); - zephir_array_update_string(&_75$$62, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_75$$62, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_75$$62); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 276)) { - ZEPHIR_INIT_VAR(&_76$$63); - zephir_create_array(&_76$$63, 4, 0); - add_assoc_stringl_ex(&_76$$63, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_76$$63, SL("op"), SL("AGAINST")); - zephir_array_update_string(&_76$$63, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_76$$63, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_76$$63); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 333)) { - ZEPHIR_INIT_VAR(&_77$$64); - zephir_create_array(&_77$$64, 3, 0); - add_assoc_stringl_ex(&_77$$64, SL("type"), SL("cast")); - zephir_array_update_string(&_77$$64, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_77$$64, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_77$$64); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 336)) { - ZEPHIR_INIT_VAR(&_78$$65); - zephir_create_array(&_78$$65, 3, 0); - add_assoc_stringl_ex(&_78$$65, SL("type"), SL("convert")); - zephir_array_update_string(&_78$$65, SL("left"), &left, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_78$$65, SL("right"), &right, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_78$$65); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 358)) { - ZEPHIR_INIT_VAR(&_79$$66); - zephir_create_array(&_79$$66, 2, 0); - add_assoc_stringl_ex(&_79$$66, SL("type"), SL("literal")); - ZEPHIR_OBS_VAR(&_80$$66); - zephir_array_fetch_string(&_80$$66, &expr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2103); - zephir_array_update_string(&_79$$66, SL("value"), &_80$$66, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_79$$66); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 350)) { - ZEPHIR_CALL_METHOD(&exprReturn, this_ptr, "getfunctioncall", NULL, 458, &expr); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 409)) { - ZEPHIR_CALL_METHOD(&exprReturn, this_ptr, "getcaseexpression", NULL, 459, &expr); - zephir_check_call_status(); - break; - } - if (ZEPHIR_IS_LONG(&exprType, 309)) { - ZEPHIR_INIT_VAR(&_81$$69); - zephir_create_array(&_81$$69, 2, 0); - add_assoc_stringl_ex(&_81$$69, SL("type"), SL("select")); - ZVAL_BOOL(&_83$$69, 1); - ZEPHIR_CALL_METHOD(&_82$$69, this_ptr, "_prepareselect", NULL, 448, &expr, &_83$$69); - zephir_check_call_status(); - zephir_array_update_string(&_81$$69, SL("value"), &_82$$69, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&exprReturn, &_81$$69); - break; - } - ZEPHIR_INIT_VAR(&_84$$70); - object_init_ex(&_84$$70, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_85$$70); - ZEPHIR_CONCAT_SV(&_85$$70, "Unknown expression type ", &exprType); - ZEPHIR_CALL_METHOD(NULL, &_84$$70, "__construct", NULL, 29, &_85$$70); - zephir_check_call_status(); - zephir_throw_exception_debug(&_84$$70, "phalcon/Mvc/Model/Query.zep", 2126); - ZEPHIR_MM_RESTORE(); - return; - } while(0); - - RETURN_CCTOR(&exprReturn); - } - if (zephir_array_isset_string(&expr, SL("domain"))) { - ZEPHIR_RETURN_CALL_METHOD(this_ptr, "getqualified", NULL, 457, &expr); + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); + zephir_read_property(&_1$$4, this_ptr, ZEND_STRL("pdo"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_RETURN_CALL_METHOD(&_1$$4, "rollback", NULL, 0); zephir_check_call_status(); RETURN_MM(); } - if (zephir_array_isset_long(&expr, 0)) { - ZEPHIR_INIT_VAR(&listItems); - array_init(&listItems); - zephir_is_iterable(&expr, 0, "phalcon/Mvc/Model/Query.zep", 2149); - if (Z_TYPE_P(&expr) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&expr), _86$$72) - { - ZEPHIR_INIT_NVAR(&exprListItem); - ZVAL_COPY(&exprListItem, _86$$72); - ZEPHIR_CALL_METHOD(&_88$$73, this_ptr, "getexpression", NULL, 456, &exprListItem); - zephir_check_call_status(); - zephir_array_append(&listItems, &_88$$73, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2146); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &expr, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_87$$72, &expr, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_87$$72)) { - break; - } - ZEPHIR_CALL_METHOD(&exprListItem, &expr, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_89$$74, this_ptr, "getexpression", NULL, 456, &exprListItem); - zephir_check_call_status(); - zephir_array_append(&listItems, &_89$$74, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2146); - ZEPHIR_CALL_METHOD(NULL, &expr, "next", NULL, 0); - zephir_check_call_status(); - } + _3 = !transactionLevel; + if (!(_3)) { + _3 = !nesting; + } + _4 = _3; + if (!(_4)) { + ZEPHIR_CALL_METHOD(&_5, this_ptr, "isnestedtransactionswithsavepoints", NULL, 0); + zephir_check_call_status(); + _4 = !zephir_is_true(&_5); + } + if (_4) { + if (transactionLevel > 0) { + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); } - ZEPHIR_INIT_NVAR(&exprListItem); - zephir_create_array(return_value, 2, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("list")); - zephir_array_fast_append(return_value, &listItems); - RETURN_MM(); + RETURN_MM_BOOL(0); } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Unknown expression", "phalcon/Mvc/Model/Query.zep", 2155); - return; + ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL, 0); + zephir_check_call_status(); + zephir_read_property(&_6, this_ptr, ZEND_STRL("eventsManager"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&eventsManager, &_6); + if (Z_TYPE_P(&eventsManager) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_7$$8); + ZVAL_STRING(&_7$$8, "db:rollbackSavepoint"); + ZEPHIR_CALL_METHOD(NULL, &eventsManager, "fire", NULL, 0, &_7$$8, this_ptr, &savepointName); + zephir_check_call_status(); + } + RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel"))); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rollbacksavepoint", NULL, 0, &savepointName); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getFunctionCall) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, getDsnDefaults) { - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, distinct = 0; - zval *expr_param = NULL, arguments, argument, _10, *_0$$6, _1$$6, _2$$7, _4$$8, _5$$9, _6$$9, _7$$10, _8$$10, _9$$11; - zval expr, functionArgs; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&functionArgs); - ZVAL_UNDEF(&arguments); - ZVAL_UNDEF(&argument); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_1$$6); - ZVAL_UNDEF(&_2$$7); - ZVAL_UNDEF(&_4$$8); - ZVAL_UNDEF(&_5$$9); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_7$$10); - ZVAL_UNDEF(&_8$$10); - ZVAL_UNDEF(&_9$$11); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(expr) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &expr_param); - ZEPHIR_OBS_COPY_OR_DUP(&expr, expr_param); - - - ZEPHIR_OBS_VAR(&arguments); - if (zephir_array_isset_string_fetch(&arguments, &expr, SL("arguments"), 0)) { - if (zephir_array_isset_string(&expr, SL("distinct"))) { - distinct = 1; - } else { - distinct = 0; - } - if (zephir_array_isset_long(&arguments, 0)) { - ZEPHIR_INIT_VAR(&functionArgs); - array_init(&functionArgs); - zephir_is_iterable(&arguments, 0, "phalcon/Mvc/Model/Query.zep", 2181); - if (Z_TYPE_P(&arguments) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&arguments), _0$$6) - { - ZEPHIR_INIT_NVAR(&argument); - ZVAL_COPY(&argument, _0$$6); - ZEPHIR_CALL_METHOD(&_2$$7, this_ptr, "getcallargument", &_3, 460, &argument); - zephir_check_call_status(); - zephir_array_append(&functionArgs, &_2$$7, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2179); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &arguments, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_1$$6, &arguments, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_1$$6)) { - break; - } - ZEPHIR_CALL_METHOD(&argument, &arguments, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4$$8, this_ptr, "getcallargument", &_3, 460, &argument); - zephir_check_call_status(); - zephir_array_append(&functionArgs, &_4$$8, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2179); - ZEPHIR_CALL_METHOD(NULL, &arguments, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&argument); - } else { - ZEPHIR_INIT_VAR(&_5$$9); - zephir_create_array(&_5$$9, 1, 0); - ZEPHIR_CALL_METHOD(&_6$$9, this_ptr, "getcallargument", &_3, 460, &arguments); - zephir_check_call_status(); - zephir_array_fast_append(&_5$$9, &_6$$9); - ZEPHIR_CPY_WRT(&functionArgs, &_5$$9); - } - if (distinct) { - zephir_create_array(return_value, 4, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("functionCall")); - ZEPHIR_OBS_VAR(&_7$$10); - zephir_array_fetch_string(&_7$$10, &expr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2191); - zephir_array_update_string(return_value, SL("name"), &_7$$10, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("arguments"), &functionArgs, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_8$$10); - ZVAL_LONG(&_8$$10, distinct); - zephir_array_update_string(return_value, SL("distinct"), &_8$$10, PH_COPY | PH_SEPARATE); - RETURN_MM(); - } else { - zephir_create_array(return_value, 3, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("functionCall")); - ZEPHIR_OBS_VAR(&_9$$11); - zephir_array_fetch_string(&_9$$11, &expr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2198); - zephir_array_update_string(return_value, SL("name"), &_9$$11, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("arguments"), &functionArgs, PH_COPY | PH_SEPARATE); - RETURN_MM(); - } - } - zephir_create_array(return_value, 2, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("functionCall")); - ZEPHIR_OBS_VAR(&_10); - zephir_array_fetch_string(&_10, &expr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2207); - zephir_array_update_string(return_value, SL("name"), &_10, PH_COPY | PH_SEPARATE); - RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getGroupClause) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_AbstractPdo, prepareRealSql) { + zend_string *_3$$3; + zend_ulong _2$$3; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *group_param = NULL, groupItem, *_0$$3, _1$$3, _2$$4, _4$$5, _5$$6, _6$$6; - zval group, groupParts; + zval parameters, keys, values; + zval *statement_param = NULL, *parameters_param = NULL, key, result, value, *_0$$3, _1$$3, _16$$3, _4$$5, _5$$6, _6$$7, _7$$8, _8$$8, _9$$9, _10$$11, _11$$12, _12$$13, _13$$14, _14$$14, _15$$15; + zval statement; zval *this_ptr = getThis(); - ZVAL_UNDEF(&group); - ZVAL_UNDEF(&groupParts); - ZVAL_UNDEF(&groupItem); + ZVAL_UNDEF(&statement); + ZVAL_UNDEF(&key); + ZVAL_UNDEF(&result); + ZVAL_UNDEF(&value); ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_16$$3); ZVAL_UNDEF(&_4$$5); ZVAL_UNDEF(&_5$$6); - ZVAL_UNDEF(&_6$$6); + ZVAL_UNDEF(&_6$$7); + ZVAL_UNDEF(&_7$$8); + ZVAL_UNDEF(&_8$$8); + ZVAL_UNDEF(&_9$$9); + ZVAL_UNDEF(&_10$$11); + ZVAL_UNDEF(&_11$$12); + ZVAL_UNDEF(&_12$$13); + ZVAL_UNDEF(&_13$$14); + ZVAL_UNDEF(&_14$$14); + ZVAL_UNDEF(&_15$$15); + ZVAL_UNDEF(¶meters); + ZVAL_UNDEF(&keys); + ZVAL_UNDEF(&values); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(group) + ZEND_PARSE_PARAMETERS_START(2, 2) + Z_PARAM_STR(statement) + Z_PARAM_ARRAY(parameters) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &group_param); - ZEPHIR_OBS_COPY_OR_DUP(&group, group_param); + zephir_fetch_params(1, 2, 0, &statement_param, ¶meters_param); + zephir_get_strval(&statement, statement_param); + zephir_get_arrval(¶meters, parameters_param); - if (zephir_array_isset_long(&group, 0)) { - ZEPHIR_INIT_VAR(&groupParts); - array_init(&groupParts); - zephir_is_iterable(&group, 0, "phalcon/Mvc/Model/Query.zep", 2227); - if (Z_TYPE_P(&group) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&group), _0$$3) + ZEPHIR_CPY_WRT(&result, &statement); + ZEPHIR_CPY_WRT(&values, ¶meters); + if (!(ZEPHIR_IS_EMPTY(¶meters))) { + ZEPHIR_INIT_VAR(&keys); + array_init(&keys); + zephir_is_iterable(¶meters, 0, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 848); + if (Z_TYPE_P(¶meters) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(¶meters), _2$$3, _3$$3, _0$$3) { - ZEPHIR_INIT_NVAR(&groupItem); - ZVAL_COPY(&groupItem, _0$$3); - ZEPHIR_CALL_METHOD(&_2$$4, this_ptr, "getexpression", &_3, 456, &groupItem); - zephir_check_call_status(); - zephir_array_append(&groupParts, &_2$$4, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2225); + ZEPHIR_INIT_NVAR(&key); + if (_3$$3 != NULL) { + ZVAL_STR_COPY(&key, _3$$3); + } else { + ZVAL_LONG(&key, _2$$3); + } + ZEPHIR_INIT_NVAR(&value); + ZVAL_COPY(&value, _0$$3); + if (Z_TYPE_P(&key) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_4$$5); + ZEPHIR_CONCAT_SVS(&_4$$5, "/:", &key, "/"); + zephir_array_append(&keys, &_4$$5, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 834); + } else { + ZEPHIR_INIT_NVAR(&_5$$6); + ZVAL_STRING(&_5$$6, "/[?]/"); + zephir_array_append(&keys, &_5$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 836); + } + if (Z_TYPE_P(&value) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_6$$7); + ZEPHIR_CONCAT_SVS(&_6$$7, "'", &value, "'"); + zephir_array_update_zval(&values, &key, &_6$$7, PH_COPY | PH_SEPARATE); + } else if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&_7$$8); + zephir_fast_join_str(&_7$$8, SL("','"), &value); + ZEPHIR_INIT_NVAR(&_8$$8); + ZEPHIR_CONCAT_SVS(&_8$$8, "'", &_7$$8, "'"); + zephir_array_update_zval(&values, &key, &_8$$8, PH_COPY | PH_SEPARATE); + } else if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_9$$9); + ZVAL_STRING(&_9$$9, "NULL"); + zephir_array_update_zval(&values, &key, &_9$$9, PH_COPY | PH_SEPARATE); + } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &group, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, ¶meters, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_1$$3, &group, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_1$$3, ¶meters, "valid", NULL, 0); zephir_check_call_status(); if (!zend_is_true(&_1$$3)) { break; } - ZEPHIR_CALL_METHOD(&groupItem, &group, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&key, ¶meters, "key", NULL, 0); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_4$$5, this_ptr, "getexpression", &_3, 456, &groupItem); - zephir_check_call_status(); - zephir_array_append(&groupParts, &_4$$5, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2225); - ZEPHIR_CALL_METHOD(NULL, &group, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&value, ¶meters, "current", NULL, 0); + zephir_check_call_status(); + if (Z_TYPE_P(&key) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_10$$11); + ZEPHIR_CONCAT_SVS(&_10$$11, "/:", &key, "/"); + zephir_array_append(&keys, &_10$$11, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 834); + } else { + ZEPHIR_INIT_NVAR(&_11$$12); + ZVAL_STRING(&_11$$12, "/[?]/"); + zephir_array_append(&keys, &_11$$12, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/AbstractPdo.zep", 836); + } + if (Z_TYPE_P(&value) == IS_STRING) { + ZEPHIR_INIT_NVAR(&_12$$13); + ZEPHIR_CONCAT_SVS(&_12$$13, "'", &value, "'"); + zephir_array_update_zval(&values, &key, &_12$$13, PH_COPY | PH_SEPARATE); + } else if (Z_TYPE_P(&value) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&_13$$14); + zephir_fast_join_str(&_13$$14, SL("','"), &value); + ZEPHIR_INIT_NVAR(&_14$$14); + ZEPHIR_CONCAT_SVS(&_14$$14, "'", &_13$$14, "'"); + zephir_array_update_zval(&values, &key, &_14$$14, PH_COPY | PH_SEPARATE); + } else if (Z_TYPE_P(&value) == IS_NULL) { + ZEPHIR_INIT_NVAR(&_15$$15); + ZVAL_STRING(&_15$$15, "NULL"); + zephir_array_update_zval(&values, &key, &_15$$15, PH_COPY | PH_SEPARATE); + } + ZEPHIR_CALL_METHOD(NULL, ¶meters, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&groupItem); - } else { - ZEPHIR_INIT_VAR(&_5$$6); - zephir_create_array(&_5$$6, 1, 0); - ZEPHIR_CALL_METHOD(&_6$$6, this_ptr, "getexpression", &_3, 456, &group); + ZEPHIR_INIT_NVAR(&value); + ZEPHIR_INIT_NVAR(&key); + ZVAL_LONG(&_16$$3, 1); + ZEPHIR_CALL_FUNCTION(&result, "preg_replace", NULL, 37, &keys, &values, &statement, &_16$$3); zephir_check_call_status(); - zephir_array_fast_append(&_5$$6, &_6$$6); - ZEPHIR_CPY_WRT(&groupParts, &_5$$6); } - RETURN_CTOR(&groupParts); + zephir_update_property_zval(this_ptr, ZEND_STRL("realSqlStatement"), &result); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getLimitClause) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *limitClause_param = NULL, number, offset, _0$$3, _1$$4; - zval limitClause, limit; - zval *this_ptr = getThis(); - ZVAL_UNDEF(&limitClause); - ZVAL_UNDEF(&limit); - ZVAL_UNDEF(&number); - ZVAL_UNDEF(&offset); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_1$$4); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(limitClause) - ZEND_PARSE_PARAMETERS_END(); + + +#ifdef HAVE_CONFIG_H #endif - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &limitClause_param); - ZEPHIR_OBS_COPY_OR_DUP(&limitClause, limitClause_param); - ZEPHIR_INIT_VAR(&limit); - array_init(&limit); - ZEPHIR_OBS_VAR(&number); - if (zephir_array_isset_string_fetch(&number, &limitClause, SL("number"), 0)) { - ZEPHIR_CALL_METHOD(&_0$$3, this_ptr, "getexpression", NULL, 456, &number); - zephir_check_call_status(); - zephir_array_update_string(&limit, SL("number"), &_0$$3, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&offset); - if (zephir_array_isset_string_fetch(&offset, &limitClause, SL("offset"), 0)) { - ZEPHIR_CALL_METHOD(&_1$$4, this_ptr, "getexpression", NULL, 456, &offset); - zephir_check_call_status(); - zephir_array_update_string(&limit, SL("offset"), &_1$$4, PH_COPY | PH_SEPARATE); - } - RETURN_CTOR(&limit); + +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_Pdo_Mysql) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Adapter\\Pdo, Mysql, phalcon, db_adapter_pdo_mysql, phalcon_db_adapter_pdo_abstractpdo_ce, phalcon_db_adapter_pdo_mysql_method_entry, 0); + + zend_declare_property_string(phalcon_db_adapter_pdo_mysql_ce, SL("dialectType"), "mysql", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_db_adapter_pdo_mysql_ce, SL("type"), "mysql", ZEND_ACC_PROTECTED); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getJoin) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, __construct) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval join; - zval *manager, manager_sub, *join_param = NULL, qualified, modelName, source, model, schema, _0$$3; + zephir_fcall_cache_entry *_2 = NULL; + zval *descriptor_param = NULL, __$false, _0, _1; + zval descriptor; zval *this_ptr = getThis(); - ZVAL_UNDEF(&manager_sub); - ZVAL_UNDEF(&qualified); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&join); + ZVAL_UNDEF(&descriptor); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(manager, phalcon_mvc_model_managerinterface_ce) - Z_PARAM_ARRAY(join) + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(descriptor) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &manager, &join_param); - zephir_get_arrval(&join, join_param); + zephir_fetch_params(1, 1, 0, &descriptor_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); - ZEPHIR_OBS_VAR(&qualified); - if (zephir_array_isset_string_fetch(&qualified, &join, SL("qualified"), 0)) { - zephir_array_fetch_string(&_0$$3, &qualified, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2263); - if (ZEPHIR_IS_LONG(&_0$$3, 355)) { - ZEPHIR_OBS_VAR(&modelName); - zephir_array_fetch_string(&modelName, &qualified, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2264); - ZEPHIR_CALL_METHOD(&model, manager, "load", NULL, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - zephir_create_array(return_value, 4, 0); - zephir_array_update_string(return_value, SL("schema"), &schema, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("source"), &source, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("modelName"), &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("model"), &model, PH_COPY | PH_SEPARATE); - RETURN_MM(); - } + zephir_array_fetch_string(&_0, &descriptor, SL("options"), PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 74); + if (!(zephir_array_isset_long(&_0, 20))) { + zephir_array_update_multi(&descriptor, &__$false, SL("sl"), 3, SL("options"), 20); } - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 2279); - return; + zephir_array_fetch_string(&_1, &descriptor, SL("options"), PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 77); + if (!(zephir_array_isset_long(&_1, 17))) { + zephir_array_update_multi(&descriptor, &__$false, SL("sl"), 3, SL("options"), 17); + } + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_mysql_ce, getThis(), "__construct", &_2, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getJoinType) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, addForeignKey) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *join_param = NULL, type, _0, _1, _2; - zval join; + zval *tableName_param = NULL, *schemaName_param = NULL, *reference, reference_sub, foreignKeyCheck, _0, _1, _2, _3, _4; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&join); - ZVAL_UNDEF(&type); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&reference_sub); + ZVAL_UNDEF(&foreignKeyCheck); ZVAL_UNDEF(&_0); ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_4); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(join) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(reference, phalcon_db_referenceinterface_ce) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &join_param); - zephir_get_arrval(&join, join_param); - - - ZEPHIR_OBS_VAR(&type); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&type, &join, SL("type"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 2290); - return; + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &reference); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); } - do { - if (ZEPHIR_IS_LONG(&type, 360)) { - RETURN_MM_STRING("INNER"); - } - if (ZEPHIR_IS_LONG(&type, 361)) { - RETURN_MM_STRING("LEFT"); - } - if (ZEPHIR_IS_LONG(&type, 362)) { - RETURN_MM_STRING("RIGHT"); - } - if (ZEPHIR_IS_LONG(&type, 363)) { - RETURN_MM_STRING("CROSS"); - } - if (ZEPHIR_IS_LONG(&type, 364)) { - RETURN_MM_STRING("FULL OUTER"); - } - } while(0); - ZEPHIR_INIT_VAR(&_0); - object_init_ex(&_0, phalcon_mvc_model_exception_ce); - zephir_read_property(&_1, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_2); - ZEPHIR_CONCAT_SVSV(&_2, "Unknown join type ", &type, ", when preparing: ", &_1); - ZEPHIR_CALL_METHOD(NULL, &_0, "__construct", NULL, 29, &_2); + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "getforeignkeychecks", NULL, 0); zephir_check_call_status(); - zephir_throw_exception_debug(&_0, "phalcon/Mvc/Model/Query.zep", 2312); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_CALL_METHOD(&foreignKeyCheck, this_ptr, "prepare", NULL, 0, &_1); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&_2, &foreignKeyCheck, "execute", NULL, 0); + zephir_check_call_status(); + if (UNEXPECTED(!zephir_is_true(&_2))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "DATABASE PARAMETER 'FOREIGN_KEY_CHECKS' HAS TO BE 1", "phalcon/Db/Adapter/Pdo/Mysql.zep", 98); + return; + } + zephir_read_property(&_3, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_4, &_3, "addforeignkey", NULL, 0, &tableName, &schemaName, reference); + zephir_check_call_status(); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_4); + zephir_check_call_status(); + RETURN_MM(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getJoins) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, describeColumns) { - zend_string *_22, *_45, *_30$$21, *_49$$26, *_79$$55; - zend_ulong _21, _44, _29$$21, _48$$26, _78$$55; + zend_bool _5$$3, _66$$49; + zval definition; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL, *_4 = NULL, *_8 = NULL, *_24 = NULL, *_50 = NULL, *_51 = NULL, *_56 = NULL, *_57 = NULL, *_64 = NULL, *_65 = NULL, *_80 = NULL, *_81 = NULL, *_92 = NULL, *_93 = NULL; + zephir_fcall_cache_entry *_64 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *select_param = NULL, __$true, models, sqlAliases, sqlAliasesModels, sqlModelsAliases, sqlAliasesModelsInstances, modelsInstances, fromModels, manager, selectJoins, joinItem, joins, joinData, schema, source, model, realModelName, completeSource, joinType, aliasExpr, alias, joinAliasName, joinExpr, fromModelName, joinAlias, joinModel, joinSource, preCondition, modelNameAlias, relation, relations, modelAlias, sqlJoin, sqlJoinItem, selectTables, tables, tableItem, _0, *_1, _2, *_19, _20, *_35, _36, _41, *_42, _43, _5$$9, _6$$9, _7$$9, _9$$11, _10$$11, _11$$11, _12$$12, _13$$14, _14$$14, _15$$14, _16$$16, _17$$16, _18$$16, _23$$18, _25$$20, _26$$21, *_27$$21, _28$$21, _37$$24, _38$$24, _39$$25, _40$$25, *_46$$26, _47$$26, _52$$31, _53$$31, _54$$31, _55$$32, *_58$$35, _59$$35, _61$$39, _66$$45, _67$$45, _68$$45, _69$$46, *_70$$49, _71$$49, _73$$53, *_76$$55, _77$$55, _82$$60, _83$$60, _84$$60, _85$$61, *_86$$64, _87$$64, _89$$68, _94$$74, _95$$74, _96$$74, _97$$75, *_98$$78, _99$$78, _101$$82; - zval select, sqlJoins, joinModels, joinSources, joinTypes, joinPreCondition, joinPrepared, _31$$22, _32$$22, _33$$23, _34$$23, _60$$39, _62$$40, _63$$40, _72$$53, _74$$54, _75$$54, _88$$68, _90$$69, _91$$69, _100$$82, _102$$83, _103$$83; + zval *table_param = NULL, *schema_param = NULL, __$true, __$false, columns, columnType, fields, field, oldColumn, sizePattern, matches, matchOne, matchTwo, columnName, _0, _1, _2, *_3, _4, _49$$3, _50$$3, _51$$3, _52$$3, _61$$3, _63$$3, _6$$4, _7$$4, _8$$5, _9$$5, _10$$6, _11$$6, _12$$7, _13$$7, _14$$8, _15$$8, _16$$9, _17$$9, _18$$10, _19$$11, _20$$12, _21$$13, _22$$14, _23$$14, _24$$15, _25$$15, _26$$16, _27$$17, _28$$18, _29$$19, _30$$20, _31$$21, _32$$22, _33$$23, _34$$24, _35$$25, _36$$26, _37$$27, _38$$28, _39$$29, _40$$30, _41$$31, _42$$32, _43$$32, _44$$33, _45$$33, _46$$33, _47$$35, _48$$36, _53$$43, _54$$44, _55$$44, _56$$44, _57$$45, _58$$46, _59$$47, _60$$47, _62$$48, _65$$49, _110$$49, _111$$49, _112$$49, _113$$49, _122$$49, _124$$49, _67$$50, _68$$50, _69$$51, _70$$51, _71$$52, _72$$52, _73$$53, _74$$53, _75$$54, _76$$54, _77$$55, _78$$55, _79$$56, _80$$57, _81$$58, _82$$59, _83$$60, _84$$60, _85$$61, _86$$61, _87$$62, _88$$63, _89$$64, _90$$65, _91$$66, _92$$67, _93$$68, _94$$69, _95$$70, _96$$71, _97$$72, _98$$73, _99$$74, _100$$75, _101$$76, _102$$77, _103$$78, _104$$78, _105$$79, _106$$79, _107$$79, _108$$81, _109$$82, _114$$89, _115$$90, _116$$90, _117$$90, _118$$91, _119$$92, _120$$93, _121$$93, _123$$94; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&select); - ZVAL_UNDEF(&sqlJoins); - ZVAL_UNDEF(&joinModels); - ZVAL_UNDEF(&joinSources); - ZVAL_UNDEF(&joinTypes); - ZVAL_UNDEF(&joinPreCondition); - ZVAL_UNDEF(&joinPrepared); - ZVAL_UNDEF(&_31$$22); - ZVAL_UNDEF(&_32$$22); - ZVAL_UNDEF(&_33$$23); - ZVAL_UNDEF(&_34$$23); - ZVAL_UNDEF(&_60$$39); - ZVAL_UNDEF(&_62$$40); - ZVAL_UNDEF(&_63$$40); - ZVAL_UNDEF(&_72$$53); - ZVAL_UNDEF(&_74$$54); - ZVAL_UNDEF(&_75$$54); - ZVAL_UNDEF(&_88$$68); - ZVAL_UNDEF(&_90$$69); - ZVAL_UNDEF(&_91$$69); - ZVAL_UNDEF(&_100$$82); - ZVAL_UNDEF(&_102$$83); - ZVAL_UNDEF(&_103$$83); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&sqlAliasesModels); - ZVAL_UNDEF(&sqlModelsAliases); - ZVAL_UNDEF(&sqlAliasesModelsInstances); - ZVAL_UNDEF(&modelsInstances); - ZVAL_UNDEF(&fromModels); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&selectJoins); - ZVAL_UNDEF(&joinItem); - ZVAL_UNDEF(&joins); - ZVAL_UNDEF(&joinData); + ZVAL_UNDEF(&table); ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&realModelName); - ZVAL_UNDEF(&completeSource); - ZVAL_UNDEF(&joinType); - ZVAL_UNDEF(&aliasExpr); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&joinAliasName); - ZVAL_UNDEF(&joinExpr); - ZVAL_UNDEF(&fromModelName); - ZVAL_UNDEF(&joinAlias); - ZVAL_UNDEF(&joinModel); - ZVAL_UNDEF(&joinSource); - ZVAL_UNDEF(&preCondition); - ZVAL_UNDEF(&modelNameAlias); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&relations); - ZVAL_UNDEF(&modelAlias); - ZVAL_UNDEF(&sqlJoin); - ZVAL_UNDEF(&sqlJoinItem); - ZVAL_UNDEF(&selectTables); - ZVAL_UNDEF(&tables); - ZVAL_UNDEF(&tableItem); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&oldColumn); + ZVAL_UNDEF(&sizePattern); + ZVAL_UNDEF(&matches); + ZVAL_UNDEF(&matchOne); + ZVAL_UNDEF(&matchTwo); + ZVAL_UNDEF(&columnName); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_20); - ZVAL_UNDEF(&_36); - ZVAL_UNDEF(&_41); - ZVAL_UNDEF(&_43); - ZVAL_UNDEF(&_5$$9); - ZVAL_UNDEF(&_6$$9); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_9$$11); - ZVAL_UNDEF(&_10$$11); - ZVAL_UNDEF(&_11$$11); - ZVAL_UNDEF(&_12$$12); - ZVAL_UNDEF(&_13$$14); - ZVAL_UNDEF(&_14$$14); - ZVAL_UNDEF(&_15$$14); - ZVAL_UNDEF(&_16$$16); - ZVAL_UNDEF(&_17$$16); - ZVAL_UNDEF(&_18$$16); - ZVAL_UNDEF(&_23$$18); - ZVAL_UNDEF(&_25$$20); - ZVAL_UNDEF(&_26$$21); - ZVAL_UNDEF(&_28$$21); - ZVAL_UNDEF(&_37$$24); - ZVAL_UNDEF(&_38$$24); - ZVAL_UNDEF(&_39$$25); - ZVAL_UNDEF(&_40$$25); - ZVAL_UNDEF(&_47$$26); - ZVAL_UNDEF(&_52$$31); - ZVAL_UNDEF(&_53$$31); - ZVAL_UNDEF(&_54$$31); - ZVAL_UNDEF(&_55$$32); - ZVAL_UNDEF(&_59$$35); - ZVAL_UNDEF(&_61$$39); - ZVAL_UNDEF(&_66$$45); - ZVAL_UNDEF(&_67$$45); - ZVAL_UNDEF(&_68$$45); - ZVAL_UNDEF(&_69$$46); - ZVAL_UNDEF(&_71$$49); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_49$$3); + ZVAL_UNDEF(&_50$$3); + ZVAL_UNDEF(&_51$$3); + ZVAL_UNDEF(&_52$$3); + ZVAL_UNDEF(&_61$$3); + ZVAL_UNDEF(&_63$$3); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$6); + ZVAL_UNDEF(&_11$$6); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_13$$7); + ZVAL_UNDEF(&_14$$8); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$9); + ZVAL_UNDEF(&_17$$9); + ZVAL_UNDEF(&_18$$10); + ZVAL_UNDEF(&_19$$11); + ZVAL_UNDEF(&_20$$12); + ZVAL_UNDEF(&_21$$13); + ZVAL_UNDEF(&_22$$14); + ZVAL_UNDEF(&_23$$14); + ZVAL_UNDEF(&_24$$15); + ZVAL_UNDEF(&_25$$15); + ZVAL_UNDEF(&_26$$16); + ZVAL_UNDEF(&_27$$17); + ZVAL_UNDEF(&_28$$18); + ZVAL_UNDEF(&_29$$19); + ZVAL_UNDEF(&_30$$20); + ZVAL_UNDEF(&_31$$21); + ZVAL_UNDEF(&_32$$22); + ZVAL_UNDEF(&_33$$23); + ZVAL_UNDEF(&_34$$24); + ZVAL_UNDEF(&_35$$25); + ZVAL_UNDEF(&_36$$26); + ZVAL_UNDEF(&_37$$27); + ZVAL_UNDEF(&_38$$28); + ZVAL_UNDEF(&_39$$29); + ZVAL_UNDEF(&_40$$30); + ZVAL_UNDEF(&_41$$31); + ZVAL_UNDEF(&_42$$32); + ZVAL_UNDEF(&_43$$32); + ZVAL_UNDEF(&_44$$33); + ZVAL_UNDEF(&_45$$33); + ZVAL_UNDEF(&_46$$33); + ZVAL_UNDEF(&_47$$35); + ZVAL_UNDEF(&_48$$36); + ZVAL_UNDEF(&_53$$43); + ZVAL_UNDEF(&_54$$44); + ZVAL_UNDEF(&_55$$44); + ZVAL_UNDEF(&_56$$44); + ZVAL_UNDEF(&_57$$45); + ZVAL_UNDEF(&_58$$46); + ZVAL_UNDEF(&_59$$47); + ZVAL_UNDEF(&_60$$47); + ZVAL_UNDEF(&_62$$48); + ZVAL_UNDEF(&_65$$49); + ZVAL_UNDEF(&_110$$49); + ZVAL_UNDEF(&_111$$49); + ZVAL_UNDEF(&_112$$49); + ZVAL_UNDEF(&_113$$49); + ZVAL_UNDEF(&_122$$49); + ZVAL_UNDEF(&_124$$49); + ZVAL_UNDEF(&_67$$50); + ZVAL_UNDEF(&_68$$50); + ZVAL_UNDEF(&_69$$51); + ZVAL_UNDEF(&_70$$51); + ZVAL_UNDEF(&_71$$52); + ZVAL_UNDEF(&_72$$52); ZVAL_UNDEF(&_73$$53); + ZVAL_UNDEF(&_74$$53); + ZVAL_UNDEF(&_75$$54); + ZVAL_UNDEF(&_76$$54); ZVAL_UNDEF(&_77$$55); - ZVAL_UNDEF(&_82$$60); + ZVAL_UNDEF(&_78$$55); + ZVAL_UNDEF(&_79$$56); + ZVAL_UNDEF(&_80$$57); + ZVAL_UNDEF(&_81$$58); + ZVAL_UNDEF(&_82$$59); ZVAL_UNDEF(&_83$$60); ZVAL_UNDEF(&_84$$60); ZVAL_UNDEF(&_85$$61); - ZVAL_UNDEF(&_87$$64); - ZVAL_UNDEF(&_89$$68); - ZVAL_UNDEF(&_94$$74); - ZVAL_UNDEF(&_95$$74); - ZVAL_UNDEF(&_96$$74); - ZVAL_UNDEF(&_97$$75); - ZVAL_UNDEF(&_99$$78); - ZVAL_UNDEF(&_101$$82); + ZVAL_UNDEF(&_86$$61); + ZVAL_UNDEF(&_87$$62); + ZVAL_UNDEF(&_88$$63); + ZVAL_UNDEF(&_89$$64); + ZVAL_UNDEF(&_90$$65); + ZVAL_UNDEF(&_91$$66); + ZVAL_UNDEF(&_92$$67); + ZVAL_UNDEF(&_93$$68); + ZVAL_UNDEF(&_94$$69); + ZVAL_UNDEF(&_95$$70); + ZVAL_UNDEF(&_96$$71); + ZVAL_UNDEF(&_97$$72); + ZVAL_UNDEF(&_98$$73); + ZVAL_UNDEF(&_99$$74); + ZVAL_UNDEF(&_100$$75); + ZVAL_UNDEF(&_101$$76); + ZVAL_UNDEF(&_102$$77); + ZVAL_UNDEF(&_103$$78); + ZVAL_UNDEF(&_104$$78); + ZVAL_UNDEF(&_105$$79); + ZVAL_UNDEF(&_106$$79); + ZVAL_UNDEF(&_107$$79); + ZVAL_UNDEF(&_108$$81); + ZVAL_UNDEF(&_109$$82); + ZVAL_UNDEF(&_114$$89); + ZVAL_UNDEF(&_115$$90); + ZVAL_UNDEF(&_116$$90); + ZVAL_UNDEF(&_117$$90); + ZVAL_UNDEF(&_118$$91); + ZVAL_UNDEF(&_119$$92); + ZVAL_UNDEF(&_120$$93); + ZVAL_UNDEF(&_121$$93); + ZVAL_UNDEF(&_123$$94); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(select) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &select_param); - zephir_get_arrval(&select, select_param); - - - zephir_read_property(&_0, this_ptr, ZEND_STRL("models"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&models, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliases, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlAliasesModels"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliasesModels, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlModelsAliases"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlModelsAliases, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliasesModelsInstances, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&modelsInstances, &_0); - ZEPHIR_CPY_WRT(&fromModels, &models); - ZEPHIR_INIT_VAR(&sqlJoins); - array_init(&sqlJoins); - ZEPHIR_INIT_VAR(&joinModels); - array_init(&joinModels); - ZEPHIR_INIT_VAR(&joinSources); - array_init(&joinSources); - ZEPHIR_INIT_VAR(&joinTypes); - array_init(&joinTypes); - ZEPHIR_INIT_VAR(&joinPreCondition); - array_init(&joinPreCondition); - ZEPHIR_INIT_VAR(&joinPrepared); - array_init(&joinPrepared); - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_OBS_VAR(&tables); - zephir_array_fetch_string(&tables, &select, SL("tables"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2348); - if (!(zephir_array_isset_long(&tables, 0))) { - ZEPHIR_INIT_VAR(&selectTables); - zephir_create_array(&selectTables, 1, 0); - zephir_array_fast_append(&selectTables, &tables); - } else { - ZEPHIR_CPY_WRT(&selectTables, &tables); - } - ZEPHIR_OBS_VAR(&joins); - zephir_array_fetch_string(&joins, &select, SL("joins"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2356); - if (!(zephir_array_isset_long(&joins, 0))) { - ZEPHIR_INIT_VAR(&selectJoins); - zephir_create_array(&selectJoins, 1, 0); - zephir_array_fast_append(&selectJoins, &joins); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + zephir_get_strval(&table, table_param); + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); } else { - ZEPHIR_CPY_WRT(&selectJoins, &joins); + zephir_get_strval(&schema, schema_param); } - zephir_is_iterable(&selectJoins, 0, "phalcon/Mvc/Model/Query.zep", 2507); - if (Z_TYPE_P(&selectJoins) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&selectJoins), _1) + + + ZEPHIR_INIT_VAR(&oldColumn); + ZVAL_NULL(&oldColumn); + ZEPHIR_INIT_VAR(&sizePattern); + ZVAL_STRING(&sizePattern, "#\\(([0-9]+)(?:,\\s*([0-9]+))*\\)#"); + ZEPHIR_INIT_VAR(&columns); + array_init(&columns); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "describecolumns", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_2, 3); + ZEPHIR_CALL_METHOD(&fields, this_ptr, "fetchall", NULL, 0, &_1, &_2); + zephir_check_call_status(); + zephir_is_iterable(&fields, 0, "phalcon/Db/Adapter/Pdo/Mysql.zep", 500); + if (Z_TYPE_P(&fields) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&fields), _3) { - ZEPHIR_INIT_NVAR(&joinItem); - ZVAL_COPY(&joinItem, _1); - ZEPHIR_CALL_METHOD(&joinData, this_ptr, "getjoin", &_3, 461, &manager, &joinItem); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&source); - zephir_array_fetch_string(&source, &joinData, SL("source"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2370); - ZEPHIR_OBS_NVAR(&schema); - zephir_array_fetch_string(&schema, &joinData, SL("schema"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2371); - ZEPHIR_OBS_NVAR(&model); - zephir_array_fetch_string(&model, &joinData, SL("model"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2372); - ZEPHIR_OBS_NVAR(&realModelName); - zephir_array_fetch_string(&realModelName, &joinData, SL("modelName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2373); - ZEPHIR_INIT_NVAR(&completeSource); - zephir_create_array(&completeSource, 2, 0); - zephir_array_fast_append(&completeSource, &source); - zephir_array_fast_append(&completeSource, &schema); - ZEPHIR_CALL_METHOD(&joinType, this_ptr, "getjointype", &_4, 462, &joinItem); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&aliasExpr); - if (zephir_array_isset_string_fetch(&aliasExpr, &joinItem, SL("alias"), 0)) { - ZEPHIR_OBS_NVAR(&alias); - zephir_array_fetch_string(&alias, &aliasExpr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2385); - if (UNEXPECTED(zephir_array_isset(&joinModels, &alias))) { - ZEPHIR_INIT_NVAR(&_5$$9); - object_init_ex(&_5$$9, phalcon_mvc_model_exception_ce); - zephir_read_property(&_6$$9, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_7$$9); - ZEPHIR_CONCAT_SVSV(&_7$$9, "Cannot use '", &alias, "' as join alias because it was already used, when preparing: ", &_6$$9); - ZEPHIR_CALL_METHOD(NULL, &_5$$9, "__construct", &_8, 29, &_7$$9); - zephir_check_call_status(); - zephir_throw_exception_debug(&_5$$9, "phalcon/Mvc/Model/Query.zep", 2393); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _3); + ZEPHIR_INIT_NVAR(&definition); + zephir_create_array(&definition, 1, 0); + add_assoc_long_ex(&definition, SL("bindType"), 2); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 1, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 153); + do { + _5$$3 = 1; + if (_5$$3 == zephir_start_with_str(&columnType, SL("bigint"))) { + ZEPHIR_INIT_NVAR(&_6$$4); + ZVAL_LONG(&_6$$4, 14); + zephir_array_update_string(&definition, SL("type"), &_6$$4, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_7$$4); + ZVAL_LONG(&_7$$4, 2); + zephir_array_update_string(&definition, SL("bindType"), &_7$$4, PH_COPY | PH_SEPARATE); + break; } - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2399); - zephir_array_update_zval(&joinTypes, &alias, &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinModels, &alias, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &realModelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &alias, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &realModelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinSources, &alias, &completeSource, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinPrepared, &alias, &joinItem, PH_COPY | PH_SEPARATE); - } else { - if (UNEXPECTED(zephir_array_isset(&joinModels, &realModelName))) { - ZEPHIR_INIT_NVAR(&_9$$11); - object_init_ex(&_9$$11, phalcon_mvc_model_exception_ce); - zephir_read_property(&_10$$11, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_11$$11); - ZEPHIR_CONCAT_SVSV(&_11$$11, "Cannot use '", &realModelName, "' as join alias because it was already used, when preparing: ", &_10$$11); - ZEPHIR_CALL_METHOD(NULL, &_9$$11, "__construct", &_8, 29, &_11$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_9$$11, "phalcon/Mvc/Model/Query.zep", 2452); - ZEPHIR_MM_RESTORE(); - return; + if (_5$$3 == zephir_start_with_str(&columnType, SL("mediumint"))) { + ZEPHIR_INIT_NVAR(&_8$$5); + ZVAL_LONG(&_8$$5, 21); + zephir_array_update_string(&definition, SL("type"), &_8$$5, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_9$$5); + ZVAL_LONG(&_9$$5, 1); + zephir_array_update_string(&definition, SL("bindType"), &_9$$5, PH_COPY | PH_SEPARATE); + break; } - zephir_array_update_zval(&joinTypes, &realModelName, &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliases, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinModels, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &realModelName, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &realModelName, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &realModelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinSources, &realModelName, &completeSource, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinPrepared, &realModelName, &joinItem, PH_COPY | PH_SEPARATE); - } - zephir_array_update_zval(&modelsInstances, &realModelName, &model, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &selectJoins, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2, &selectJoins, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (_5$$3 == zephir_start_with_str(&columnType, SL("smallint"))) { + ZEPHIR_INIT_NVAR(&_10$$6); + ZVAL_LONG(&_10$$6, 22); + zephir_array_update_string(&definition, SL("type"), &_10$$6, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_11$$6); + ZVAL_LONG(&_11$$6, 1); + zephir_array_update_string(&definition, SL("bindType"), &_11$$6, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("tinyint"))) { + ZEPHIR_INIT_NVAR(&_12$$7); + ZVAL_LONG(&_12$$7, 26); + zephir_array_update_string(&definition, SL("type"), &_12$$7, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_13$$7); + ZVAL_LONG(&_13$$7, 1); + zephir_array_update_string(&definition, SL("bindType"), &_13$$7, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("int"))) { + ZEPHIR_INIT_NVAR(&_14$$8); + ZVAL_LONG(&_14$$8, 0); + zephir_array_update_string(&definition, SL("type"), &_14$$8, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_15$$8); + ZVAL_LONG(&_15$$8, 1); + zephir_array_update_string(&definition, SL("bindType"), &_15$$8, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("bit"))) { + ZEPHIR_INIT_NVAR(&_16$$9); + ZVAL_LONG(&_16$$9, 19); + zephir_array_update_string(&definition, SL("type"), &_16$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_17$$9); + ZVAL_LONG(&_17$$9, 1); + zephir_array_update_string(&definition, SL("bindType"), &_17$$9, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("enum"))) { + ZEPHIR_INIT_NVAR(&_18$$10); + ZVAL_LONG(&_18$$10, 18); + zephir_array_update_string(&definition, SL("type"), &_18$$10, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("datetime"))) { + ZEPHIR_INIT_NVAR(&_19$$11); + ZVAL_LONG(&_19$$11, 4); + zephir_array_update_string(&definition, SL("type"), &_19$$11, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("date"))) { + ZEPHIR_INIT_NVAR(&_20$$12); + ZVAL_LONG(&_20$$12, 1); + zephir_array_update_string(&definition, SL("type"), &_20$$12, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("decimal"))) { + ZEPHIR_INIT_NVAR(&_21$$13); + ZVAL_LONG(&_21$$13, 3); + zephir_array_update_string(&definition, SL("type"), &_21$$13, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("double"))) { + ZEPHIR_INIT_NVAR(&_22$$14); + ZVAL_LONG(&_22$$14, 9); + zephir_array_update_string(&definition, SL("type"), &_22$$14, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_23$$14); + ZVAL_LONG(&_23$$14, 32); + zephir_array_update_string(&definition, SL("bindType"), &_23$$14, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("float"))) { + ZEPHIR_INIT_NVAR(&_24$$15); + ZVAL_LONG(&_24$$15, 7); + zephir_array_update_string(&definition, SL("type"), &_24$$15, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_25$$15); + ZVAL_LONG(&_25$$15, 32); + zephir_array_update_string(&definition, SL("bindType"), &_25$$15, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("mediumblob"))) { + ZEPHIR_INIT_NVAR(&_26$$16); + ZVAL_LONG(&_26$$16, 12); + zephir_array_update_string(&definition, SL("type"), &_26$$16, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("longblob"))) { + ZEPHIR_INIT_NVAR(&_27$$17); + ZVAL_LONG(&_27$$17, 13); + zephir_array_update_string(&definition, SL("type"), &_27$$17, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("tinyblob"))) { + ZEPHIR_INIT_NVAR(&_28$$18); + ZVAL_LONG(&_28$$18, 10); + zephir_array_update_string(&definition, SL("type"), &_28$$18, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("blob"))) { + ZEPHIR_INIT_NVAR(&_29$$19); + ZVAL_LONG(&_29$$19, 11); + zephir_array_update_string(&definition, SL("type"), &_29$$19, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("timestamp"))) { + ZEPHIR_INIT_NVAR(&_30$$20); + ZVAL_LONG(&_30$$20, 17); + zephir_array_update_string(&definition, SL("type"), &_30$$20, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("time"))) { + ZEPHIR_INIT_NVAR(&_31$$21); + ZVAL_LONG(&_31$$21, 20); + zephir_array_update_string(&definition, SL("type"), &_31$$21, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("json"))) { + ZEPHIR_INIT_NVAR(&_32$$22); + ZVAL_LONG(&_32$$22, 15); + zephir_array_update_string(&definition, SL("type"), &_32$$22, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("longtext"))) { + ZEPHIR_INIT_NVAR(&_33$$23); + ZVAL_LONG(&_33$$23, 24); + zephir_array_update_string(&definition, SL("type"), &_33$$23, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("mediumtext"))) { + ZEPHIR_INIT_NVAR(&_34$$24); + ZVAL_LONG(&_34$$24, 23); + zephir_array_update_string(&definition, SL("type"), &_34$$24, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("tinytext"))) { + ZEPHIR_INIT_NVAR(&_35$$25); + ZVAL_LONG(&_35$$25, 25); + zephir_array_update_string(&definition, SL("type"), &_35$$25, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("text"))) { + ZEPHIR_INIT_NVAR(&_36$$26); + ZVAL_LONG(&_36$$26, 6); + zephir_array_update_string(&definition, SL("type"), &_36$$26, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("varchar"))) { + ZEPHIR_INIT_NVAR(&_37$$27); + ZVAL_LONG(&_37$$27, 2); + zephir_array_update_string(&definition, SL("type"), &_37$$27, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("char"))) { + ZEPHIR_INIT_NVAR(&_38$$28); + ZVAL_LONG(&_38$$28, 5); + zephir_array_update_string(&definition, SL("type"), &_38$$28, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("varbinary"))) { + ZEPHIR_INIT_NVAR(&_39$$29); + ZVAL_LONG(&_39$$29, 26); + zephir_array_update_string(&definition, SL("type"), &_39$$29, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_start_with_str(&columnType, SL("binary"))) { + ZEPHIR_INIT_NVAR(&_40$$30); + ZVAL_LONG(&_40$$30, 26); + zephir_array_update_string(&definition, SL("type"), &_40$$30, PH_COPY | PH_SEPARATE); + break; + } + ZEPHIR_INIT_NVAR(&_41$$31); + ZVAL_LONG(&_41$$31, 2); + zephir_array_update_string(&definition, SL("type"), &_41$$31, PH_COPY | PH_SEPARATE); break; - } - ZEPHIR_CALL_METHOD(&joinItem, &selectJoins, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&joinData, this_ptr, "getjoin", &_3, 461, &manager, &joinItem); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&source); - zephir_array_fetch_string(&source, &joinData, SL("source"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2370); - ZEPHIR_OBS_NVAR(&schema); - zephir_array_fetch_string(&schema, &joinData, SL("schema"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2371); - ZEPHIR_OBS_NVAR(&model); - zephir_array_fetch_string(&model, &joinData, SL("model"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2372); - ZEPHIR_OBS_NVAR(&realModelName); - zephir_array_fetch_string(&realModelName, &joinData, SL("modelName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2373); - ZEPHIR_INIT_NVAR(&_12$$12); - zephir_create_array(&_12$$12, 2, 0); - zephir_array_fast_append(&_12$$12, &source); - zephir_array_fast_append(&_12$$12, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_12$$12); - ZEPHIR_CALL_METHOD(&joinType, this_ptr, "getjointype", &_4, 462, &joinItem); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&aliasExpr); - if (zephir_array_isset_string_fetch(&aliasExpr, &joinItem, SL("alias"), 0)) { - ZEPHIR_OBS_NVAR(&alias); - zephir_array_fetch_string(&alias, &aliasExpr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2385); - if (UNEXPECTED(zephir_array_isset(&joinModels, &alias))) { - ZEPHIR_INIT_NVAR(&_13$$14); - object_init_ex(&_13$$14, phalcon_mvc_model_exception_ce); - zephir_read_property(&_14$$14, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_15$$14); - ZEPHIR_CONCAT_SVSV(&_15$$14, "Cannot use '", &alias, "' as join alias because it was already used, when preparing: ", &_14$$14); - ZEPHIR_CALL_METHOD(NULL, &_13$$14, "__construct", &_8, 29, &_15$$14); - zephir_check_call_status(); - zephir_throw_exception_debug(&_13$$14, "phalcon/Mvc/Model/Query.zep", 2393); - ZEPHIR_MM_RESTORE(); - return; + } while(0); + + if (zephir_memnstr_str(&columnType, SL("("), "phalcon/Db/Adapter/Pdo/Mysql.zep", 417)) { + ZEPHIR_INIT_NVAR(&matches); + ZVAL_NULL(&matches); + zephir_array_fetch_string(&_42$$32, &definition, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 420); + ZEPHIR_INIT_NVAR(&_43$$32); + zephir_preg_match(&_43$$32, &sizePattern, &columnType, &matches, 0, 0 , 0 ); + if (ZEPHIR_IS_LONG(&_42$$32, 18)) { + ZVAL_LONG(&_44$$33, 5); + ZVAL_LONG(&_45$$33, -1); + ZEPHIR_INIT_NVAR(&_46$$33); + zephir_substr(&_46$$33, &columnType, 5 , -1 , 0); + zephir_array_update_string(&definition, SL("size"), &_46$$33, PH_COPY | PH_SEPARATE); + } else if (zephir_is_true(&_43$$32)) { + ZEPHIR_OBS_NVAR(&matchOne); + if (zephir_array_isset_long_fetch(&matchOne, &matches, 1, 0)) { + ZEPHIR_INIT_NVAR(&_47$$35); + ZVAL_LONG(&_47$$35, zephir_get_intval(&matchOne)); + zephir_array_update_string(&definition, SL("size"), &_47$$35, PH_COPY | PH_SEPARATE); } - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2399); - zephir_array_update_zval(&joinTypes, &alias, &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinModels, &alias, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &realModelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &alias, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &realModelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinSources, &alias, &completeSource, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinPrepared, &alias, &joinItem, PH_COPY | PH_SEPARATE); - } else { - if (UNEXPECTED(zephir_array_isset(&joinModels, &realModelName))) { - ZEPHIR_INIT_NVAR(&_16$$16); - object_init_ex(&_16$$16, phalcon_mvc_model_exception_ce); - zephir_read_property(&_17$$16, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_18$$16); - ZEPHIR_CONCAT_SVSV(&_18$$16, "Cannot use '", &realModelName, "' as join alias because it was already used, when preparing: ", &_17$$16); - ZEPHIR_CALL_METHOD(NULL, &_16$$16, "__construct", &_8, 29, &_18$$16); - zephir_check_call_status(); - zephir_throw_exception_debug(&_16$$16, "phalcon/Mvc/Model/Query.zep", 2452); - ZEPHIR_MM_RESTORE(); - return; + ZEPHIR_OBS_NVAR(&matchTwo); + if (zephir_array_isset_long_fetch(&matchTwo, &matches, 2, 0)) { + ZEPHIR_INIT_NVAR(&_48$$36); + ZVAL_LONG(&_48$$36, zephir_get_intval(&matchTwo)); + zephir_array_update_string(&definition, SL("scale"), &_48$$36, PH_COPY | PH_SEPARATE); } - zephir_array_update_zval(&joinTypes, &realModelName, &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliases, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinModels, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &realModelName, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &realModelName, &realModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &realModelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &realModelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinSources, &realModelName, &completeSource, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&joinPrepared, &realModelName, &joinItem, PH_COPY | PH_SEPARATE); } - zephir_array_update_zval(&modelsInstances, &realModelName, &model, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &selectJoins, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&joinItem); - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &models); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &sqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModels"), &sqlAliasesModels); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlModelsAliases"), &sqlModelsAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &sqlAliasesModelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &modelsInstances); - zephir_is_iterable(&joinPrepared, 0, "phalcon/Mvc/Model/Query.zep", 2527); - if (Z_TYPE_P(&joinPrepared) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&joinPrepared), _21, _22, _19) - { - ZEPHIR_INIT_NVAR(&joinAliasName); - if (_22 != NULL) { - ZVAL_STR_COPY(&joinAliasName, _22); + } + if (zephir_memnstr_str(&columnType, SL("unsigned"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 436)) { + zephir_array_update_string(&definition, SL("unsigned"), &__$true, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); } else { - ZVAL_LONG(&joinAliasName, _21); + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); } - ZEPHIR_INIT_NVAR(&joinItem); - ZVAL_COPY(&joinItem, _19); - ZEPHIR_OBS_NVAR(&joinExpr); - if (zephir_array_isset_string_fetch(&joinExpr, &joinItem, SL("conditions"), 0)) { - ZEPHIR_CALL_METHOD(&_23$$18, this_ptr, "getexpression", &_24, 456, &joinExpr); - zephir_check_call_status(); - zephir_array_update_zval(&joinPreCondition, &joinAliasName, &_23$$18, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_49$$3, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 452); + if (ZEPHIR_IS_STRING(&_49$$3, "PRI")) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &joinPrepared, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_20, &joinPrepared, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_20)) { - break; + zephir_array_fetch_long(&_50$$3, &field, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 459); + if (ZEPHIR_IS_STRING(&_50$$3, "YES")) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); } - ZEPHIR_CALL_METHOD(&joinAliasName, &joinPrepared, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&joinItem, &joinPrepared, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&joinExpr); - if (zephir_array_isset_string_fetch(&joinExpr, &joinItem, SL("conditions"), 0)) { - ZEPHIR_CALL_METHOD(&_25$$20, this_ptr, "getexpression", &_24, 456, &joinExpr); - zephir_check_call_status(); - zephir_array_update_zval(&joinPreCondition, &joinAliasName, &_25$$20, PH_COPY | PH_SEPARATE); - } - ZEPHIR_CALL_METHOD(NULL, &joinPrepared, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&joinItem); - ZEPHIR_INIT_NVAR(&joinAliasName); - zephir_read_property(&_0, this_ptr, ZEND_STRL("enableImplicitJoins"), PH_NOISY_CC | PH_READONLY); - if (!(zephir_is_true(&_0))) { - ZEPHIR_INIT_VAR(&_26$$21); - zephir_is_iterable(&joinPrepared, 0, "phalcon/Mvc/Model/Query.zep", 2539); - if (Z_TYPE_P(&joinPrepared) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&joinPrepared), _29$$21, _30$$21, _27$$21) - { - ZEPHIR_INIT_NVAR(&joinAliasName); - if (_30$$21 != NULL) { - ZVAL_STR_COPY(&joinAliasName, _30$$21); + zephir_array_fetch_long(&_51$$3, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 466); + if (ZEPHIR_IS_STRING(&_51$$3, "auto_increment")) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_52$$3, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 473); + if (Z_TYPE_P(&_52$$3) != IS_NULL) { + zephir_array_fetch_long(&_53$$43, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 474); + if (zephir_memnstr_str(&_53$$43, SL("on update"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 474)) { + zephir_array_fetch_long(&_54$$44, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 475); + zephir_array_fetch_long(&_55$$44, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 475); + ZEPHIR_INIT_NVAR(&_56$$44); + ZEPHIR_CONCAT_VSV(&_56$$44, &_54$$44, " ", &_55$$44); + zephir_array_update_string(&definition, SL("default"), &_56$$44, PH_COPY | PH_SEPARATE); } else { - ZVAL_LONG(&joinAliasName, _29$$21); + zephir_array_fetch_long(&_57$$45, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 477); + zephir_array_update_string(&definition, SL("default"), &_57$$45, PH_COPY | PH_SEPARATE); } - ZEPHIR_INIT_NVAR(&_26$$21); - ZVAL_COPY(&_26$$21, _27$$21); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2529); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2530); - ZEPHIR_OBS_NVAR(&preCondition); - zephir_array_fetch(&preCondition, &joinPreCondition, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2531); - ZEPHIR_INIT_NVAR(&_31$$22); - zephir_create_array(&_31$$22, 3, 0); - zephir_array_update_string(&_31$$22, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_31$$22, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_32$$22); - zephir_create_array(&_32$$22, 1, 0); - zephir_array_fast_append(&_32$$22, &preCondition); - zephir_array_update_string(&_31$$22, SL("conditions"), &_32$$22, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_31$$22, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2536); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &joinPrepared, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_28$$21, &joinPrepared, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_28$$21)) { - break; + } else { + zephir_array_fetch_long(&_58$$46, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 480); + if (zephir_memnstr_str(&_58$$46, SL("on update"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 480)) { + zephir_array_fetch_long(&_59$$47, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 481); + ZEPHIR_INIT_NVAR(&_60$$47); + ZEPHIR_CONCAT_SV(&_60$$47, "NULL ", &_59$$47); + zephir_array_update_string(&definition, SL("default"), &_60$$47, PH_COPY | PH_SEPARATE); } - ZEPHIR_CALL_METHOD(&joinAliasName, &joinPrepared, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_26$$21, &joinPrepared, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2529); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2530); - ZEPHIR_OBS_NVAR(&preCondition); - zephir_array_fetch(&preCondition, &joinPreCondition, &joinAliasName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2531); - ZEPHIR_INIT_NVAR(&_33$$23); - zephir_create_array(&_33$$23, 3, 0); - zephir_array_update_string(&_33$$23, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_33$$23, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_34$$23); - zephir_create_array(&_34$$23, 1, 0); - zephir_array_fast_append(&_34$$23, &preCondition); - zephir_array_update_string(&_33$$23, SL("conditions"), &_34$$23, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_33$$23, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2536); - ZEPHIR_CALL_METHOD(NULL, &joinPrepared, "next", NULL, 0); - zephir_check_call_status(); } - } - ZEPHIR_INIT_NVAR(&_26$$21); - ZEPHIR_INIT_NVAR(&joinAliasName); - RETURN_CTOR(&sqlJoins); - } - ZEPHIR_INIT_NVAR(&fromModels); - array_init(&fromModels); - zephir_is_iterable(&selectTables, 0, "phalcon/Mvc/Model/Query.zep", 2554); - if (Z_TYPE_P(&selectTables) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&selectTables), _35) - { - ZEPHIR_INIT_NVAR(&tableItem); - ZVAL_COPY(&tableItem, _35); - zephir_array_fetch_string(&_37$$24, &tableItem, SL("qualifiedName"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2548); - ZEPHIR_OBS_NVAR(&_38$$24); - zephir_array_fetch_string(&_38$$24, &_37$$24, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2548); - zephir_array_update_zval(&fromModels, &_38$$24, &__$true, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_61$$3, &field, 8, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 488); + if (Z_TYPE_P(&_61$$3) != IS_NULL) { + zephir_array_fetch_long(&_62$$48, &field, 8, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 489); + zephir_array_update_string(&definition, SL("comment"), &_62$$48, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&columnName, &field, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 495); + ZEPHIR_INIT_NVAR(&_63$$3); + object_init_ex(&_63$$3, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_63$$3, "__construct", &_64, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_63$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 496); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &selectTables, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_36, &selectTables, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_4, &fields, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_36)) { + if (!zend_is_true(&_4)) { break; } - ZEPHIR_CALL_METHOD(&tableItem, &selectTables, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_fetch_string(&_39$$25, &tableItem, SL("qualifiedName"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2548); - ZEPHIR_OBS_NVAR(&_40$$25); - zephir_array_fetch_string(&_40$$25, &_39$$25, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2548); - zephir_array_update_zval(&fromModels, &_40$$25, &__$true, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &selectTables, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&tableItem); - ZEPHIR_INIT_VAR(&_41); - zephir_is_iterable(&fromModels, 0, "phalcon/Mvc/Model/Query.zep", 2674); - if (Z_TYPE_P(&fromModels) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fromModels), _44, _45, _42) - { - ZEPHIR_INIT_NVAR(&fromModelName); - if (_45 != NULL) { - ZVAL_STR_COPY(&fromModelName, _45); - } else { - ZVAL_LONG(&fromModelName, _44); - } - ZEPHIR_INIT_NVAR(&_41); - ZVAL_COPY(&_41, _42); - zephir_is_iterable(&joinModels, 0, "phalcon/Mvc/Model/Query.zep", 2672); - if (Z_TYPE_P(&joinModels) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&joinModels), _48$$26, _49$$26, _46$$26) - { - ZEPHIR_INIT_NVAR(&joinAlias); - if (_49$$26 != NULL) { - ZVAL_STR_COPY(&joinAlias, _49$$26); - } else { - ZVAL_LONG(&joinAlias, _48$$26); + ZEPHIR_INIT_NVAR(&_65$$49); + zephir_create_array(&_65$$49, 1, 0); + add_assoc_long_ex(&_65$$49, SL("bindType"), 2); + ZEPHIR_CPY_WRT(&definition, &_65$$49); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 1, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 153); + do { + _66$$49 = 1; + if (_66$$49 == zephir_start_with_str(&columnType, SL("bigint"))) { + ZEPHIR_INIT_NVAR(&_67$$50); + ZVAL_LONG(&_67$$50, 14); + zephir_array_update_string(&definition, SL("type"), &_67$$50, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_68$$50); + ZVAL_LONG(&_68$$50, 2); + zephir_array_update_string(&definition, SL("bindType"), &_68$$50, PH_COPY | PH_SEPARATE); + break; } - ZEPHIR_INIT_NVAR(&joinModel); - ZVAL_COPY(&joinModel, _46$$26); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2559); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2564); - ZEPHIR_OBS_NVAR(&preCondition); - if (!(zephir_array_isset_fetch(&preCondition, &joinPreCondition, &joinAlias, 0))) { - ZEPHIR_OBS_NVAR(&modelNameAlias); - zephir_array_fetch(&modelNameAlias, &sqlAliasesModels, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2573); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_50, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&relation)) { - ZEPHIR_CALL_METHOD(&relations, &manager, "getrelationsbetween", &_51, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(&relations) != 1)) { - ZEPHIR_INIT_NVAR(&_52$$31); - object_init_ex(&_52$$31, phalcon_mvc_model_exception_ce); - zephir_read_property(&_53$$31, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_54$$31); - ZEPHIR_CONCAT_SVSVSV(&_54$$31, "There is more than one relation between models '", &fromModelName, "' and '", &joinModel, "', the join must be done using an alias, when preparing: ", &_53$$31); - ZEPHIR_CALL_METHOD(NULL, &_52$$31, "__construct", &_8, 29, &_54$$31); - zephir_check_call_status(); - zephir_throw_exception_debug(&_52$$31, "phalcon/Mvc/Model/Query.zep", 2599); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&relation); - zephir_array_fetch_long(&relation, &relations, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2605); - } - } - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_OBS_NVAR(&modelAlias); - zephir_array_fetch(&modelAlias, &sqlModelsAliases, &fromModelName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2616); - ZEPHIR_CALL_METHOD(&_55$$32, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_55$$32))) { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getsinglejoin", &_56, 463, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getmultijoin", &_57, 464, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } - if (zephir_array_isset_long(&sqlJoin, 0)) { - zephir_is_iterable(&sqlJoin, 0, "phalcon/Mvc/Model/Query.zep", 2646); - if (Z_TYPE_P(&sqlJoin) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&sqlJoin), _58$$35) - { - ZEPHIR_INIT_NVAR(&sqlJoinItem); - ZVAL_COPY(&sqlJoinItem, _58$$35); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_59$$35, &sqlJoin, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_59$$35)) { - break; - } - ZEPHIR_CALL_METHOD(&sqlJoinItem, &sqlJoin, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&sqlJoinItem); - } else { - zephir_array_append(&sqlJoins, &sqlJoin, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2647); - } - } else { - ZEPHIR_INIT_NVAR(&_60$$39); - zephir_create_array(&_60$$39, 3, 0); - zephir_array_update_string(&_60$$39, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_60$$39, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_61$$39); - array_init(&_61$$39); - zephir_array_update_string(&_60$$39, SL("conditions"), &_61$$39, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_60$$39, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2658); - } - } else { - ZEPHIR_INIT_NVAR(&_62$$40); - zephir_create_array(&_62$$40, 3, 0); - zephir_array_update_string(&_62$$40, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_62$$40, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_63$$40); - zephir_create_array(&_63$$40, 1, 0); - zephir_array_fast_append(&_63$$40, &preCondition); - zephir_array_update_string(&_62$$40, SL("conditions"), &_63$$40, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_62$$40, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2669); + if (_66$$49 == zephir_start_with_str(&columnType, SL("mediumint"))) { + ZEPHIR_INIT_NVAR(&_69$$51); + ZVAL_LONG(&_69$$51, 21); + zephir_array_update_string(&definition, SL("type"), &_69$$51, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_70$$51); + ZVAL_LONG(&_70$$51, 1); + zephir_array_update_string(&definition, SL("bindType"), &_70$$51, PH_COPY | PH_SEPARATE); + break; } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &joinModels, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_47$$26, &joinModels, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_47$$26)) { + if (_66$$49 == zephir_start_with_str(&columnType, SL("smallint"))) { + ZEPHIR_INIT_NVAR(&_71$$52); + ZVAL_LONG(&_71$$52, 22); + zephir_array_update_string(&definition, SL("type"), &_71$$52, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_72$$52); + ZVAL_LONG(&_72$$52, 1); + zephir_array_update_string(&definition, SL("bindType"), &_72$$52, PH_COPY | PH_SEPARATE); break; } - ZEPHIR_CALL_METHOD(&joinAlias, &joinModels, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&joinModel, &joinModels, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2559); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2564); - ZEPHIR_OBS_NVAR(&preCondition); - if (!(zephir_array_isset_fetch(&preCondition, &joinPreCondition, &joinAlias, 0))) { - ZEPHIR_OBS_NVAR(&modelNameAlias); - zephir_array_fetch(&modelNameAlias, &sqlAliasesModels, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2573); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_64, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&relation)) { - ZEPHIR_CALL_METHOD(&relations, &manager, "getrelationsbetween", &_65, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(&relations) != 1)) { - ZEPHIR_INIT_NVAR(&_66$$45); - object_init_ex(&_66$$45, phalcon_mvc_model_exception_ce); - zephir_read_property(&_67$$45, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_68$$45); - ZEPHIR_CONCAT_SVSVSV(&_68$$45, "There is more than one relation between models '", &fromModelName, "' and '", &joinModel, "', the join must be done using an alias, when preparing: ", &_67$$45); - ZEPHIR_CALL_METHOD(NULL, &_66$$45, "__construct", &_8, 29, &_68$$45); - zephir_check_call_status(); - zephir_throw_exception_debug(&_66$$45, "phalcon/Mvc/Model/Query.zep", 2599); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&relation); - zephir_array_fetch_long(&relation, &relations, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2605); - } - } - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_OBS_NVAR(&modelAlias); - zephir_array_fetch(&modelAlias, &sqlModelsAliases, &fromModelName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2616); - ZEPHIR_CALL_METHOD(&_69$$46, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_69$$46))) { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getsinglejoin", &_56, 463, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getmultijoin", &_57, 464, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } - if (zephir_array_isset_long(&sqlJoin, 0)) { - zephir_is_iterable(&sqlJoin, 0, "phalcon/Mvc/Model/Query.zep", 2646); - if (Z_TYPE_P(&sqlJoin) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&sqlJoin), _70$$49) - { - ZEPHIR_INIT_NVAR(&sqlJoinItem); - ZVAL_COPY(&sqlJoinItem, _70$$49); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_71$$49, &sqlJoin, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_71$$49)) { - break; - } - ZEPHIR_CALL_METHOD(&sqlJoinItem, &sqlJoin, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&sqlJoinItem); - } else { - zephir_array_append(&sqlJoins, &sqlJoin, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2647); - } - } else { - ZEPHIR_INIT_NVAR(&_72$$53); - zephir_create_array(&_72$$53, 3, 0); - zephir_array_update_string(&_72$$53, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_72$$53, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_73$$53); - array_init(&_73$$53); - zephir_array_update_string(&_72$$53, SL("conditions"), &_73$$53, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_72$$53, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2658); - } - } else { - ZEPHIR_INIT_NVAR(&_74$$54); - zephir_create_array(&_74$$54, 3, 0); - zephir_array_update_string(&_74$$54, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_74$$54, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_75$$54); - zephir_create_array(&_75$$54, 1, 0); - zephir_array_fast_append(&_75$$54, &preCondition); - zephir_array_update_string(&_74$$54, SL("conditions"), &_75$$54, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_74$$54, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2669); + if (_66$$49 == zephir_start_with_str(&columnType, SL("tinyint"))) { + ZEPHIR_INIT_NVAR(&_73$$53); + ZVAL_LONG(&_73$$53, 26); + zephir_array_update_string(&definition, SL("type"), &_73$$53, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_74$$53); + ZVAL_LONG(&_74$$53, 1); + zephir_array_update_string(&definition, SL("bindType"), &_74$$53, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("int"))) { + ZEPHIR_INIT_NVAR(&_75$$54); + ZVAL_LONG(&_75$$54, 0); + zephir_array_update_string(&definition, SL("type"), &_75$$54, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_76$$54); + ZVAL_LONG(&_76$$54, 1); + zephir_array_update_string(&definition, SL("bindType"), &_76$$54, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("bit"))) { + ZEPHIR_INIT_NVAR(&_77$$55); + ZVAL_LONG(&_77$$55, 19); + zephir_array_update_string(&definition, SL("type"), &_77$$55, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_78$$55); + ZVAL_LONG(&_78$$55, 1); + zephir_array_update_string(&definition, SL("bindType"), &_78$$55, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("enum"))) { + ZEPHIR_INIT_NVAR(&_79$$56); + ZVAL_LONG(&_79$$56, 18); + zephir_array_update_string(&definition, SL("type"), &_79$$56, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("datetime"))) { + ZEPHIR_INIT_NVAR(&_80$$57); + ZVAL_LONG(&_80$$57, 4); + zephir_array_update_string(&definition, SL("type"), &_80$$57, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("date"))) { + ZEPHIR_INIT_NVAR(&_81$$58); + ZVAL_LONG(&_81$$58, 1); + zephir_array_update_string(&definition, SL("type"), &_81$$58, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("decimal"))) { + ZEPHIR_INIT_NVAR(&_82$$59); + ZVAL_LONG(&_82$$59, 3); + zephir_array_update_string(&definition, SL("type"), &_82$$59, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("double"))) { + ZEPHIR_INIT_NVAR(&_83$$60); + ZVAL_LONG(&_83$$60, 9); + zephir_array_update_string(&definition, SL("type"), &_83$$60, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_84$$60); + ZVAL_LONG(&_84$$60, 32); + zephir_array_update_string(&definition, SL("bindType"), &_84$$60, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("float"))) { + ZEPHIR_INIT_NVAR(&_85$$61); + ZVAL_LONG(&_85$$61, 7); + zephir_array_update_string(&definition, SL("type"), &_85$$61, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_86$$61); + ZVAL_LONG(&_86$$61, 32); + zephir_array_update_string(&definition, SL("bindType"), &_86$$61, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("mediumblob"))) { + ZEPHIR_INIT_NVAR(&_87$$62); + ZVAL_LONG(&_87$$62, 12); + zephir_array_update_string(&definition, SL("type"), &_87$$62, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("longblob"))) { + ZEPHIR_INIT_NVAR(&_88$$63); + ZVAL_LONG(&_88$$63, 13); + zephir_array_update_string(&definition, SL("type"), &_88$$63, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("tinyblob"))) { + ZEPHIR_INIT_NVAR(&_89$$64); + ZVAL_LONG(&_89$$64, 10); + zephir_array_update_string(&definition, SL("type"), &_89$$64, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("blob"))) { + ZEPHIR_INIT_NVAR(&_90$$65); + ZVAL_LONG(&_90$$65, 11); + zephir_array_update_string(&definition, SL("type"), &_90$$65, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("timestamp"))) { + ZEPHIR_INIT_NVAR(&_91$$66); + ZVAL_LONG(&_91$$66, 17); + zephir_array_update_string(&definition, SL("type"), &_91$$66, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("time"))) { + ZEPHIR_INIT_NVAR(&_92$$67); + ZVAL_LONG(&_92$$67, 20); + zephir_array_update_string(&definition, SL("type"), &_92$$67, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("json"))) { + ZEPHIR_INIT_NVAR(&_93$$68); + ZVAL_LONG(&_93$$68, 15); + zephir_array_update_string(&definition, SL("type"), &_93$$68, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("longtext"))) { + ZEPHIR_INIT_NVAR(&_94$$69); + ZVAL_LONG(&_94$$69, 24); + zephir_array_update_string(&definition, SL("type"), &_94$$69, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("mediumtext"))) { + ZEPHIR_INIT_NVAR(&_95$$70); + ZVAL_LONG(&_95$$70, 23); + zephir_array_update_string(&definition, SL("type"), &_95$$70, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("tinytext"))) { + ZEPHIR_INIT_NVAR(&_96$$71); + ZVAL_LONG(&_96$$71, 25); + zephir_array_update_string(&definition, SL("type"), &_96$$71, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("text"))) { + ZEPHIR_INIT_NVAR(&_97$$72); + ZVAL_LONG(&_97$$72, 6); + zephir_array_update_string(&definition, SL("type"), &_97$$72, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("varchar"))) { + ZEPHIR_INIT_NVAR(&_98$$73); + ZVAL_LONG(&_98$$73, 2); + zephir_array_update_string(&definition, SL("type"), &_98$$73, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("char"))) { + ZEPHIR_INIT_NVAR(&_99$$74); + ZVAL_LONG(&_99$$74, 5); + zephir_array_update_string(&definition, SL("type"), &_99$$74, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("varbinary"))) { + ZEPHIR_INIT_NVAR(&_100$$75); + ZVAL_LONG(&_100$$75, 26); + zephir_array_update_string(&definition, SL("type"), &_100$$75, PH_COPY | PH_SEPARATE); + break; + } + if (_66$$49 == zephir_start_with_str(&columnType, SL("binary"))) { + ZEPHIR_INIT_NVAR(&_101$$76); + ZVAL_LONG(&_101$$76, 26); + zephir_array_update_string(&definition, SL("type"), &_101$$76, PH_COPY | PH_SEPARATE); + break; + } + ZEPHIR_INIT_NVAR(&_102$$77); + ZVAL_LONG(&_102$$77, 2); + zephir_array_update_string(&definition, SL("type"), &_102$$77, PH_COPY | PH_SEPARATE); + break; + } while(0); + + if (zephir_memnstr_str(&columnType, SL("("), "phalcon/Db/Adapter/Pdo/Mysql.zep", 417)) { + ZEPHIR_INIT_NVAR(&matches); + ZVAL_NULL(&matches); + zephir_array_fetch_string(&_103$$78, &definition, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 420); + ZEPHIR_INIT_NVAR(&_104$$78); + zephir_preg_match(&_104$$78, &sizePattern, &columnType, &matches, 0, 0 , 0 ); + if (ZEPHIR_IS_LONG(&_103$$78, 18)) { + ZVAL_LONG(&_105$$79, 5); + ZVAL_LONG(&_106$$79, -1); + ZEPHIR_INIT_NVAR(&_107$$79); + zephir_substr(&_107$$79, &columnType, 5 , -1 , 0); + zephir_array_update_string(&definition, SL("size"), &_107$$79, PH_COPY | PH_SEPARATE); + } else if (zephir_is_true(&_104$$78)) { + ZEPHIR_OBS_NVAR(&matchOne); + if (zephir_array_isset_long_fetch(&matchOne, &matches, 1, 0)) { + ZEPHIR_INIT_NVAR(&_108$$81); + ZVAL_LONG(&_108$$81, zephir_get_intval(&matchOne)); + zephir_array_update_string(&definition, SL("size"), &_108$$81, PH_COPY | PH_SEPARATE); } - ZEPHIR_CALL_METHOD(NULL, &joinModels, "next", NULL, 0); - zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&matchTwo); + if (zephir_array_isset_long_fetch(&matchTwo, &matches, 2, 0)) { + ZEPHIR_INIT_NVAR(&_109$$82); + ZVAL_LONG(&_109$$82, zephir_get_intval(&matchTwo)); + zephir_array_update_string(&definition, SL("scale"), &_109$$82, PH_COPY | PH_SEPARATE); + } + } + } + if (zephir_memnstr_str(&columnType, SL("unsigned"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 436)) { + zephir_array_update_string(&definition, SL("unsigned"), &__$true, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_110$$49, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 452); + if (ZEPHIR_IS_STRING(&_110$$49, "PRI")) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_111$$49, &field, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 459); + if (ZEPHIR_IS_STRING(&_111$$49, "YES")) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_112$$49, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 466); + if (ZEPHIR_IS_STRING(&_112$$49, "auto_increment")) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_113$$49, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 473); + if (Z_TYPE_P(&_113$$49) != IS_NULL) { + zephir_array_fetch_long(&_114$$89, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 474); + if (zephir_memnstr_str(&_114$$89, SL("on update"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 474)) { + zephir_array_fetch_long(&_115$$90, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 475); + zephir_array_fetch_long(&_116$$90, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 475); + ZEPHIR_INIT_NVAR(&_117$$90); + ZEPHIR_CONCAT_VSV(&_117$$90, &_115$$90, " ", &_116$$90); + zephir_array_update_string(&definition, SL("default"), &_117$$90, PH_COPY | PH_SEPARATE); + } else { + zephir_array_fetch_long(&_118$$91, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 477); + zephir_array_update_string(&definition, SL("default"), &_118$$91, PH_COPY | PH_SEPARATE); + } + } else { + zephir_array_fetch_long(&_119$$92, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 480); + if (zephir_memnstr_str(&_119$$92, SL("on update"), "phalcon/Db/Adapter/Pdo/Mysql.zep", 480)) { + zephir_array_fetch_long(&_120$$93, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 481); + ZEPHIR_INIT_NVAR(&_121$$93); + ZEPHIR_CONCAT_SV(&_121$$93, "NULL ", &_120$$93); + zephir_array_update_string(&definition, SL("default"), &_121$$93, PH_COPY | PH_SEPARATE); + } + } + zephir_array_fetch_long(&_122$$49, &field, 8, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 488); + if (Z_TYPE_P(&_122$$49) != IS_NULL) { + zephir_array_fetch_long(&_123$$94, &field, 8, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 489); + zephir_array_update_string(&definition, SL("comment"), &_123$$94, PH_COPY | PH_SEPARATE); } + ZEPHIR_OBS_NVAR(&columnName); + zephir_array_fetch_long(&columnName, &field, 0, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 495); + ZEPHIR_INIT_NVAR(&_124$$49); + object_init_ex(&_124$$49, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_124$$49, "__construct", &_64, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_124$$49, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 496); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); + ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&field); + RETURN_CCTOR(&columns); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, describeIndexes) +{ + zend_string *_25; + zend_ulong _24; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_29 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, __$null, indexes, index, keyName, indexType, indexObjects, columns, name, _0, _1, _2, _3, *_4, _5, *_22, _23, _6$$4, _7$$3, _9$$3, _10$$3, _8$$6, _11$$7, _12$$8, _13$$9, _14$$12, _15$$11, _17$$11, _18$$11, _16$$14, _19$$15, _20$$16, _21$$17, _26$$19, _27$$19, _28$$19, _30$$20, _31$$20, _32$$20; + zval table, schema; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&keyName); + ZVAL_UNDEF(&indexType); + ZVAL_UNDEF(&indexObjects); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_23); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_8$$6); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_12$$8); + ZVAL_UNDEF(&_13$$9); + ZVAL_UNDEF(&_14$$12); + ZVAL_UNDEF(&_15$$11); + ZVAL_UNDEF(&_17$$11); + ZVAL_UNDEF(&_18$$11); + ZVAL_UNDEF(&_16$$14); + ZVAL_UNDEF(&_19$$15); + ZVAL_UNDEF(&_20$$16); + ZVAL_UNDEF(&_21$$17); + ZVAL_UNDEF(&_26$$19); + ZVAL_UNDEF(&_27$$19); + ZVAL_UNDEF(&_28$$19); + ZVAL_UNDEF(&_30$$20); + ZVAL_UNDEF(&_31$$20); + ZVAL_UNDEF(&_32$$20); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); + } else { + ZEPHIR_INIT_VAR(&schema); + } + } + + + ZEPHIR_INIT_VAR(&indexes); + array_init(&indexes); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describeindexes", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_3, 2); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/Pdo/Mysql.zep", 546); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) + { + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _4); + zephir_array_fetch_string(&keyName, &index, SL("Key_name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 519); + zephir_array_fetch_string(&indexType, &index, SL("Index_type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 520); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&_6$$4); + array_init(&_6$$4); + zephir_array_update_zval(&indexes, &keyName, &_6$$4, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch(&_7$$3, &indexes, &keyName, PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 526); + if (!(zephir_array_isset_string(&_7$$3, SL("columns")))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + } else { + zephir_array_fetch(&_8$$6, &indexes, &keyName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 529); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_8$$6, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 529); + } + zephir_array_fetch_string(&_9$$3, &index, SL("Column_name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 532); + zephir_array_append(&columns, &_9$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 532); + zephir_array_update_multi(&indexes, &columns, SL("zs"), 3, &keyName, SL("columns")); + zephir_array_fetch_string(&_10$$3, &index, SL("Non_unique"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 539); + if (ZEPHIR_IS_STRING(&keyName, "PRIMARY")) { + ZEPHIR_INIT_NVAR(&_11$$7); + ZVAL_STRING(&_11$$7, "PRIMARY"); + zephir_array_update_multi(&indexes, &_11$$7, SL("zs"), 3, &keyName, SL("type")); + } else if (ZEPHIR_IS_STRING(&indexType, "FULLTEXT")) { + ZEPHIR_INIT_NVAR(&_12$$8); + ZVAL_STRING(&_12$$8, "FULLTEXT"); + zephir_array_update_multi(&indexes, &_12$$8, SL("zs"), 3, &keyName, SL("type")); + } else if (ZEPHIR_IS_LONG(&_10$$3, 0)) { + ZEPHIR_INIT_NVAR(&_13$$9); + ZVAL_STRING(&_13$$9, "UNIQUE"); + zephir_array_update_multi(&indexes, &_13$$9, SL("zs"), 3, &keyName, SL("type")); + } else { + zephir_array_update_multi(&indexes, &__$null, SL("zs"), 3, &keyName, SL("type")); } - ZEPHIR_INIT_NVAR(&joinModel); - ZEPHIR_INIT_NVAR(&joinAlias); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &fromModels, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_43, &fromModels, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_43)) { + if (!zend_is_true(&_5)) { break; } - ZEPHIR_CALL_METHOD(&fromModelName, &fromModels, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_41, &fromModels, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&index, &_0, "current", NULL, 0); zephir_check_call_status(); - zephir_is_iterable(&joinModels, 0, "phalcon/Mvc/Model/Query.zep", 2672); - if (Z_TYPE_P(&joinModels) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&joinModels), _78$$55, _79$$55, _76$$55) - { - ZEPHIR_INIT_NVAR(&joinAlias); - if (_79$$55 != NULL) { - ZVAL_STR_COPY(&joinAlias, _79$$55); - } else { - ZVAL_LONG(&joinAlias, _78$$55); - } - ZEPHIR_INIT_NVAR(&joinModel); - ZVAL_COPY(&joinModel, _76$$55); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2559); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2564); - ZEPHIR_OBS_NVAR(&preCondition); - if (!(zephir_array_isset_fetch(&preCondition, &joinPreCondition, &joinAlias, 0))) { - ZEPHIR_OBS_NVAR(&modelNameAlias); - zephir_array_fetch(&modelNameAlias, &sqlAliasesModels, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2573); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_80, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&relation)) { - ZEPHIR_CALL_METHOD(&relations, &manager, "getrelationsbetween", &_81, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(&relations) != 1)) { - ZEPHIR_INIT_NVAR(&_82$$60); - object_init_ex(&_82$$60, phalcon_mvc_model_exception_ce); - zephir_read_property(&_83$$60, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_84$$60); - ZEPHIR_CONCAT_SVSVSV(&_84$$60, "There is more than one relation between models '", &fromModelName, "' and '", &joinModel, "', the join must be done using an alias, when preparing: ", &_83$$60); - ZEPHIR_CALL_METHOD(NULL, &_82$$60, "__construct", &_8, 29, &_84$$60); - zephir_check_call_status(); - zephir_throw_exception_debug(&_82$$60, "phalcon/Mvc/Model/Query.zep", 2599); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&relation); - zephir_array_fetch_long(&relation, &relations, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2605); - } - } - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_OBS_NVAR(&modelAlias); - zephir_array_fetch(&modelAlias, &sqlModelsAliases, &fromModelName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2616); - ZEPHIR_CALL_METHOD(&_85$$61, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_85$$61))) { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getsinglejoin", &_56, 463, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getmultijoin", &_57, 464, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } - if (zephir_array_isset_long(&sqlJoin, 0)) { - zephir_is_iterable(&sqlJoin, 0, "phalcon/Mvc/Model/Query.zep", 2646); - if (Z_TYPE_P(&sqlJoin) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&sqlJoin), _86$$64) - { - ZEPHIR_INIT_NVAR(&sqlJoinItem); - ZVAL_COPY(&sqlJoinItem, _86$$64); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_87$$64, &sqlJoin, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_87$$64)) { - break; - } - ZEPHIR_CALL_METHOD(&sqlJoinItem, &sqlJoin, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&sqlJoinItem); - } else { - zephir_array_append(&sqlJoins, &sqlJoin, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2647); - } - } else { - ZEPHIR_INIT_NVAR(&_88$$68); - zephir_create_array(&_88$$68, 3, 0); - zephir_array_update_string(&_88$$68, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_88$$68, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_89$$68); - array_init(&_89$$68); - zephir_array_update_string(&_88$$68, SL("conditions"), &_89$$68, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_88$$68, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2658); - } - } else { - ZEPHIR_INIT_NVAR(&_90$$69); - zephir_create_array(&_90$$69, 3, 0); - zephir_array_update_string(&_90$$69, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_90$$69, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_91$$69); - zephir_create_array(&_91$$69, 1, 0); - zephir_array_fast_append(&_91$$69, &preCondition); - zephir_array_update_string(&_90$$69, SL("conditions"), &_91$$69, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_90$$69, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2669); - } - } ZEND_HASH_FOREACH_END(); + ZEPHIR_OBS_NVAR(&keyName); + zephir_array_fetch_string(&keyName, &index, SL("Key_name"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 519); + ZEPHIR_OBS_NVAR(&indexType); + zephir_array_fetch_string(&indexType, &index, SL("Index_type"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 520); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&_14$$12); + array_init(&_14$$12); + zephir_array_update_zval(&indexes, &keyName, &_14$$12, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch(&_15$$11, &indexes, &keyName, PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 526); + if (!(zephir_array_isset_string(&_15$$11, SL("columns")))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); } else { - ZEPHIR_CALL_METHOD(NULL, &joinModels, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_77$$55, &joinModels, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_77$$55)) { - break; - } - ZEPHIR_CALL_METHOD(&joinAlias, &joinModels, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&joinModel, &joinModels, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&joinSource); - zephir_array_fetch(&joinSource, &joinSources, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2559); - ZEPHIR_OBS_NVAR(&joinType); - zephir_array_fetch(&joinType, &joinTypes, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2564); - ZEPHIR_OBS_NVAR(&preCondition); - if (!(zephir_array_isset_fetch(&preCondition, &joinPreCondition, &joinAlias, 0))) { - ZEPHIR_OBS_NVAR(&modelNameAlias); - zephir_array_fetch(&modelNameAlias, &sqlAliasesModels, &joinAlias, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2573); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_92, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (ZEPHIR_IS_FALSE_IDENTICAL(&relation)) { - ZEPHIR_CALL_METHOD(&relations, &manager, "getrelationsbetween", &_93, 0, &fromModelName, &modelNameAlias); - zephir_check_call_status(); - if (Z_TYPE_P(&relations) == IS_ARRAY) { - if (UNEXPECTED(zephir_fast_count_int(&relations) != 1)) { - ZEPHIR_INIT_NVAR(&_94$$74); - object_init_ex(&_94$$74, phalcon_mvc_model_exception_ce); - zephir_read_property(&_95$$74, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_96$$74); - ZEPHIR_CONCAT_SVSVSV(&_96$$74, "There is more than one relation between models '", &fromModelName, "' and '", &joinModel, "', the join must be done using an alias, when preparing: ", &_95$$74); - ZEPHIR_CALL_METHOD(NULL, &_94$$74, "__construct", &_8, 29, &_96$$74); - zephir_check_call_status(); - zephir_throw_exception_debug(&_94$$74, "phalcon/Mvc/Model/Query.zep", 2599); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&relation); - zephir_array_fetch_long(&relation, &relations, 0, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2605); - } - } - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_OBS_NVAR(&modelAlias); - zephir_array_fetch(&modelAlias, &sqlModelsAliases, &fromModelName, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2616); - ZEPHIR_CALL_METHOD(&_97$$75, &relation, "isthrough", NULL, 0); - zephir_check_call_status(); - if (!(zephir_is_true(&_97$$75))) { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getsinglejoin", &_56, 463, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&sqlJoin, this_ptr, "getmultijoin", &_57, 464, &joinType, &joinSource, &modelAlias, &joinAlias, &relation); - zephir_check_call_status(); - } - if (zephir_array_isset_long(&sqlJoin, 0)) { - zephir_is_iterable(&sqlJoin, 0, "phalcon/Mvc/Model/Query.zep", 2646); - if (Z_TYPE_P(&sqlJoin) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&sqlJoin), _98$$78) - { - ZEPHIR_INIT_NVAR(&sqlJoinItem); - ZVAL_COPY(&sqlJoinItem, _98$$78); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_99$$78, &sqlJoin, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_99$$78)) { - break; - } - ZEPHIR_CALL_METHOD(&sqlJoinItem, &sqlJoin, "current", NULL, 0); - zephir_check_call_status(); - zephir_array_append(&sqlJoins, &sqlJoinItem, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2644); - ZEPHIR_CALL_METHOD(NULL, &sqlJoin, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&sqlJoinItem); - } else { - zephir_array_append(&sqlJoins, &sqlJoin, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2647); - } - } else { - ZEPHIR_INIT_NVAR(&_100$$82); - zephir_create_array(&_100$$82, 3, 0); - zephir_array_update_string(&_100$$82, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_100$$82, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_101$$82); - array_init(&_101$$82); - zephir_array_update_string(&_100$$82, SL("conditions"), &_101$$82, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_100$$82, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2658); - } - } else { - ZEPHIR_INIT_NVAR(&_102$$83); - zephir_create_array(&_102$$83, 3, 0); - zephir_array_update_string(&_102$$83, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_102$$83, SL("source"), &joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_103$$83); - zephir_create_array(&_103$$83, 1, 0); - zephir_array_fast_append(&_103$$83, &preCondition); - zephir_array_update_string(&_102$$83, SL("conditions"), &_103$$83, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoins, &_102$$83, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2669); - } - ZEPHIR_CALL_METHOD(NULL, &joinModels, "next", NULL, 0); - zephir_check_call_status(); - } + zephir_array_fetch(&_16$$14, &indexes, &keyName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 529); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_16$$14, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 529); } - ZEPHIR_INIT_NVAR(&joinModel); - ZEPHIR_INIT_NVAR(&joinAlias); - ZEPHIR_CALL_METHOD(NULL, &fromModels, "next", NULL, 0); + zephir_array_fetch_string(&_17$$11, &index, SL("Column_name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 532); + zephir_array_append(&columns, &_17$$11, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 532); + zephir_array_update_multi(&indexes, &columns, SL("zs"), 3, &keyName, SL("columns")); + zephir_array_fetch_string(&_18$$11, &index, SL("Non_unique"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 539); + if (ZEPHIR_IS_STRING(&keyName, "PRIMARY")) { + ZEPHIR_INIT_NVAR(&_19$$15); + ZVAL_STRING(&_19$$15, "PRIMARY"); + zephir_array_update_multi(&indexes, &_19$$15, SL("zs"), 3, &keyName, SL("type")); + } else if (ZEPHIR_IS_STRING(&indexType, "FULLTEXT")) { + ZEPHIR_INIT_NVAR(&_20$$16); + ZVAL_STRING(&_20$$16, "FULLTEXT"); + zephir_array_update_multi(&indexes, &_20$$16, SL("zs"), 3, &keyName, SL("type")); + } else if (ZEPHIR_IS_LONG(&_18$$11, 0)) { + ZEPHIR_INIT_NVAR(&_21$$17); + ZVAL_STRING(&_21$$17, "UNIQUE"); + zephir_array_update_multi(&indexes, &_21$$17, SL("zs"), 3, &keyName, SL("type")); + } else { + zephir_array_update_multi(&indexes, &__$null, SL("zs"), 3, &keyName, SL("type")); + } + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&_41); - ZEPHIR_INIT_NVAR(&fromModelName); - RETURN_CTOR(&sqlJoins); + ZEPHIR_INIT_NVAR(&index); + ZEPHIR_INIT_VAR(&indexObjects); + array_init(&indexObjects); + zephir_is_iterable(&indexes, 0, "phalcon/Db/Adapter/Pdo/Mysql.zep", 556); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&indexes), _24, _25, _22) + { + ZEPHIR_INIT_NVAR(&name); + if (_25 != NULL) { + ZVAL_STR_COPY(&name, _25); + } else { + ZVAL_LONG(&name, _24); + } + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _22); + ZEPHIR_INIT_NVAR(&_26$$19); + object_init_ex(&_26$$19, phalcon_db_index_ce); + zephir_array_fetch_string(&_27$$19, &index, SL("columns"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 551); + zephir_array_fetch_string(&_28$$19, &index, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 553); + ZEPHIR_CALL_METHOD(NULL, &_26$$19, "__construct", &_29, 30, &name, &_27$$19, &_28$$19); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_26$$19, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_23, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_23)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &indexes, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&index, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_30$$20); + object_init_ex(&_30$$20, phalcon_db_index_ce); + zephir_array_fetch_string(&_31$$20, &index, SL("columns"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 551); + zephir_array_fetch_string(&_32$$20, &index, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 553); + ZEPHIR_CALL_METHOD(NULL, &_30$$20, "__construct", &_29, 30, &name, &_31$$20, &_32$$20); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_30$$20, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&index); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&indexObjects); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getMultiJoin) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, describeReferences) { - zend_string *_4$$3; - zend_ulong _3$$3; - zval sqlJoins, _10$$4, _12$$4, _18$$6, _19$$6, _21$$8, _22$$8, _23$$8, _25$$8, _26$$8, _27$$8, _28$$8; + zval _14$$3, _23$$6, _29$$9, _33$$10; + zend_string *_27; + zend_ulong _26; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_8 = NULL, *_11 = NULL; + zephir_fcall_cache_entry *_31 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *joinType_param = NULL, *joinSource, joinSource_sub, *modelAlias_param = NULL, *joinAlias_param = NULL, *relation, relation_sub, fields, referencedFields, intermediateModelName, intermediateModel, intermediateSource, intermediateSchema, intermediateFields, intermediateReferencedFields, referencedModelName, manager, field, position, intermediateField, sqlEqualsJoinCondition, _0, *_1$$3, _2$$3, _5$$5, _6$$5, _7$$5, _9$$4, _13$$7, _14$$7, _15$$7, _16$$6, _17$$6, _20$$8, _24$$8; - zval joinType, modelAlias, joinAlias; + zval *table_param = NULL, *schema_param = NULL, references, reference, arrayReference, constraintName, referenceObjects, name, referencedSchema, referencedTable, columns, referencedColumns, referenceUpdate, referenceDelete, _0, _1, _2, _3, *_4, _5, *_24, _25, _6$$5, _7$$5, _8$$5, _9$$5, _10$$5, _11$$5, _12$$3, _13$$3, _15$$8, _16$$8, _17$$8, _18$$8, _19$$8, _20$$8, _21$$6, _22$$6, _28$$9, _30$$9, _32$$10, _34$$10; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&joinType); - ZVAL_UNDEF(&modelAlias); - ZVAL_UNDEF(&joinAlias); - ZVAL_UNDEF(&joinSource_sub); - ZVAL_UNDEF(&relation_sub); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&intermediateModelName); - ZVAL_UNDEF(&intermediateModel); - ZVAL_UNDEF(&intermediateSource); - ZVAL_UNDEF(&intermediateSchema); - ZVAL_UNDEF(&intermediateFields); - ZVAL_UNDEF(&intermediateReferencedFields); - ZVAL_UNDEF(&referencedModelName); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&field); - ZVAL_UNDEF(&position); - ZVAL_UNDEF(&intermediateField); - ZVAL_UNDEF(&sqlEqualsJoinCondition); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&arrayReference); + ZVAL_UNDEF(&constraintName); + ZVAL_UNDEF(&referenceObjects); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&referencedSchema); + ZVAL_UNDEF(&referencedTable); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&referencedColumns); + ZVAL_UNDEF(&referenceUpdate); + ZVAL_UNDEF(&referenceDelete); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_5$$5); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_25); ZVAL_UNDEF(&_6$$5); ZVAL_UNDEF(&_7$$5); - ZVAL_UNDEF(&_9$$4); - ZVAL_UNDEF(&_13$$7); - ZVAL_UNDEF(&_14$$7); - ZVAL_UNDEF(&_15$$7); - ZVAL_UNDEF(&_16$$6); - ZVAL_UNDEF(&_17$$6); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_11$$5); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_13$$3); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_18$$8); + ZVAL_UNDEF(&_19$$8); ZVAL_UNDEF(&_20$$8); - ZVAL_UNDEF(&_24$$8); - ZVAL_UNDEF(&sqlJoins); - ZVAL_UNDEF(&_10$$4); - ZVAL_UNDEF(&_12$$4); - ZVAL_UNDEF(&_18$$6); - ZVAL_UNDEF(&_19$$6); - ZVAL_UNDEF(&_21$$8); - ZVAL_UNDEF(&_22$$8); - ZVAL_UNDEF(&_23$$8); - ZVAL_UNDEF(&_25$$8); - ZVAL_UNDEF(&_26$$8); - ZVAL_UNDEF(&_27$$8); - ZVAL_UNDEF(&_28$$8); + ZVAL_UNDEF(&_21$$6); + ZVAL_UNDEF(&_22$$6); + ZVAL_UNDEF(&_28$$9); + ZVAL_UNDEF(&_30$$9); + ZVAL_UNDEF(&_32$$10); + ZVAL_UNDEF(&_34$$10); + ZVAL_UNDEF(&_14$$3); + ZVAL_UNDEF(&_23$$6); + ZVAL_UNDEF(&_29$$9); + ZVAL_UNDEF(&_33$$10); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(5, 5) - Z_PARAM_STR(joinType) - Z_PARAM_ZVAL(joinSource) - Z_PARAM_STR(modelAlias) - Z_PARAM_STR(joinAlias) - Z_PARAM_OBJECT_OF_CLASS(relation, phalcon_mvc_model_relationinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 5, 0, &joinType_param, &joinSource, &modelAlias_param, &joinAlias_param, &relation); - if (UNEXPECTED(Z_TYPE_P(joinType_param) != IS_STRING && Z_TYPE_P(joinType_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'joinType' must be of the type string")); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); RETURN_MM_NULL(); } - if (EXPECTED(Z_TYPE_P(joinType_param) == IS_STRING)) { - zephir_get_strval(&joinType, joinType_param); + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - ZEPHIR_INIT_VAR(&joinType); + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); + } else { + ZEPHIR_INIT_VAR(&schema); + } } - zephir_get_strval(&modelAlias, modelAlias_param); - zephir_get_strval(&joinAlias, joinAlias_param); - ZEPHIR_INIT_VAR(&sqlJoins); - array_init(&sqlJoins); - ZEPHIR_CALL_METHOD(&fields, relation, "getfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, relation, "getreferencedfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateModelName, relation, "getintermediatemodel", NULL, 0); - zephir_check_call_status(); - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_CALL_METHOD(&intermediateModel, &manager, "load", NULL, 0, &intermediateModelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateSource, &intermediateModel, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateSchema, &intermediateModel, "getschema", NULL, 0); + ZEPHIR_INIT_VAR(&references); + array_init(&references); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describereferences", NULL, 0, &table, &schema); zephir_check_call_status(); - zephir_update_property_array(this_ptr, SL("sqlAliases"), &intermediateModelName, &intermediateSource); - zephir_update_property_array(this_ptr, SL("sqlAliasesModelsInstances"), &intermediateModelName, &intermediateModel); - ZEPHIR_CALL_METHOD(&intermediateFields, relation, "getintermediatefields", NULL, 0); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&intermediateReferencedFields, relation, "getintermediatereferencedfields", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedModelName, relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model/Query.zep", 2791); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fields), _3$$3, _4$$3, _1$$3) - { - ZEPHIR_INIT_NVAR(&field); - if (_4$$3 != NULL) { - ZVAL_STR_COPY(&field, _4$$3); - } else { - ZVAL_LONG(&field, _3$$3); - } - ZEPHIR_INIT_NVAR(&position); - ZVAL_COPY(&position, _1$$3); - if (UNEXPECTED(!(zephir_array_isset(&referencedFields, &position)))) { - ZEPHIR_INIT_NVAR(&_5$$5); - object_init_ex(&_5$$5, phalcon_mvc_model_exception_ce); - zephir_read_property(&_6$$5, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_7$$5); - ZEPHIR_CONCAT_SVSVSV(&_7$$5, "The number of fields must be equal to the number of referenced fields in join ", &modelAlias, "-", &joinAlias, ", when preparing: ", &_6$$5); - ZEPHIR_CALL_METHOD(NULL, &_5$$5, "__construct", &_8, 29, &_7$$5); - zephir_check_call_status(); - zephir_throw_exception_debug(&_5$$5, "phalcon/Mvc/Model/Query.zep", 2758); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&intermediateField); - zephir_array_fetch(&intermediateField, &intermediateFields, &position, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2764); - ZEPHIR_INIT_NVAR(&sqlEqualsJoinCondition); - zephir_create_array(&sqlEqualsJoinCondition, 4, 0); - add_assoc_stringl_ex(&sqlEqualsJoinCondition, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&sqlEqualsJoinCondition, SL("op"), SL("=")); - ZEPHIR_INIT_NVAR(&_10$$4); - zephir_create_array(&_10$$4, 3, 0); - add_assoc_long_ex(&_10$$4, SL("type"), 355); - zephir_array_update_string(&_10$$4, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_10$$4, SL("name"), &field, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "getqualified", &_11, 457, &_10$$4); - zephir_check_call_status(); - zephir_array_update_string(&sqlEqualsJoinCondition, SL("left"), &_9$$4, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_12$$4); - zephir_create_array(&_12$$4, 3, 0); - add_assoc_stringl_ex(&_12$$4, SL("type"), SL("qualified")); - zephir_array_update_string(&_12$$4, SL("domain"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_12$$4, SL("name"), &referencedFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_9$$4, this_ptr, "getqualified", &_11, 457, &_12$$4); - zephir_check_call_status(); - zephir_array_update_string(&sqlEqualsJoinCondition, SL("right"), &_9$$4, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2$$3, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2$$3)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &fields, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&position, &fields, "current", NULL, 0); - zephir_check_call_status(); - if (UNEXPECTED(!(zephir_array_isset(&referencedFields, &position)))) { - ZEPHIR_INIT_NVAR(&_13$$7); - object_init_ex(&_13$$7, phalcon_mvc_model_exception_ce); - zephir_read_property(&_14$$7, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_15$$7); - ZEPHIR_CONCAT_SVSVSV(&_15$$7, "The number of fields must be equal to the number of referenced fields in join ", &modelAlias, "-", &joinAlias, ", when preparing: ", &_14$$7); - ZEPHIR_CALL_METHOD(NULL, &_13$$7, "__construct", &_8, 29, &_15$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_13$$7, "phalcon/Mvc/Model/Query.zep", 2758); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_OBS_NVAR(&intermediateField); - zephir_array_fetch(&intermediateField, &intermediateFields, &position, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2764); - ZEPHIR_INIT_NVAR(&_16$$6); - zephir_create_array(&_16$$6, 4, 0); - add_assoc_stringl_ex(&_16$$6, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_16$$6, SL("op"), SL("=")); - ZEPHIR_INIT_NVAR(&_18$$6); - zephir_create_array(&_18$$6, 3, 0); - add_assoc_long_ex(&_18$$6, SL("type"), 355); - zephir_array_update_string(&_18$$6, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_18$$6, SL("name"), &field, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_17$$6, this_ptr, "getqualified", &_11, 457, &_18$$6); - zephir_check_call_status(); - zephir_array_update_string(&_16$$6, SL("left"), &_17$$6, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_19$$6); - zephir_create_array(&_19$$6, 3, 0); - add_assoc_stringl_ex(&_19$$6, SL("type"), SL("qualified")); - zephir_array_update_string(&_19$$6, SL("domain"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_19$$6, SL("name"), &referencedFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_17$$6, this_ptr, "getqualified", &_11, 457, &_19$$6); - zephir_check_call_status(); - zephir_array_update_string(&_16$$6, SL("right"), &_17$$6, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&sqlEqualsJoinCondition, &_16$$6); - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); - zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/Pdo/Mysql.zep", 609); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) + { + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _4); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 578); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 581); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 582); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_long(&referenceUpdate, &reference, 6, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 583); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_long(&referenceDelete, &reference, 7, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 584); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); + } else { + zephir_array_fetch(&_6$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 588); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_6$$5, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 588); + zephir_array_fetch(&_7$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 589); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_7$$5, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 589); + zephir_array_fetch(&_8$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 590); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_8$$5, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 590); + zephir_array_fetch(&_9$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 591); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_9$$5, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 591); + zephir_array_fetch(&_10$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 592); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_string(&referenceUpdate, &_10$$5, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 592); + zephir_array_fetch(&_11$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 593); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_string(&referenceDelete, &_11$$5, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 593); } - } - ZEPHIR_INIT_NVAR(&position); - ZEPHIR_INIT_NVAR(&field); + zephir_array_fetch_long(&_12$$3, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 596); + zephir_array_append(&columns, &_12$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 596); + zephir_array_fetch_long(&_13$$3, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 597); + zephir_array_append(&referencedColumns, &_13$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 597); + ZEPHIR_INIT_NVAR(&_14$$3); + zephir_create_array(&_14$$3, 6, 0); + zephir_array_update_string(&_14$$3, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("onUpdate"), &referenceUpdate, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("onDelete"), &referenceDelete, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_14$$3, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_INIT_VAR(&_20$$8); - zephir_create_array(&_20$$8, 2, 0); - ZEPHIR_INIT_VAR(&_21$$8); - zephir_create_array(&_21$$8, 3, 0); - zephir_array_update_string(&_21$$8, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_22$$8); - zephir_create_array(&_22$$8, 2, 0); - zephir_array_fast_append(&_22$$8, &intermediateSource); - zephir_array_fast_append(&_22$$8, &intermediateSchema); - zephir_array_update_string(&_21$$8, SL("source"), &_22$$8, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_22$$8); - zephir_create_array(&_22$$8, 1, 0); - ZEPHIR_INIT_VAR(&_23$$8); - zephir_create_array(&_23$$8, 4, 0); - add_assoc_stringl_ex(&_23$$8, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_23$$8, SL("op"), SL("=")); - ZEPHIR_INIT_VAR(&_25$$8); - zephir_create_array(&_25$$8, 3, 0); - add_assoc_long_ex(&_25$$8, SL("type"), 355); - zephir_array_update_string(&_25$$8, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_25$$8, SL("name"), &fields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_24$$8, this_ptr, "getqualified", &_11, 457, &_25$$8); - zephir_check_call_status(); - zephir_array_update_string(&_23$$8, SL("left"), &_24$$8, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_26$$8); - zephir_create_array(&_26$$8, 3, 0); - add_assoc_stringl_ex(&_26$$8, SL("type"), SL("qualified")); - zephir_array_update_string(&_26$$8, SL("domain"), &intermediateModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_26$$8, SL("name"), &intermediateFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_24$$8, this_ptr, "getqualified", &_11, 457, &_26$$8); - zephir_check_call_status(); - zephir_array_update_string(&_23$$8, SL("right"), &_24$$8, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_22$$8, &_23$$8); - zephir_array_update_string(&_21$$8, SL("conditions"), &_22$$8, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_20$$8, &_21$$8); - ZEPHIR_INIT_NVAR(&_21$$8); - zephir_create_array(&_21$$8, 3, 0); - zephir_array_update_string(&_21$$8, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_21$$8, SL("source"), joinSource, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_22$$8); - zephir_create_array(&_22$$8, 1, 0); - ZEPHIR_INIT_NVAR(&_23$$8); - zephir_create_array(&_23$$8, 4, 0); - add_assoc_stringl_ex(&_23$$8, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_23$$8, SL("op"), SL("=")); - ZEPHIR_INIT_VAR(&_27$$8); - zephir_create_array(&_27$$8, 3, 0); - add_assoc_long_ex(&_27$$8, SL("type"), 355); - zephir_array_update_string(&_27$$8, SL("domain"), &intermediateModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_27$$8, SL("name"), &intermediateReferencedFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_24$$8, this_ptr, "getqualified", &_11, 457, &_27$$8); - zephir_check_call_status(); - zephir_array_update_string(&_23$$8, SL("left"), &_24$$8, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_28$$8); - zephir_create_array(&_28$$8, 3, 0); - add_assoc_stringl_ex(&_28$$8, SL("type"), SL("qualified")); - zephir_array_update_string(&_28$$8, SL("domain"), &referencedModelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_28$$8, SL("name"), &referencedFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_24$$8, this_ptr, "getqualified", &_11, 457, &_28$$8); + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); zephir_check_call_status(); - zephir_array_update_string(&_23$$8, SL("right"), &_24$$8, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_22$$8, &_23$$8); - zephir_array_update_string(&_21$$8, SL("conditions"), &_22$$8, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_20$$8, &_21$$8); - ZEPHIR_CPY_WRT(&sqlJoins, &_20$$8); - } - RETURN_CTOR(&sqlJoins); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, getOrderClause) -{ - zval orderParts, orderPartSort; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_3 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *order, order_sub, orderColumns, orderItem, orderPartExpr, orderSort, *_0, _1, _2$$5, _4$$7, _5$$8, _6$$8, _7$$9, _8$$10, _9$$12, _10$$12, _11$$13, _12$$13, _13$$14; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&order_sub); - ZVAL_UNDEF(&orderColumns); - ZVAL_UNDEF(&orderItem); - ZVAL_UNDEF(&orderPartExpr); - ZVAL_UNDEF(&orderSort); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_2$$5); - ZVAL_UNDEF(&_4$$7); - ZVAL_UNDEF(&_5$$8); - ZVAL_UNDEF(&_6$$8); - ZVAL_UNDEF(&_7$$9); - ZVAL_UNDEF(&_8$$10); - ZVAL_UNDEF(&_9$$12); - ZVAL_UNDEF(&_10$$12); - ZVAL_UNDEF(&_11$$13); - ZVAL_UNDEF(&_12$$13); - ZVAL_UNDEF(&_13$$14); - ZVAL_UNDEF(&orderParts); - ZVAL_UNDEF(&orderPartSort); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ZVAL(order) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &order); - - - if (!(zephir_array_isset_long(order, 0))) { - ZEPHIR_INIT_VAR(&orderColumns); - zephir_create_array(&orderColumns, 1, 0); - zephir_array_fast_append(&orderColumns, order); - } else { - ZEPHIR_CPY_WRT(&orderColumns, order); - } - ZEPHIR_INIT_VAR(&orderParts); - array_init(&orderParts); - zephir_is_iterable(&orderColumns, 0, "phalcon/Mvc/Model/Query.zep", 2900); - if (Z_TYPE_P(&orderColumns) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&orderColumns), _0) - { - ZEPHIR_INIT_NVAR(&orderItem); - ZVAL_COPY(&orderItem, _0); - zephir_array_fetch_string(&_2$$5, &orderItem, SL("column"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2882); - ZEPHIR_CALL_METHOD(&orderPartExpr, this_ptr, "getexpression", &_3, 456, &_2$$5); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); zephir_check_call_status(); - if (zephir_array_isset_string_fetch(&orderSort, &orderItem, SL("sort"), 1)) { - if (ZEPHIR_IS_LONG(&orderSort, 327)) { - ZEPHIR_INIT_NVAR(&orderPartSort); - zephir_create_array(&orderPartSort, 2, 0); - zephir_array_fast_append(&orderPartSort, &orderPartExpr); - ZEPHIR_INIT_NVAR(&_4$$7); - ZVAL_STRING(&_4$$7, "ASC"); - zephir_array_fast_append(&orderPartSort, &_4$$7); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&reference, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_OBS_NVAR(&constraintName); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 578); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 581); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 582); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_long(&referenceUpdate, &reference, 6, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 583); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_long(&referenceDelete, &reference, 7, PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 584); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); } else { - ZEPHIR_INIT_NVAR(&_5$$8); - zephir_create_array(&_5$$8, 2, 0); - zephir_array_fast_append(&_5$$8, &orderPartExpr); - ZEPHIR_INIT_NVAR(&_6$$8); - ZVAL_STRING(&_6$$8, "DESC"); - zephir_array_fast_append(&_5$$8, &_6$$8); - ZEPHIR_CPY_WRT(&orderPartSort, &_5$$8); + zephir_array_fetch(&_15$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 588); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_15$$8, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 588); + zephir_array_fetch(&_16$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 589); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_16$$8, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 589); + zephir_array_fetch(&_17$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 590); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_17$$8, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 590); + zephir_array_fetch(&_18$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 591); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_18$$8, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 591); + zephir_array_fetch(&_19$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 592); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_string(&referenceUpdate, &_19$$8, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 592); + zephir_array_fetch(&_20$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 593); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_string(&referenceDelete, &_20$$8, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 593); } + zephir_array_fetch_long(&_21$$6, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 596); + zephir_array_append(&columns, &_21$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 596); + zephir_array_fetch_long(&_22$$6, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 597); + zephir_array_append(&referencedColumns, &_22$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Mysql.zep", 597); + ZEPHIR_INIT_NVAR(&_23$$6); + zephir_create_array(&_23$$6, 6, 0); + zephir_array_update_string(&_23$$6, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("onUpdate"), &referenceUpdate, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("onDelete"), &referenceDelete, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_23$$6, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); + } + } + ZEPHIR_INIT_NVAR(&reference); + ZEPHIR_INIT_VAR(&referenceObjects); + array_init(&referenceObjects); + zephir_is_iterable(&references, 0, "phalcon/Db/Adapter/Pdo/Mysql.zep", 624); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&references), _26, _27, _24) + { + ZEPHIR_INIT_NVAR(&name); + if (_27 != NULL) { + ZVAL_STR_COPY(&name, _27); } else { - ZEPHIR_INIT_NVAR(&_7$$9); - zephir_create_array(&_7$$9, 1, 0); - zephir_array_fast_append(&_7$$9, &orderPartExpr); - ZEPHIR_CPY_WRT(&orderPartSort, &_7$$9); + ZVAL_LONG(&name, _26); } - zephir_array_append(&orderParts, &orderPartSort, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2897); + ZEPHIR_INIT_NVAR(&arrayReference); + ZVAL_COPY(&arrayReference, _24); + ZEPHIR_INIT_NVAR(&_28$$9); + object_init_ex(&_28$$9, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_29$$9); + zephir_create_array(&_29$$9, 6, 0); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 614); + zephir_array_update_string(&_29$$9, SL("referencedSchema"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 615); + zephir_array_update_string(&_29$$9, SL("referencedTable"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 616); + zephir_array_update_string(&_29$$9, SL("columns"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 617); + zephir_array_update_string(&_29$$9, SL("referencedColumns"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 618); + zephir_array_update_string(&_29$$9, SL("onUpdate"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 620); + zephir_array_update_string(&_29$$9, SL("onDelete"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_28$$9, "__construct", &_31, 31, &name, &_29$$9); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_28$$9, PH_COPY | PH_SEPARATE); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &orderColumns, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_1, &orderColumns, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_25, &references, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_1)) { + if (!zend_is_true(&_25)) { break; } - ZEPHIR_CALL_METHOD(&orderItem, &orderColumns, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&name, &references, "key", NULL, 0); zephir_check_call_status(); - zephir_array_fetch_string(&_8$$10, &orderItem, SL("column"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2882); - ZEPHIR_CALL_METHOD(&orderPartExpr, this_ptr, "getexpression", &_3, 456, &_8$$10); + ZEPHIR_CALL_METHOD(&arrayReference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_32$$10); + object_init_ex(&_32$$10, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_33$$10); + zephir_create_array(&_33$$10, 6, 0); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 614); + zephir_array_update_string(&_33$$10, SL("referencedSchema"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 615); + zephir_array_update_string(&_33$$10, SL("referencedTable"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 616); + zephir_array_update_string(&_33$$10, SL("columns"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 617); + zephir_array_update_string(&_33$$10, SL("referencedColumns"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 618); + zephir_array_update_string(&_33$$10, SL("onUpdate"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Mysql.zep", 620); + zephir_array_update_string(&_33$$10, SL("onDelete"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_32$$10, "__construct", &_31, 31, &name, &_33$$10); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&orderSort); - if (zephir_array_isset_string_fetch(&orderSort, &orderItem, SL("sort"), 0)) { - if (ZEPHIR_IS_LONG(&orderSort, 327)) { - ZEPHIR_INIT_NVAR(&_9$$12); - zephir_create_array(&_9$$12, 2, 0); - zephir_array_fast_append(&_9$$12, &orderPartExpr); - ZEPHIR_INIT_NVAR(&_10$$12); - ZVAL_STRING(&_10$$12, "ASC"); - zephir_array_fast_append(&_9$$12, &_10$$12); - ZEPHIR_CPY_WRT(&orderPartSort, &_9$$12); - } else { - ZEPHIR_INIT_NVAR(&_11$$13); - zephir_create_array(&_11$$13, 2, 0); - zephir_array_fast_append(&_11$$13, &orderPartExpr); - ZEPHIR_INIT_NVAR(&_12$$13); - ZVAL_STRING(&_12$$13, "DESC"); - zephir_array_fast_append(&_11$$13, &_12$$13); - ZEPHIR_CPY_WRT(&orderPartSort, &_11$$13); - } - } else { - ZEPHIR_INIT_NVAR(&_13$$14); - zephir_create_array(&_13$$14, 1, 0); - zephir_array_fast_append(&_13$$14, &orderPartExpr); - ZEPHIR_CPY_WRT(&orderPartSort, &_13$$14); - } - zephir_array_append(&orderParts, &orderPartSort, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 2897); - ZEPHIR_CALL_METHOD(NULL, &orderColumns, "next", NULL, 0); + zephir_array_update_zval(&referenceObjects, &name, &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&orderItem); - RETURN_CTOR(&orderParts); + ZEPHIR_INIT_NVAR(&arrayReference); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&referenceObjects); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getQualified) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, getDsnDefaults) +{ + zval *this_ptr = getThis(); + + + + zephir_create_array(return_value, 1, 0); + add_assoc_stringl_ex(return_value, SL("charset"), SL("utf8mb4")); + return; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_Pdo_Postgresql) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Adapter\\Pdo, Postgresql, phalcon, db_adapter_pdo_postgresql, phalcon_db_adapter_pdo_abstractpdo_ce, phalcon_db_adapter_pdo_postgresql_method_entry, 0); + + zend_declare_property_string(phalcon_db_adapter_pdo_postgresql_ce, SL("dialectType"), "postgresql", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_db_adapter_pdo_postgresql_ce, SL("type"), "pgsql", ZEND_ACC_PROTECTED); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, __construct) { - zend_bool _3, _4; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_22 = NULL, *_27 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, number = 0; - zval *expr_param = NULL, columnName, nestingLevel, sqlColumnAliases, metaData, sqlAliases, source, sqlAliasesModelsInstances, realColumnName, columnDomain, model, models, columnMap, hasModel, className, _0, _5, _6, _1$$3, _2$$3, _7$$6, _8$$7, _9$$7, _10$$7, _11$$8, _12$$9, _13$$9, _14$$9, _15$$12, _16$$12, _17$$12, _18$$14, *_19$$14, _20$$14, _34$$14, _21$$15, _23$$17, _24$$17, _25$$17, _26$$18, _28$$20, _29$$20, _30$$20, _31$$21, _32$$21, _33$$21, _35$$23, _36$$23, _37$$23, _38$$27, _39$$27, _40$$27; - zval expr; + zephir_fcall_cache_entry *_1 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *descriptor_param = NULL, _0$$3; + zval descriptor; zval *this_ptr = getThis(); - ZVAL_UNDEF(&expr); - ZVAL_UNDEF(&columnName); - ZVAL_UNDEF(&nestingLevel); - ZVAL_UNDEF(&sqlColumnAliases); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&sqlAliasesModelsInstances); - ZVAL_UNDEF(&realColumnName); - ZVAL_UNDEF(&columnDomain); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&columnMap); - ZVAL_UNDEF(&hasModel); - ZVAL_UNDEF(&className); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_2$$3); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_10$$7); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$9); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_14$$9); - ZVAL_UNDEF(&_15$$12); - ZVAL_UNDEF(&_16$$12); - ZVAL_UNDEF(&_17$$12); - ZVAL_UNDEF(&_18$$14); - ZVAL_UNDEF(&_20$$14); - ZVAL_UNDEF(&_34$$14); - ZVAL_UNDEF(&_21$$15); - ZVAL_UNDEF(&_23$$17); - ZVAL_UNDEF(&_24$$17); - ZVAL_UNDEF(&_25$$17); - ZVAL_UNDEF(&_26$$18); - ZVAL_UNDEF(&_28$$20); - ZVAL_UNDEF(&_29$$20); - ZVAL_UNDEF(&_30$$20); - ZVAL_UNDEF(&_31$$21); - ZVAL_UNDEF(&_32$$21); - ZVAL_UNDEF(&_33$$21); - ZVAL_UNDEF(&_35$$23); - ZVAL_UNDEF(&_36$$23); - ZVAL_UNDEF(&_37$$23); - ZVAL_UNDEF(&_38$$27); - ZVAL_UNDEF(&_39$$27); - ZVAL_UNDEF(&_40$$27); + ZVAL_UNDEF(&descriptor); + ZVAL_UNDEF(&_0$$3); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(expr) + Z_PARAM_ARRAY(descriptor) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &expr_param); - ZEPHIR_OBS_COPY_OR_DUP(&expr, expr_param); + zephir_fetch_params(1, 1, 0, &descriptor_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); - ZEPHIR_OBS_VAR(&columnName); - zephir_array_fetch_string(&columnName, &expr, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 2914); - zephir_read_property(&_0, this_ptr, ZEND_STRL("nestingLevel"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&nestingLevel, &_0); - zephir_read_property(&_0, this_ptr, ZEND_STRL("sqlColumnAliases"), PH_NOISY_CC | PH_READONLY); - if (zephir_array_isset(&_0, &nestingLevel)) { - zephir_read_property(&_1$$3, this_ptr, ZEND_STRL("sqlColumnAliases"), PH_NOISY_CC | PH_READONLY); - zephir_array_fetch(&_2$$3, &_1$$3, &nestingLevel, PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2922); - ZEPHIR_CPY_WRT(&sqlColumnAliases, &_2$$3); - } else { - ZEPHIR_INIT_NVAR(&sqlColumnAliases); - array_init(&sqlColumnAliases); - } - _3 = zephir_array_isset(&sqlColumnAliases, &columnName); - if (_3) { - _4 = !(zephir_array_isset_string(&expr, SL("domain"))); - if (!(_4)) { - zephir_array_fetch_string(&_5, &expr, SL("domain"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 2927); - _4 = ZEPHIR_IS_EMPTY(&_5); - } - _3 = _4; - } - if (_3) { - zephir_create_array(return_value, 2, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("qualified")); - zephir_array_update_string(return_value, SL("name"), &columnName, PH_COPY | PH_SEPARATE); - RETURN_MM(); - } - zephir_read_property(&_6, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_6); - ZEPHIR_OBS_VAR(&columnDomain); - if (zephir_array_isset_string_fetch(&columnDomain, &expr, SL("domain"), 0)) { - zephir_read_property(&_7$$6, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliases, &_7$$6); - ZEPHIR_OBS_VAR(&source); - if (UNEXPECTED(!(zephir_array_isset_fetch(&source, &sqlAliases, &columnDomain, 0)))) { - ZEPHIR_INIT_VAR(&_8$$7); - object_init_ex(&_8$$7, phalcon_mvc_model_exception_ce); - zephir_read_property(&_9$$7, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_10$$7); - ZEPHIR_CONCAT_SVSV(&_10$$7, "Unknown model or alias '", &columnDomain, "' (11), when preparing: ", &_9$$7); - ZEPHIR_CALL_METHOD(NULL, &_8$$7, "__construct", NULL, 29, &_10$$7); - zephir_check_call_status(); - zephir_throw_exception_debug(&_8$$7, "phalcon/Mvc/Model/Query.zep", 2948); - ZEPHIR_MM_RESTORE(); - return; - } - if (ZEPHIR_GLOBAL(orm).column_renaming) { - zephir_read_property(&_11$$8, this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliasesModelsInstances, &_11$$8); - ZEPHIR_OBS_VAR(&model); - if (UNEXPECTED(!(zephir_array_isset_fetch(&model, &sqlAliasesModelsInstances, &columnDomain, 0)))) { - ZEPHIR_INIT_VAR(&_12$$9); - object_init_ex(&_12$$9, phalcon_mvc_model_exception_ce); - zephir_read_property(&_13$$9, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_14$$9); - ZEPHIR_CONCAT_SVSV(&_14$$9, "There is no model related to model or alias '", &columnDomain, "', when executing: ", &_13$$9); - ZEPHIR_CALL_METHOD(NULL, &_12$$9, "__construct", NULL, 29, &_14$$9); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$9, "phalcon/Mvc/Model/Query.zep", 2967); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getreversecolumnmap", NULL, 0, &model); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_VAR(&realColumnName); - if (UNEXPECTED(!(zephir_array_isset_fetch(&realColumnName, &columnMap, &columnName, 0)))) { - ZEPHIR_INIT_VAR(&_15$$12); - object_init_ex(&_15$$12, phalcon_mvc_model_exception_ce); - zephir_read_property(&_16$$12, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_17$$12); - ZEPHIR_CONCAT_SVSVSV(&_17$$12, "Column '", &columnName, "' doesn't belong to the model or alias '", &columnDomain, "', when executing: ", &_16$$12); - ZEPHIR_CALL_METHOD(NULL, &_15$$12, "__construct", NULL, 29, &_17$$12); - zephir_check_call_status(); - zephir_throw_exception_debug(&_15$$12, "phalcon/Mvc/Model/Query.zep", 2979); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&realColumnName, &columnName); - } - } else { - number = 0; - ZEPHIR_INIT_VAR(&hasModel); - ZVAL_BOOL(&hasModel, 0); - zephir_read_property(&_18$$14, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_18$$14, 0, "phalcon/Mvc/Model/Query.zep", 3013); - if (Z_TYPE_P(&_18$$14) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_18$$14), _19$$14) - { - ZEPHIR_INIT_NVAR(&model); - ZVAL_COPY(&model, _19$$14); - ZEPHIR_CALL_METHOD(&_21$$15, &metaData, "hasattribute", &_22, 0, &model, &columnName); - zephir_check_call_status(); - if (zephir_is_true(&_21$$15)) { - number++; - if (UNEXPECTED(number > 1)) { - ZEPHIR_INIT_NVAR(&_23$$17); - object_init_ex(&_23$$17, phalcon_mvc_model_exception_ce); - zephir_read_property(&_24$$17, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_25$$17); - ZEPHIR_CONCAT_SVSV(&_25$$17, "The column '", &columnName, "' is ambiguous, when preparing: ", &_24$$17); - ZEPHIR_CALL_METHOD(NULL, &_23$$17, "__construct", NULL, 29, &_25$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_23$$17, "phalcon/Mvc/Model/Query.zep", 3002); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CPY_WRT(&hasModel, &model); - } - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_18$$14, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_20$$14, &_18$$14, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_20$$14)) { - break; - } - ZEPHIR_CALL_METHOD(&model, &_18$$14, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_26$$18, &metaData, "hasattribute", &_27, 0, &model, &columnName); - zephir_check_call_status(); - if (zephir_is_true(&_26$$18)) { - number++; - if (UNEXPECTED(number > 1)) { - ZEPHIR_INIT_NVAR(&_28$$20); - object_init_ex(&_28$$20, phalcon_mvc_model_exception_ce); - zephir_read_property(&_29$$20, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_30$$20); - ZEPHIR_CONCAT_SVSV(&_30$$20, "The column '", &columnName, "' is ambiguous, when preparing: ", &_29$$20); - ZEPHIR_CALL_METHOD(NULL, &_28$$20, "__construct", NULL, 29, &_30$$20); - zephir_check_call_status(); - zephir_throw_exception_debug(&_28$$20, "phalcon/Mvc/Model/Query.zep", 3002); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CPY_WRT(&hasModel, &model); - } - ZEPHIR_CALL_METHOD(NULL, &_18$$14, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&model); - if (UNEXPECTED(ZEPHIR_IS_FALSE_IDENTICAL(&hasModel))) { - ZEPHIR_INIT_VAR(&_31$$21); - object_init_ex(&_31$$21, phalcon_mvc_model_exception_ce); - zephir_read_property(&_32$$21, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_33$$21); - ZEPHIR_CONCAT_SVSV(&_33$$21, "Column '", &columnName, "' doesn't belong to any of the selected models (1), when preparing: ", &_32$$21); - ZEPHIR_CALL_METHOD(NULL, &_31$$21, "__construct", NULL, 29, &_33$$21); - zephir_check_call_status(); - zephir_throw_exception_debug(&_31$$21, "phalcon/Mvc/Model/Query.zep", 3016); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_read_property(&_34$$14, this_ptr, ZEND_STRL("models"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&models, &_34$$14); - if (UNEXPECTED(Z_TYPE_P(&models) != IS_ARRAY)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "The models list was not loaded correctly", "phalcon/Mvc/Model/Query.zep", 3027); - return; - } - ZEPHIR_INIT_VAR(&className); - zephir_get_class(&className, &hasModel, 0); - ZEPHIR_OBS_NVAR(&source); - if (UNEXPECTED(!(zephir_array_isset_fetch(&source, &models, &className, 0)))) { - ZEPHIR_INIT_VAR(&_35$$23); - object_init_ex(&_35$$23, phalcon_mvc_model_exception_ce); - zephir_read_property(&_36$$23, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_37$$23); - ZEPHIR_CONCAT_SVSV(&_37$$23, "Can't obtain model's source from models list: '", &className, "', when preparing: ", &_36$$23); - ZEPHIR_CALL_METHOD(NULL, &_35$$23, "__construct", NULL, 29, &_37$$23); - zephir_check_call_status(); - zephir_throw_exception_debug(&_35$$23, "phalcon/Mvc/Model/Query.zep", 3038); - ZEPHIR_MM_RESTORE(); - return; - } - if (ZEPHIR_GLOBAL(orm).column_renaming) { - ZEPHIR_CALL_METHOD(&columnMap, &metaData, "getreversecolumnmap", NULL, 0, &hasModel); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&columnMap); - ZVAL_NULL(&columnMap); - } - if (Z_TYPE_P(&columnMap) == IS_ARRAY) { - ZEPHIR_OBS_NVAR(&realColumnName); - if (UNEXPECTED(!(zephir_array_isset_fetch(&realColumnName, &columnMap, &columnName, 0)))) { - ZEPHIR_INIT_VAR(&_38$$27); - object_init_ex(&_38$$27, phalcon_mvc_model_exception_ce); - zephir_read_property(&_39$$27, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_40$$27); - ZEPHIR_CONCAT_SVSV(&_40$$27, "Column '", &columnName, "' doesn't belong to any of the selected models (3), when preparing: ", &_39$$27); - ZEPHIR_CALL_METHOD(NULL, &_38$$27, "__construct", NULL, 29, &_40$$27); - zephir_check_call_status(); - zephir_throw_exception_debug(&_38$$27, "phalcon/Mvc/Model/Query.zep", 3057); - ZEPHIR_MM_RESTORE(); - return; - } - } else { - ZEPHIR_CPY_WRT(&realColumnName, &columnName); - } + if (zephir_array_isset_string(&descriptor, SL("charset"))) { + ZEPHIR_INIT_VAR(&_0$$3); + ZVAL_STRING(&_0$$3, "Postgres does not allow the charset to be changed in the DSN."); + ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", NULL, 7, &_0$$3); + zephir_check_call_status(); } - zephir_create_array(return_value, 4, 0); - add_assoc_stringl_ex(return_value, SL("type"), SL("qualified")); - zephir_array_update_string(return_value, SL("domain"), &source, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("name"), &realColumnName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("balias"), &columnName, PH_COPY | PH_SEPARATE); - RETURN_MM(); + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_postgresql_ce, getThis(), "__construct", &_1, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getReadConnection) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, connect) { - zend_bool _1; + zend_bool _2$$6; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval intermediate, bindParams, bindTypes; - zval *model, model_sub, *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, connection, transaction, _0; + zephir_fcall_cache_entry *_4 = NULL; + zval *descriptor_param = NULL, __$null, schema, sql, _0$$3, _1$$6, _3$$6; + zval descriptor; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&transaction); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); + ZVAL_UNDEF(&descriptor); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&_0$$3); + ZVAL_UNDEF(&_1$$6); + ZVAL_UNDEF(&_3$$6); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) + ZEND_PARSE_PARAMETERS_START(0, 1) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY_OR_NULL(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + Z_PARAM_ARRAY(descriptor) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &model, &intermediate_param, &bindParams_param, &bindTypes_param); - if (!intermediate_param) { - ZEPHIR_INIT_VAR(&intermediate); - } else { - zephir_get_arrval(&intermediate, intermediate_param); - } - if (!bindParams_param) { - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - } else { - zephir_get_arrval(&bindParams, bindParams_param); - } - if (!bindTypes_param) { - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); + zephir_fetch_params(1, 0, 1, &descriptor_param); + if (!descriptor_param) { + ZEPHIR_INIT_VAR(&descriptor); + array_init(&descriptor); } else { - zephir_get_arrval(&bindTypes, bindTypes_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); } - ZEPHIR_INIT_VAR(&connection); - ZVAL_NULL(&connection); - zephir_read_property(&_0, this_ptr, ZEND_STRL("transaction"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&transaction, &_0); - _1 = Z_TYPE_P(&transaction) == IS_OBJECT; - if (_1) { - _1 = zephir_instance_of_ev(&transaction, phalcon_mvc_model_transactioninterface_ce); + if (ZEPHIR_IS_EMPTY(&descriptor)) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("descriptor"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&descriptor, &_0$$3); } - if (_1) { - ZEPHIR_RETURN_CALL_METHOD(&transaction, "getconnection", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); + ZEPHIR_OBS_VAR(&schema); + if (zephir_array_isset_string_fetch(&schema, &descriptor, SL("schema"), 0)) { + zephir_array_unset_string(&descriptor, SL("schema"), PH_SEPARATE); + } else { + ZEPHIR_INIT_NVAR(&schema); + ZVAL_NULL(&schema); } - if ((zephir_method_exists_ex(model, ZEND_STRL("selectreadconnection")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(&connection, model, "selectreadconnection", NULL, 0, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&connection) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "selectReadConnection did not return a connection", "phalcon/Mvc/Model/Query.zep", 3101); - return; + if (zephir_array_isset_string(&descriptor, SL("password"))) { + ZEPHIR_OBS_VAR(&_1$$6); + zephir_array_fetch_string(&_1$$6, &descriptor, SL("password"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 85); + _2$$6 = Z_TYPE_P(&_1$$6) == IS_STRING; + if (_2$$6) { + zephir_array_fetch_string(&_3$$6, &descriptor, SL("password"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 85); + _2$$6 = zephir_fast_strlen_ev(&_3$$6) == 0; + } + if (_2$$6) { + zephir_array_update_string(&descriptor, SL("password"), &__$null, PH_COPY | PH_SEPARATE); } - RETURN_CCTOR(&connection); } - ZEPHIR_RETURN_CALL_METHOD(model, "getreadconnection", NULL, 0); + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_postgresql_ce, getThis(), "connect", &_4, 0, &descriptor); zephir_check_call_status(); - RETURN_MM(); + if (!(ZEPHIR_IS_EMPTY(&schema))) { + ZEPHIR_INIT_VAR(&sql); + ZEPHIR_CONCAT_SVS(&sql, "SET search_path TO '", &schema, "'"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "execute", NULL, 0, &sql); + zephir_check_call_status(); + } + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getRelatedRecords) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, createTable) { zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval intermediate, bindParams, bindTypes, _0, _1; - zval *model, model_sub, *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, selectIr, whereConditions, limitConditions, query, _2, _3, _4, _5, _6; + zval definition; + zval *tableName_param = NULL, *schemaName_param = NULL, *definition_param = NULL, sql, queries, query, exception, columns, _0, *_1$$6, _2$$6, _3$$7, _5$$9, _6$$5, _7$$12, _8$$12; + zval tableName, schemaName; zval *this_ptr = getThis(); - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&selectIr); - ZVAL_UNDEF(&whereConditions); - ZVAL_UNDEF(&limitConditions); + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&queries); ZVAL_UNDEF(&query); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_5); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); + ZVAL_UNDEF(&exception); + ZVAL_UNDEF(&columns); ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2$$6); + ZVAL_UNDEF(&_3$$7); + ZVAL_UNDEF(&_5$$9); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$12); + ZVAL_UNDEF(&_8$$12); + ZVAL_UNDEF(&definition); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 4) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_ARRAY(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_ARRAY(definition) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 0, &model, &intermediate_param, &bindParams_param, &bindTypes_param); - zephir_get_arrval(&intermediate, intermediate_param); - zephir_get_arrval(&bindParams, bindParams_param); - zephir_get_arrval(&bindTypes, bindTypes_param); + zephir_fetch_params(1, 3, 0, &tableName_param, &schemaName_param, &definition_param); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); + } else { + ZEPHIR_INIT_VAR(&tableName); + } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); + } else { + ZEPHIR_INIT_VAR(&schemaName); + } + ZEPHIR_OBS_COPY_OR_DUP(&definition, definition_param); - ZEPHIR_INIT_VAR(&selectIr); - zephir_create_array(&selectIr, 3, 0); - ZEPHIR_INIT_VAR(&_0); - zephir_create_array(&_0, 1, 0); - ZEPHIR_INIT_VAR(&_1); - zephir_create_array(&_1, 3, 0); - add_assoc_stringl_ex(&_1, SL("type"), SL("object")); - ZEPHIR_INIT_VAR(&_2); - zephir_get_class(&_2, model, 0); - zephir_array_update_string(&_1, SL("model"), &_2, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_3, model, "getsource", NULL, 0); - zephir_check_call_status(); - zephir_array_update_string(&_1, SL("column"), &_3, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_0, &_1); - zephir_array_update_string(&selectIr, SL("columns"), &_0, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_VAR(&_4); - zephir_array_fetch_string(&_4, &intermediate, SL("models"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3131); - zephir_array_update_string(&selectIr, SL("models"), &_4, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_NVAR(&_4); - zephir_array_fetch_string(&_4, &intermediate, SL("tables"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3133); - zephir_array_update_string(&selectIr, SL("tables"), &_4, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_VAR(&whereConditions); - if (zephir_array_isset_string_fetch(&whereConditions, &intermediate, SL("where"), 0)) { - zephir_array_update_string(&selectIr, SL("where"), &whereConditions, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_VAR(&columns); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &definition, SL("columns"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The table must contain at least one column", "phalcon/Db/Adapter/Pdo/Postgresql.zep", 107); + return; } - ZEPHIR_OBS_VAR(&limitConditions); - if (zephir_array_isset_string_fetch(&limitConditions, &intermediate, SL("limit"), 0)) { - zephir_array_update_string(&selectIr, SL("limit"), &limitConditions, PH_COPY | PH_SEPARATE); + if (UNEXPECTED(!(zephir_fast_count_int(&columns)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The table must contain at least one column", "phalcon/Db/Adapter/Pdo/Postgresql.zep", 111); + return; } - ZEPHIR_INIT_VAR(&query); - object_init_ex(&query, phalcon_mvc_model_query_ce); - ZEPHIR_CALL_METHOD(NULL, &query, "__construct", NULL, 465); - zephir_check_call_status(); - zephir_read_property(&_5, this_ptr, ZEND_STRL("container"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CALL_METHOD(NULL, &query, "setdi", NULL, 466, &_5); - zephir_check_call_status(); - ZVAL_LONG(&_6, 309); - ZEPHIR_CALL_METHOD(NULL, &query, "settype", NULL, 467, &_6); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(NULL, &query, "setintermediate", NULL, 468, &selectIr); - zephir_check_call_status(); - ZEPHIR_RETURN_CALL_METHOD(&query, "execute", NULL, 469, &bindParams, &bindTypes); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&sql, &_0, "createtable", NULL, 0, &tableName, &schemaName, &definition); zephir_check_call_status(); - RETURN_MM(); -} + ZEPHIR_INIT_VAR(&queries); + zephir_fast_explode_str(&queries, SL(";"), &sql, LONG_MAX); + if (zephir_fast_count_int(&queries) > 1) { -static PHP_METHOD(Phalcon_Mvc_Model_Query, getSelectColumn) -{ - zend_string *_4$$4; - zend_ulong _3$$4; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_6 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *column_param = NULL, columnType, sqlAliases, modelName, source, columnDomain, sqlColumnAlias, preparedAlias, sqlExprColumn, sqlAliasesModels, columnData, balias, eager, _19, _20, _0$$4, *_1$$4, _2$$4, _5$$5, _7$$6, _8$$7, _9$$7, _10$$8, _11$$10, _15$$10, _12$$11, _13$$11, _14$$11, _16$$15, _17$$16, _18$$18; - zval column, sqlColumns, sqlColumn; - zval *this_ptr = getThis(); + /* try_start_1: */ - ZVAL_UNDEF(&column); - ZVAL_UNDEF(&sqlColumns); - ZVAL_UNDEF(&sqlColumn); - ZVAL_UNDEF(&columnType); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&columnDomain); - ZVAL_UNDEF(&sqlColumnAlias); - ZVAL_UNDEF(&preparedAlias); - ZVAL_UNDEF(&sqlExprColumn); - ZVAL_UNDEF(&sqlAliasesModels); - ZVAL_UNDEF(&columnData); - ZVAL_UNDEF(&balias); - ZVAL_UNDEF(&eager); - ZVAL_UNDEF(&_19); - ZVAL_UNDEF(&_20); - ZVAL_UNDEF(&_0$$4); - ZVAL_UNDEF(&_2$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_10$$8); - ZVAL_UNDEF(&_11$$10); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_12$$11); - ZVAL_UNDEF(&_13$$11); - ZVAL_UNDEF(&_14$$11); - ZVAL_UNDEF(&_16$$15); - ZVAL_UNDEF(&_17$$16); - ZVAL_UNDEF(&_18$$18); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY(column) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 0, &column_param); - ZEPHIR_OBS_COPY_OR_DUP(&column, column_param); - - - ZEPHIR_OBS_VAR(&columnType); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columnType, &column, SL("type"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 3173); - return; - } - ZEPHIR_INIT_VAR(&sqlColumns); - array_init(&sqlColumns); - ZEPHIR_OBS_VAR(&eager); - zephir_array_isset_string_fetch(&eager, &column, SL("eager"), 0); - if (ZEPHIR_IS_LONG(&columnType, 352)) { - zephir_read_property(&_0$$4, this_ptr, ZEND_STRL("models"), PH_NOISY_CC | PH_READONLY); - zephir_is_iterable(&_0$$4, 0, "phalcon/Mvc/Model/Query.zep", 3203); - if (Z_TYPE_P(&_0$$4) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_0$$4), _3$$4, _4$$4, _1$$4) - { - ZEPHIR_INIT_NVAR(&modelName); - if (_4$$4 != NULL) { - ZVAL_STR_COPY(&modelName, _4$$4); - } else { - ZVAL_LONG(&modelName, _3$$4); - } - ZEPHIR_INIT_NVAR(&source); - ZVAL_COPY(&source, _1$$4); - ZEPHIR_INIT_NVAR(&sqlColumn); - zephir_create_array(&sqlColumn, 4, 0); - add_assoc_stringl_ex(&sqlColumn, SL("type"), SL("object")); - zephir_array_update_string(&sqlColumn, SL("model"), &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("column"), &source, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_FUNCTION(&_5$$5, "lcfirst", &_6, 73, &modelName); - zephir_check_call_status(); - zephir_array_update_string(&sqlColumn, SL("balias"), &_5$$5, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(&eager) != IS_NULL) { - zephir_array_update_string(&sqlColumn, SL("eager"), &eager, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_7$$6, &column, SL("eagerType"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3197); - zephir_array_update_string(&sqlColumn, SL("eagerType"), &_7$$6, PH_COPY | PH_SEPARATE); - } - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3200); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_0$$4, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_2$$4, &_0$$4, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_2$$4)) { - break; - } - ZEPHIR_CALL_METHOD(&modelName, &_0$$4, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &_0$$4, "current", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "begin", NULL, 0); + zephir_check_call_status_or_jump(try_end_1); + zephir_is_iterable(&queries, 0, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 130); + if (Z_TYPE_P(&queries) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&queries), _1$$6) + { + ZEPHIR_INIT_NVAR(&query); + ZVAL_COPY(&query, _1$$6); + if (ZEPHIR_IS_EMPTY(&query)) { + continue; + } + ZEPHIR_INIT_NVAR(&_3$$7); + ZEPHIR_CONCAT_VS(&_3$$7, &query, ";"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "query", &_4, 0, &_3$$7); + zephir_check_call_status_or_jump(try_end_1); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &queries, "rewind", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_8$$7); - zephir_create_array(&_8$$7, 4, 0); - add_assoc_stringl_ex(&_8$$7, SL("type"), SL("object")); - zephir_array_update_string(&_8$$7, SL("model"), &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_8$$7, SL("column"), &source, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_FUNCTION(&_9$$7, "lcfirst", &_6, 73, &modelName); + while (1) { + ZEPHIR_CALL_METHOD(&_2$$6, &queries, "valid", NULL, 0); zephir_check_call_status(); - zephir_array_update_string(&_8$$7, SL("balias"), &_9$$7, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&sqlColumn, &_8$$7); - if (Z_TYPE_P(&eager) != IS_NULL) { - zephir_array_update_string(&sqlColumn, SL("eager"), &eager, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_10$$8, &column, SL("eagerType"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3197); - zephir_array_update_string(&sqlColumn, SL("eagerType"), &_10$$8, PH_COPY | PH_SEPARATE); + if (!zend_is_true(&_2$$6)) { + break; } - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3200); - ZEPHIR_CALL_METHOD(NULL, &_0$$4, "next", NULL, 0); - zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&query, &queries, "current", NULL, 0); + zephir_check_call_status(); + if (ZEPHIR_IS_EMPTY(&query)) { + continue; + } + ZEPHIR_INIT_NVAR(&_5$$9); + ZEPHIR_CONCAT_VS(&_5$$9, &query, ";"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "query", &_4, 0, &_5$$9); + zephir_check_call_status_or_jump(try_end_1); + ZEPHIR_CALL_METHOD(NULL, &queries, "next", NULL, 0); + zephir_check_call_status(); + } } - } - ZEPHIR_INIT_NVAR(&source); - ZEPHIR_INIT_NVAR(&modelName); - RETURN_CTOR(&sqlColumns); - } - if (UNEXPECTED(!(zephir_array_isset_string(&column, SL("column"))))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 3207); - return; - } - if (ZEPHIR_IS_LONG(&columnType, 353)) { - zephir_read_property(&_11$$10, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliases, &_11$$10); - ZEPHIR_OBS_VAR(&columnDomain); - zephir_array_fetch_string(&columnDomain, &column, SL("column"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3219); - ZEPHIR_OBS_NVAR(&source); - if (UNEXPECTED(!(zephir_array_isset_fetch(&source, &sqlAliases, &columnDomain, 0)))) { - ZEPHIR_INIT_VAR(&_12$$11); - object_init_ex(&_12$$11, phalcon_mvc_model_exception_ce); - zephir_read_property(&_13$$11, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_VAR(&_14$$11); - ZEPHIR_CONCAT_SVSV(&_14$$11, "Unknown model or alias '", &columnDomain, "' (2), when preparing: ", &_13$$11); - ZEPHIR_CALL_METHOD(NULL, &_12$$11, "__construct", NULL, 29, &_14$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_12$$11, "phalcon/Mvc/Model/Query.zep", 3224); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_CPY_WRT(&sqlColumnAlias, &source); - ZEPHIR_OBS_VAR(&preparedAlias); - zephir_array_isset_string_fetch(&preparedAlias, &column, SL("balias"), 0); - zephir_read_property(&_11$$10, this_ptr, ZEND_STRL("sqlAliasesModels"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&sqlAliasesModels, &_11$$10); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch(&modelName, &sqlAliasesModels, &columnDomain, PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3238); - if (Z_TYPE_P(&preparedAlias) != IS_STRING) { - if (ZEPHIR_IS_EQUAL(&columnDomain, &modelName)) { - ZEPHIR_CALL_FUNCTION(&preparedAlias, "lcfirst", &_6, 73, &modelName); + ZEPHIR_INIT_NVAR(&query); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "commit", NULL, 0); + zephir_check_call_status_or_jump(try_end_1); + RETURN_MM(); + + try_end_1: + + if (EG(exception)) { + ZEPHIR_INIT_VAR(&_6$$5); + ZVAL_OBJ(&_6$$5, EG(exception)); + Z_ADDREF_P(&_6$$5); + if (zephir_is_instance_of(&_6$$5, SL("Throwable"))) { + zend_clear_exception(); + ZEPHIR_CPY_WRT(&exception, &_6$$5); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "rollback", NULL, 0); zephir_check_call_status(); - } else { - ZEPHIR_CPY_WRT(&preparedAlias, &columnDomain); + zephir_throw_exception_debug(&exception, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 134); + ZEPHIR_MM_RESTORE(); + return; } } - ZEPHIR_INIT_VAR(&_15$$10); - zephir_create_array(&_15$$10, 4, 0); - add_assoc_stringl_ex(&_15$$10, SL("type"), SL("object")); - zephir_array_update_string(&_15$$10, SL("model"), &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_15$$10, SL("column"), &sqlColumnAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_15$$10, SL("balias"), &preparedAlias, PH_COPY | PH_SEPARATE); - ZEPHIR_CPY_WRT(&sqlColumn, &_15$$10); - if (Z_TYPE_P(&eager) != IS_NULL) { - zephir_array_update_string(&sqlColumn, SL("eager"), &eager, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_16$$15, &column, SL("eagerType"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3265); - zephir_array_update_string(&sqlColumn, SL("eagerType"), &_16$$15, PH_COPY | PH_SEPARATE); - } - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3268); - RETURN_CTOR(&sqlColumns); - } - if (ZEPHIR_IS_LONG(&columnType, 354)) { - ZEPHIR_INIT_VAR(&_17$$16); - zephir_create_array(&_17$$16, 1, 0); - add_assoc_stringl_ex(&_17$$16, SL("type"), SL("scalar")); - ZEPHIR_CPY_WRT(&sqlColumn, &_17$$16); - ZEPHIR_OBS_VAR(&columnData); - zephir_array_fetch_string(&columnData, &column, SL("column"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3282); - ZEPHIR_CALL_METHOD(&sqlExprColumn, this_ptr, "getexpression", NULL, 456, &columnData); + } else { + zephir_array_fetch_long(&_7$$12, &queries, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 137); + ZEPHIR_INIT_VAR(&_8$$12); + ZEPHIR_CONCAT_VS(&_8$$12, &_7$$12, ";"); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "execute", NULL, 0, &_8$$12); zephir_check_call_status(); - ZEPHIR_OBS_VAR(&balias); - if (zephir_array_isset_string_fetch(&balias, &sqlExprColumn, SL("balias"), 0)) { - zephir_array_update_string(&sqlColumn, SL("balias"), &balias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("sqlAlias"), &balias, PH_COPY | PH_SEPARATE); - } - if (Z_TYPE_P(&eager) != IS_NULL) { - zephir_array_update_string(&sqlColumn, SL("eager"), &eager, PH_COPY | PH_SEPARATE); - zephir_array_fetch_string(&_18$$18, &column, SL("eagerType"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3295); - zephir_array_update_string(&sqlColumn, SL("eagerType"), &_18$$18, PH_COPY | PH_SEPARATE); - } - zephir_array_update_string(&sqlColumn, SL("column"), &sqlExprColumn, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3299); - RETURN_CTOR(&sqlColumns); + RETURN_MM(); } - ZEPHIR_INIT_VAR(&_19); - object_init_ex(&_19, phalcon_mvc_model_exception_ce); - ZEPHIR_INIT_VAR(&_20); - ZEPHIR_CONCAT_SV(&_20, "Unknown type of column ", &columnType); - ZEPHIR_CALL_METHOD(NULL, &_19, "__construct", NULL, 29, &_20); - zephir_check_call_status(); - zephir_throw_exception_debug(&_19, "phalcon/Mvc/Model/Query.zep", 3304); - ZEPHIR_MM_RESTORE(); - return; + RETURN_MM_BOOL(1); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, getSingleJoin) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, describeColumns) { - zend_string *_8$$4; - zend_ulong _7$$4; - zval _1$$3, _3$$3, _4$$3, _13$$5, _15$$5, _16$$5, _20$$7, _22$$7, _23$$7; + zend_bool _5$$3, _64$$41; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_12 = NULL; + zephir_fcall_cache_entry *_55 = NULL, *_58 = NULL, *_62 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; - zval *joinType_param = NULL, *joinSource, joinSource_sub, *modelAlias_param = NULL, *joinAlias_param = NULL, *relation, relation_sub, fields, referencedFields, sqlJoinConditions, sqlJoinPartialConditions, position, field, referencedField, _0$$3, _2$$3, *_5$$4, _6$$4, _9$$6, _10$$6, _11$$6, _14$$5, _17$$8, _18$$8, _19$$8, _21$$7; - zval joinType, modelAlias, joinAlias; + zval *table_param = NULL, *schema_param = NULL, __$true, __$false, __$null, columns, columnType, fields, field, definition, oldColumn, columnName, charSize, numericSize, numericScale, _0, _1, _2, *_3, _4, _47$$3, _48$$3, _49$$3, _50$$3, _59$$3, _61$$3, _6$$4, _7$$4, _8$$5, _9$$5, _10$$6, _11$$6, _12$$7, _13$$7, _14$$8, _15$$8, _16$$9, _17$$9, _18$$10, _19$$11, _20$$12, _21$$12, _22$$13, _23$$13, _24$$14, _25$$14, _26$$15, _27$$15, _28$$16, _29$$16, _30$$17, _31$$18, _32$$19, _33$$20, _34$$21, _35$$22, _36$$23, _37$$24, _38$$25, _39$$26, _40$$27, _41$$28, _42$$29, _43$$30, _44$$31, _45$$31, _46$$32, _51$$38, _52$$38, _53$$38, _54$$38, _56$$38, _57$$38, _60$$40, _63$$41, _106$$41, _107$$41, _108$$41, _109$$41, _116$$41, _118$$41, _65$$42, _66$$42, _67$$43, _68$$43, _69$$44, _70$$44, _71$$45, _72$$45, _73$$46, _74$$46, _75$$47, _76$$47, _77$$48, _78$$49, _79$$50, _80$$50, _81$$51, _82$$51, _83$$52, _84$$52, _85$$53, _86$$53, _87$$54, _88$$54, _89$$55, _90$$56, _91$$57, _92$$58, _93$$59, _94$$60, _95$$61, _96$$62, _97$$63, _98$$64, _99$$65, _100$$66, _101$$67, _102$$68, _103$$69, _104$$69, _105$$70, _110$$76, _111$$76, _112$$76, _113$$76, _114$$76, _115$$76, _117$$78; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&joinType); - ZVAL_UNDEF(&modelAlias); - ZVAL_UNDEF(&joinAlias); - ZVAL_UNDEF(&joinSource_sub); - ZVAL_UNDEF(&relation_sub); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&columnType); ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&referencedFields); - ZVAL_UNDEF(&sqlJoinConditions); - ZVAL_UNDEF(&sqlJoinPartialConditions); - ZVAL_UNDEF(&position); ZVAL_UNDEF(&field); - ZVAL_UNDEF(&referencedField); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_2$$3); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&oldColumn); + ZVAL_UNDEF(&columnName); + ZVAL_UNDEF(&charSize); + ZVAL_UNDEF(&numericSize); + ZVAL_UNDEF(&numericScale); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_47$$3); + ZVAL_UNDEF(&_48$$3); + ZVAL_UNDEF(&_49$$3); + ZVAL_UNDEF(&_50$$3); + ZVAL_UNDEF(&_59$$3); + ZVAL_UNDEF(&_61$$3); ZVAL_UNDEF(&_6$$4); - ZVAL_UNDEF(&_9$$6); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); ZVAL_UNDEF(&_10$$6); ZVAL_UNDEF(&_11$$6); - ZVAL_UNDEF(&_14$$5); - ZVAL_UNDEF(&_17$$8); - ZVAL_UNDEF(&_18$$8); - ZVAL_UNDEF(&_19$$8); - ZVAL_UNDEF(&_21$$7); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$3); - ZVAL_UNDEF(&_4$$3); - ZVAL_UNDEF(&_13$$5); - ZVAL_UNDEF(&_15$$5); - ZVAL_UNDEF(&_16$$5); - ZVAL_UNDEF(&_20$$7); - ZVAL_UNDEF(&_22$$7); - ZVAL_UNDEF(&_23$$7); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_13$$7); + ZVAL_UNDEF(&_14$$8); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$9); + ZVAL_UNDEF(&_17$$9); + ZVAL_UNDEF(&_18$$10); + ZVAL_UNDEF(&_19$$11); + ZVAL_UNDEF(&_20$$12); + ZVAL_UNDEF(&_21$$12); + ZVAL_UNDEF(&_22$$13); + ZVAL_UNDEF(&_23$$13); + ZVAL_UNDEF(&_24$$14); + ZVAL_UNDEF(&_25$$14); + ZVAL_UNDEF(&_26$$15); + ZVAL_UNDEF(&_27$$15); + ZVAL_UNDEF(&_28$$16); + ZVAL_UNDEF(&_29$$16); + ZVAL_UNDEF(&_30$$17); + ZVAL_UNDEF(&_31$$18); + ZVAL_UNDEF(&_32$$19); + ZVAL_UNDEF(&_33$$20); + ZVAL_UNDEF(&_34$$21); + ZVAL_UNDEF(&_35$$22); + ZVAL_UNDEF(&_36$$23); + ZVAL_UNDEF(&_37$$24); + ZVAL_UNDEF(&_38$$25); + ZVAL_UNDEF(&_39$$26); + ZVAL_UNDEF(&_40$$27); + ZVAL_UNDEF(&_41$$28); + ZVAL_UNDEF(&_42$$29); + ZVAL_UNDEF(&_43$$30); + ZVAL_UNDEF(&_44$$31); + ZVAL_UNDEF(&_45$$31); + ZVAL_UNDEF(&_46$$32); + ZVAL_UNDEF(&_51$$38); + ZVAL_UNDEF(&_52$$38); + ZVAL_UNDEF(&_53$$38); + ZVAL_UNDEF(&_54$$38); + ZVAL_UNDEF(&_56$$38); + ZVAL_UNDEF(&_57$$38); + ZVAL_UNDEF(&_60$$40); + ZVAL_UNDEF(&_63$$41); + ZVAL_UNDEF(&_106$$41); + ZVAL_UNDEF(&_107$$41); + ZVAL_UNDEF(&_108$$41); + ZVAL_UNDEF(&_109$$41); + ZVAL_UNDEF(&_116$$41); + ZVAL_UNDEF(&_118$$41); + ZVAL_UNDEF(&_65$$42); + ZVAL_UNDEF(&_66$$42); + ZVAL_UNDEF(&_67$$43); + ZVAL_UNDEF(&_68$$43); + ZVAL_UNDEF(&_69$$44); + ZVAL_UNDEF(&_70$$44); + ZVAL_UNDEF(&_71$$45); + ZVAL_UNDEF(&_72$$45); + ZVAL_UNDEF(&_73$$46); + ZVAL_UNDEF(&_74$$46); + ZVAL_UNDEF(&_75$$47); + ZVAL_UNDEF(&_76$$47); + ZVAL_UNDEF(&_77$$48); + ZVAL_UNDEF(&_78$$49); + ZVAL_UNDEF(&_79$$50); + ZVAL_UNDEF(&_80$$50); + ZVAL_UNDEF(&_81$$51); + ZVAL_UNDEF(&_82$$51); + ZVAL_UNDEF(&_83$$52); + ZVAL_UNDEF(&_84$$52); + ZVAL_UNDEF(&_85$$53); + ZVAL_UNDEF(&_86$$53); + ZVAL_UNDEF(&_87$$54); + ZVAL_UNDEF(&_88$$54); + ZVAL_UNDEF(&_89$$55); + ZVAL_UNDEF(&_90$$56); + ZVAL_UNDEF(&_91$$57); + ZVAL_UNDEF(&_92$$58); + ZVAL_UNDEF(&_93$$59); + ZVAL_UNDEF(&_94$$60); + ZVAL_UNDEF(&_95$$61); + ZVAL_UNDEF(&_96$$62); + ZVAL_UNDEF(&_97$$63); + ZVAL_UNDEF(&_98$$64); + ZVAL_UNDEF(&_99$$65); + ZVAL_UNDEF(&_100$$66); + ZVAL_UNDEF(&_101$$67); + ZVAL_UNDEF(&_102$$68); + ZVAL_UNDEF(&_103$$69); + ZVAL_UNDEF(&_104$$69); + ZVAL_UNDEF(&_105$$70); + ZVAL_UNDEF(&_110$$76); + ZVAL_UNDEF(&_111$$76); + ZVAL_UNDEF(&_112$$76); + ZVAL_UNDEF(&_113$$76); + ZVAL_UNDEF(&_114$$76); + ZVAL_UNDEF(&_115$$76); + ZVAL_UNDEF(&_117$$78); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(5, 5) - Z_PARAM_STR(joinType) - Z_PARAM_ZVAL(joinSource) - Z_PARAM_STR(modelAlias) - Z_PARAM_STR(joinAlias) - Z_PARAM_OBJECT_OF_CLASS(relation, phalcon_mvc_model_relationinterface_ce) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 5, 0, &joinType_param, &joinSource, &modelAlias_param, &joinAlias_param, &relation); - if (UNEXPECTED(Z_TYPE_P(joinType_param) != IS_STRING && Z_TYPE_P(joinType_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'joinType' must be of the type string")); - RETURN_MM_NULL(); - } - if (EXPECTED(Z_TYPE_P(joinType_param) == IS_STRING)) { - zephir_get_strval(&joinType, joinType_param); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + zephir_get_strval(&table, table_param); + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); } else { - ZEPHIR_INIT_VAR(&joinType); + zephir_get_strval(&schema, schema_param); } - zephir_get_strval(&modelAlias, modelAlias_param); - zephir_get_strval(&joinAlias, joinAlias_param); - ZEPHIR_INIT_VAR(&sqlJoinConditions); - ZVAL_NULL(&sqlJoinConditions); - ZEPHIR_CALL_METHOD(&fields, relation, "getfields", NULL, 0); + ZEPHIR_INIT_VAR(&oldColumn); + ZVAL_NULL(&oldColumn); + ZEPHIR_INIT_VAR(&columns); + array_init(&columns); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "describecolumns", NULL, 0, &table, &schema); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&referencedFields, relation, "getreferencedfields", NULL, 0); + ZVAL_LONG(&_2, 3); + ZEPHIR_CALL_METHOD(&fields, this_ptr, "fetchall", NULL, 0, &_1, &_2); zephir_check_call_status(); - if (Z_TYPE_P(&fields) != IS_ARRAY) { - ZEPHIR_INIT_VAR(&_0$$3); - zephir_create_array(&_0$$3, 1, 0); - ZEPHIR_INIT_VAR(&_1$$3); - zephir_create_array(&_1$$3, 4, 0); - add_assoc_stringl_ex(&_1$$3, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_1$$3, SL("op"), SL("=")); - ZEPHIR_INIT_VAR(&_3$$3); - zephir_create_array(&_3$$3, 3, 0); - add_assoc_long_ex(&_3$$3, SL("type"), 355); - zephir_array_update_string(&_3$$3, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_3$$3, SL("name"), &fields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "getqualified", NULL, 457, &_3$$3); - zephir_check_call_status(); - zephir_array_update_string(&_1$$3, SL("left"), &_2$$3, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_VAR(&_4$$3); - zephir_create_array(&_4$$3, 3, 0); - add_assoc_stringl_ex(&_4$$3, SL("type"), SL("qualified")); - zephir_array_update_string(&_4$$3, SL("domain"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_4$$3, SL("name"), &referencedFields, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_2$$3, this_ptr, "getqualified", NULL, 457, &_4$$3); - zephir_check_call_status(); - zephir_array_update_string(&_1$$3, SL("right"), &_2$$3, PH_COPY | PH_SEPARATE); - zephir_array_fast_append(&_0$$3, &_1$$3); - ZEPHIR_CPY_WRT(&sqlJoinConditions, &_0$$3); - } else { - ZEPHIR_INIT_VAR(&sqlJoinPartialConditions); - array_init(&sqlJoinPartialConditions); - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model/Query.zep", 3394); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&fields), _7$$4, _8$$4, _5$$4) - { - ZEPHIR_INIT_NVAR(&position); - if (_8$$4 != NULL) { - ZVAL_STR_COPY(&position, _8$$4); - } else { - ZVAL_LONG(&position, _7$$4); + zephir_is_iterable(&fields, 0, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 529); + if (Z_TYPE_P(&fields) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&fields), _3) + { + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _3); + ZEPHIR_INIT_NVAR(&definition); + zephir_create_array(&definition, 1, 0); + add_assoc_long_ex(&definition, SL("bindType"), 2); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 1, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 182); + ZEPHIR_OBS_NVAR(&charSize); + zephir_array_fetch_long(&charSize, &field, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 183); + ZEPHIR_OBS_NVAR(&numericSize); + zephir_array_fetch_long(&numericSize, &field, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 184); + ZEPHIR_OBS_NVAR(&numericScale); + zephir_array_fetch_long(&numericScale, &field, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 185); + do { + _5$$3 = 1; + if (_5$$3 == zephir_memnstr_str(&columnType, SL("boolean"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 203)) { + ZEPHIR_INIT_NVAR(&_6$$4); + ZVAL_LONG(&_6$$4, 8); + zephir_array_update_string(&definition, SL("type"), &_6$$4, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_7$$4); + ZVAL_LONG(&_7$$4, 5); + zephir_array_update_string(&definition, SL("bindType"), &_7$$4, PH_COPY | PH_SEPARATE); + break; } - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _5$$4); - ZEPHIR_OBS_NVAR(&referencedField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&referencedField, &referencedFields, &position, 0)))) { - ZEPHIR_INIT_NVAR(&_9$$6); - object_init_ex(&_9$$6, phalcon_mvc_model_exception_ce); - zephir_read_property(&_10$$6, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); + if (_5$$3 == zephir_memnstr_str(&columnType, SL("bigint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 215)) { + ZEPHIR_INIT_NVAR(&_8$$5); + ZVAL_LONG(&_8$$5, 14); + zephir_array_update_string(&definition, SL("type"), &_8$$5, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_9$$5); + ZVAL_LONG(&_9$$5, 2); + zephir_array_update_string(&definition, SL("bindType"), &_9$$5, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("mediumint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 225)) { + ZEPHIR_INIT_NVAR(&_10$$6); + ZVAL_LONG(&_10$$6, 21); + zephir_array_update_string(&definition, SL("type"), &_10$$6, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); ZEPHIR_INIT_NVAR(&_11$$6); - ZEPHIR_CONCAT_SVSVSV(&_11$$6, "The number of fields must be equal to the number of referenced fields in join ", &modelAlias, "-", &joinAlias, ", when preparing: ", &_10$$6); - ZEPHIR_CALL_METHOD(NULL, &_9$$6, "__construct", &_12, 29, &_11$$6); - zephir_check_call_status(); - zephir_throw_exception_debug(&_9$$6, "phalcon/Mvc/Model/Query.zep", 3366); - ZEPHIR_MM_RESTORE(); - return; + ZVAL_LONG(&_11$$6, 1); + zephir_array_update_string(&definition, SL("bindType"), &_11$$6, PH_COPY | PH_SEPARATE); + break; } - ZEPHIR_INIT_NVAR(&_13$$5); - zephir_create_array(&_13$$5, 4, 0); - add_assoc_stringl_ex(&_13$$5, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_13$$5, SL("op"), SL("=")); - ZEPHIR_INIT_NVAR(&_15$$5); - zephir_create_array(&_15$$5, 3, 0); - add_assoc_long_ex(&_15$$5, SL("type"), 355); - zephir_array_update_string(&_15$$5, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_15$$5, SL("name"), &field, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_14$$5, this_ptr, "getqualified", NULL, 457, &_15$$5); - zephir_check_call_status(); - zephir_array_update_string(&_13$$5, SL("left"), &_14$$5, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_16$$5); - zephir_create_array(&_16$$5, 3, 0); - add_assoc_stringl_ex(&_16$$5, SL("type"), SL("qualified")); - zephir_array_update_string(&_16$$5, SL("domain"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_16$$5, SL("name"), &referencedField, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_14$$5, this_ptr, "getqualified", NULL, 457, &_16$$5); - zephir_check_call_status(); - zephir_array_update_string(&_13$$5, SL("right"), &_14$$5, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoinPartialConditions, &_13$$5, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3391); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_6$$4, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_6$$4)) { + if (_5$$3 == zephir_memnstr_str(&columnType, SL("smallint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 235)) { + ZEPHIR_INIT_NVAR(&_12$$7); + ZVAL_LONG(&_12$$7, 22); + zephir_array_update_string(&definition, SL("type"), &_12$$7, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_13$$7); + ZVAL_LONG(&_13$$7, 1); + zephir_array_update_string(&definition, SL("bindType"), &_13$$7, PH_COPY | PH_SEPARATE); break; } - ZEPHIR_CALL_METHOD(&position, &fields, "key", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); + if (_5$$3 == zephir_memnstr_str(&columnType, SL("tinyint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 245)) { + ZEPHIR_INIT_NVAR(&_14$$8); + ZVAL_LONG(&_14$$8, 26); + zephir_array_update_string(&definition, SL("type"), &_14$$8, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_15$$8); + ZVAL_LONG(&_15$$8, 1); + zephir_array_update_string(&definition, SL("bindType"), &_15$$8, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("int"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 258)) { + ZEPHIR_INIT_NVAR(&_16$$9); + ZVAL_LONG(&_16$$9, 0); + zephir_array_update_string(&definition, SL("type"), &_16$$9, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_17$$9); + ZVAL_LONG(&_17$$9, 1); + zephir_array_update_string(&definition, SL("bindType"), &_17$$9, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("bit"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 268)) { + ZEPHIR_INIT_NVAR(&_18$$10); + ZVAL_LONG(&_18$$10, 19); + zephir_array_update_string(&definition, SL("type"), &_18$$10, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("enum"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 277)) { + ZEPHIR_INIT_NVAR(&_19$$11); + ZVAL_LONG(&_19$$11, 18); + zephir_array_update_string(&definition, SL("type"), &_19$$11, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("datetime"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 285)) { + ZEPHIR_INIT_NVAR(&_20$$12); + ZVAL_LONG(&_20$$12, 4); + zephir_array_update_string(&definition, SL("type"), &_20$$12, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_21$$12); + ZVAL_LONG(&_21$$12, 0); + zephir_array_update_string(&definition, SL("size"), &_21$$12, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("date"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 294)) { + ZEPHIR_INIT_NVAR(&_22$$13); + ZVAL_LONG(&_22$$13, 1); + zephir_array_update_string(&definition, SL("type"), &_22$$13, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_23$$13); + ZVAL_LONG(&_23$$13, 0); + zephir_array_update_string(&definition, SL("size"), &_23$$13, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("decimal"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 304) || _5$$3 == zephir_memnstr_str(&columnType, SL("numeric"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 305)) { + ZEPHIR_INIT_NVAR(&_24$$14); + ZVAL_LONG(&_24$$14, 3); + zephir_array_update_string(&definition, SL("type"), &_24$$14, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_25$$14); + ZVAL_LONG(&_25$$14, 32); + zephir_array_update_string(&definition, SL("bindType"), &_25$$14, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("double precision"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 316)) { + ZEPHIR_INIT_NVAR(&_26$$15); + ZVAL_LONG(&_26$$15, 9); + zephir_array_update_string(&definition, SL("type"), &_26$$15, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_27$$15); + ZVAL_LONG(&_27$$15, 32); + zephir_array_update_string(&definition, SL("bindType"), &_27$$15, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("float"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 327) || _5$$3 == zephir_memnstr_str(&columnType, SL("real"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 328)) { + ZEPHIR_INIT_NVAR(&_28$$16); + ZVAL_LONG(&_28$$16, 7); + zephir_array_update_string(&definition, SL("type"), &_28$$16, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_29$$16); + ZVAL_LONG(&_29$$16, 32); + zephir_array_update_string(&definition, SL("bindType"), &_29$$16, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("mediumblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 339)) { + ZEPHIR_INIT_NVAR(&_30$$17); + ZVAL_LONG(&_30$$17, 6); + zephir_array_update_string(&definition, SL("type"), &_30$$17, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("longblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 347)) { + ZEPHIR_INIT_NVAR(&_31$$18); + ZVAL_LONG(&_31$$18, 13); + zephir_array_update_string(&definition, SL("type"), &_31$$18, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("tinyblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 355)) { + ZEPHIR_INIT_NVAR(&_32$$19); + ZVAL_LONG(&_32$$19, 10); + zephir_array_update_string(&definition, SL("type"), &_32$$19, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("blob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 363)) { + ZEPHIR_INIT_NVAR(&_33$$20); + ZVAL_LONG(&_33$$20, 11); + zephir_array_update_string(&definition, SL("type"), &_33$$20, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("timestamp"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 371)) { + ZEPHIR_INIT_NVAR(&_34$$21); + ZVAL_LONG(&_34$$21, 17); + zephir_array_update_string(&definition, SL("type"), &_34$$21, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("time"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 379)) { + ZEPHIR_INIT_NVAR(&_35$$22); + ZVAL_LONG(&_35$$22, 20); + zephir_array_update_string(&definition, SL("type"), &_35$$22, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("jsonb"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 387)) { + ZEPHIR_INIT_NVAR(&_36$$23); + ZVAL_LONG(&_36$$23, 16); + zephir_array_update_string(&definition, SL("type"), &_36$$23, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("json"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 395)) { + ZEPHIR_INIT_NVAR(&_37$$24); + ZVAL_LONG(&_37$$24, 15); + zephir_array_update_string(&definition, SL("type"), &_37$$24, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("longtext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 403)) { + ZEPHIR_INIT_NVAR(&_38$$25); + ZVAL_LONG(&_38$$25, 24); + zephir_array_update_string(&definition, SL("type"), &_38$$25, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("mediumtext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 411)) { + ZEPHIR_INIT_NVAR(&_39$$26); + ZVAL_LONG(&_39$$26, 23); + zephir_array_update_string(&definition, SL("type"), &_39$$26, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("tinytext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 419)) { + ZEPHIR_INIT_NVAR(&_40$$27); + ZVAL_LONG(&_40$$27, 25); + zephir_array_update_string(&definition, SL("type"), &_40$$27, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("text"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 427)) { + ZEPHIR_INIT_NVAR(&_41$$28); + ZVAL_LONG(&_41$$28, 6); + zephir_array_update_string(&definition, SL("type"), &_41$$28, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("varying"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 435) || _5$$3 == zephir_memnstr_str(&columnType, SL("varchar"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 436)) { + ZEPHIR_INIT_NVAR(&_42$$29); + ZVAL_LONG(&_42$$29, 2); + zephir_array_update_string(&definition, SL("type"), &_42$$29, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &charSize, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("char"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 445)) { + ZEPHIR_INIT_NVAR(&_43$$30); + ZVAL_LONG(&_43$$30, 5); + zephir_array_update_string(&definition, SL("type"), &_43$$30, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &charSize, PH_COPY | PH_SEPARATE); + break; + } + if (_5$$3 == zephir_memnstr_str(&columnType, SL("uuid"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 454)) { + ZEPHIR_INIT_NVAR(&_44$$31); + ZVAL_LONG(&_44$$31, 5); + zephir_array_update_string(&definition, SL("type"), &_44$$31, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_45$$31); + ZVAL_LONG(&_45$$31, 36); + zephir_array_update_string(&definition, SL("size"), &_45$$31, PH_COPY | PH_SEPARATE); + break; + } + ZEPHIR_INIT_NVAR(&_46$$32); + ZVAL_LONG(&_46$$32, 2); + zephir_array_update_string(&definition, SL("type"), &_46$$32, PH_COPY | PH_SEPARATE); + break; + } while(0); + + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); + } else { + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_47$$3, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 481); + if (ZEPHIR_IS_STRING(&_47$$3, "PRI")) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_48$$3, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 488); + if (ZEPHIR_IS_STRING(&_48$$3, "YES")) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_49$$3, &field, 7, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 495); + if (ZEPHIR_IS_STRING(&_49$$3, "auto_increment")) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_50$$3, &field, 9, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 502); + if (Z_TYPE_P(&_50$$3) != IS_NULL) { + zephir_array_fetch_long(&_51$$38, &field, 9, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 507); + ZEPHIR_INIT_NVAR(&_52$$38); + ZVAL_STRING(&_52$$38, "/^'|'?::[[:alnum:][:space:]]+$/"); + ZEPHIR_INIT_NVAR(&_53$$38); + ZVAL_STRING(&_53$$38, ""); + ZEPHIR_CALL_FUNCTION(&_54$$38, "preg_replace", &_55, 37, &_52$$38, &_53$$38, &_51$$38); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&referencedField); - if (UNEXPECTED(!(zephir_array_isset_fetch(&referencedField, &referencedFields, &position, 0)))) { - ZEPHIR_INIT_NVAR(&_17$$8); - object_init_ex(&_17$$8, phalcon_mvc_model_exception_ce); - zephir_read_property(&_18$$8, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_19$$8); - ZEPHIR_CONCAT_SVSVSV(&_19$$8, "The number of fields must be equal to the number of referenced fields in join ", &modelAlias, "-", &joinAlias, ", when preparing: ", &_18$$8); - ZEPHIR_CALL_METHOD(NULL, &_17$$8, "__construct", &_12, 29, &_19$$8); - zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$8, "phalcon/Mvc/Model/Query.zep", 3366); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_20$$7); - zephir_create_array(&_20$$7, 4, 0); - add_assoc_stringl_ex(&_20$$7, SL("type"), SL("binary-op")); - add_assoc_stringl_ex(&_20$$7, SL("op"), SL("=")); - ZEPHIR_INIT_NVAR(&_22$$7); - zephir_create_array(&_22$$7, 3, 0); - add_assoc_long_ex(&_22$$7, SL("type"), 355); - zephir_array_update_string(&_22$$7, SL("domain"), &modelAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_22$$7, SL("name"), &field, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_21$$7, this_ptr, "getqualified", NULL, 457, &_22$$7); - zephir_check_call_status(); - zephir_array_update_string(&_20$$7, SL("left"), &_21$$7, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_23$$7); - zephir_create_array(&_23$$7, 3, 0); - add_assoc_stringl_ex(&_23$$7, SL("type"), SL("qualified")); - zephir_array_update_string(&_23$$7, SL("domain"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_23$$7, SL("name"), &referencedField, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&_21$$7, this_ptr, "getqualified", NULL, 457, &_23$$7); - zephir_check_call_status(); - zephir_array_update_string(&_20$$7, SL("right"), &_21$$7, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlJoinPartialConditions, &_20$$7, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3391); - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); + zephir_array_update_string(&definition, SL("default"), &_54$$38, PH_COPY | PH_SEPARATE); + zephir_array_fetch_string(&_56$$38, &definition, SL("default"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 509); + ZEPHIR_INIT_NVAR(&_52$$38); + ZVAL_STRING(&_52$$38, "null"); + ZEPHIR_CALL_FUNCTION(&_57$$38, "strcasecmp", &_58, 35, &_56$$38, &_52$$38); zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&_57$$38, 0)) { + zephir_array_update_string(&definition, SL("default"), &__$null, PH_COPY | PH_SEPARATE); + } } - } - ZEPHIR_INIT_NVAR(&field); - ZEPHIR_INIT_NVAR(&position); - } - zephir_create_array(return_value, 3, 0); - zephir_array_update_string(return_value, SL("type"), &joinType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("source"), joinSource, PH_COPY | PH_SEPARATE); - zephir_array_update_string(return_value, SL("conditions"), &sqlJoinConditions, PH_COPY | PH_SEPARATE); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, getTable) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval qualifiedName; - zval *manager, manager_sub, *qualifiedName_param = NULL, modelName, model, source, schema; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&manager_sub); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&qualifiedName); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(2, 2) - Z_PARAM_OBJECT_OF_CLASS(manager, phalcon_mvc_model_managerinterface_ce) - Z_PARAM_ARRAY(qualifiedName) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 2, 0, &manager, &qualifiedName_param); - zephir_get_arrval(&qualifiedName, qualifiedName_param); - - - ZEPHIR_OBS_VAR(&modelName); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&modelName, &qualifiedName, SL("name"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 3416); - return; - } - ZEPHIR_CALL_METHOD(&model, manager, "load", NULL, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - zephir_create_array(return_value, 2, 0); - zephir_array_fast_append(return_value, &schema); - zephir_array_fast_append(return_value, &source); - RETURN_MM(); - } - RETURN_CCTOR(&source); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, getWriteConnection) -{ - zend_bool _1; - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval intermediate, bindParams, bindTypes; - zval *model, model_sub, *intermediate_param = NULL, *bindParams_param = NULL, *bindTypes_param = NULL, connection, transaction, _0; - zval *this_ptr = getThis(); - - ZVAL_UNDEF(&model_sub); - ZVAL_UNDEF(&connection); - ZVAL_UNDEF(&transaction); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&intermediate); - ZVAL_UNDEF(&bindParams); - ZVAL_UNDEF(&bindTypes); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(1, 4) - Z_PARAM_OBJECT_OF_CLASS(model, phalcon_mvc_modelinterface_ce) - Z_PARAM_OPTIONAL - Z_PARAM_ARRAY_OR_NULL(intermediate) - Z_PARAM_ARRAY(bindParams) - Z_PARAM_ARRAY(bindTypes) - ZEND_PARSE_PARAMETERS_END(); -#endif - - - ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 1, 3, &model, &intermediate_param, &bindParams_param, &bindTypes_param); - if (!intermediate_param) { - ZEPHIR_INIT_VAR(&intermediate); - } else { - zephir_get_arrval(&intermediate, intermediate_param); - } - if (!bindParams_param) { - ZEPHIR_INIT_VAR(&bindParams); - array_init(&bindParams); - } else { - zephir_get_arrval(&bindParams, bindParams_param); - } - if (!bindTypes_param) { - ZEPHIR_INIT_VAR(&bindTypes); - array_init(&bindTypes); + zephir_array_fetch_long(&_59$$3, &field, 10, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 517); + if (Z_TYPE_P(&_59$$3) != IS_NULL) { + zephir_array_fetch_long(&_60$$40, &field, 10, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 518); + zephir_array_update_string(&definition, SL("comment"), &_60$$40, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&columnName, &field, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 524); + ZEPHIR_INIT_NVAR(&_61$$3); + object_init_ex(&_61$$3, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_61$$3, "__construct", &_62, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_61$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 525); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); + } ZEND_HASH_FOREACH_END(); } else { - zephir_get_arrval(&bindTypes, bindTypes_param); - } - - - ZEPHIR_INIT_VAR(&connection); - ZVAL_NULL(&connection); - zephir_read_property(&_0, this_ptr, ZEND_STRL("transaction"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&transaction, &_0); - _1 = Z_TYPE_P(&transaction) == IS_OBJECT; - if (_1) { - _1 = zephir_instance_of_ev(&transaction, phalcon_mvc_model_transactioninterface_ce); - } - if (_1) { - ZEPHIR_RETURN_CALL_METHOD(&transaction, "getconnection", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); - } - if ((zephir_method_exists_ex(model, ZEND_STRL("selectwriteconnection")) == SUCCESS)) { - ZEPHIR_CALL_METHOD(&connection, model, "selectwriteconnection", NULL, 0, &intermediate, &bindParams, &bindTypes); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&connection) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "selectWriteConnection did not return a connection", "phalcon/Mvc/Model/Query.zep", 3454); - return; - } - RETURN_CCTOR(&connection); - } - ZEPHIR_RETURN_CALL_METHOD(model, "getwriteconnection", NULL, 0); - zephir_check_call_status(); - RETURN_MM(); -} - -static PHP_METHOD(Phalcon_Mvc_Model_Query, _prepareDelete) -{ - zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$null, ast, delete, tables, models, modelsInstances, sqlTables, sqlModels, sqlAliases, sqlAliasesModelsInstances, deleteTables, manager, table, qualifiedName, modelName, model, source, schema, completeSource, alias, sqlDelete, where, limit, _0, *_1, _2, _4$$8, _5$$9, _7$$13, _8$$14, _9$$17, _10$$17, _11$$18; - zephir_fcall_cache_entry *_3 = NULL, *_6 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS; - zval *this_ptr = getThis(); - - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&ast); - ZVAL_UNDEF(&delete); - ZVAL_UNDEF(&tables); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&modelsInstances); - ZVAL_UNDEF(&sqlTables); - ZVAL_UNDEF(&sqlModels); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&sqlAliasesModelsInstances); - ZVAL_UNDEF(&deleteTables); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&table); - ZVAL_UNDEF(&qualifiedName); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&completeSource); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&sqlDelete); - ZVAL_UNDEF(&where); - ZVAL_UNDEF(&limit); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4$$8); - ZVAL_UNDEF(&_5$$9); - ZVAL_UNDEF(&_7$$13); - ZVAL_UNDEF(&_8$$14); - ZVAL_UNDEF(&_9$$17); - ZVAL_UNDEF(&_10$$17); - ZVAL_UNDEF(&_11$$18); - - - ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("ast"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&ast, &_0); - ZEPHIR_OBS_VAR(&delete); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&delete, &ast, SL("delete"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted DELETE AST", "phalcon/Mvc/Model/Query.zep", 3476); - return; - } - ZEPHIR_OBS_VAR(&tables); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&tables, &delete, SL("tables"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted DELETE AST", "phalcon/Mvc/Model/Query.zep", 3480); - return; - } - ZEPHIR_INIT_VAR(&models); - array_init(&models); - ZEPHIR_INIT_VAR(&modelsInstances); - array_init(&modelsInstances); - ZEPHIR_INIT_VAR(&sqlTables); - array_init(&sqlTables); - ZEPHIR_INIT_VAR(&sqlModels); - array_init(&sqlModels); - ZEPHIR_INIT_VAR(&sqlAliases); - array_init(&sqlAliases); - ZEPHIR_INIT_VAR(&sqlAliasesModelsInstances); - array_init(&sqlAliasesModelsInstances); - if (!(zephir_array_isset_long(&tables, 0))) { - ZEPHIR_INIT_VAR(&deleteTables); - zephir_create_array(&deleteTables, 1, 0); - zephir_array_fast_append(&deleteTables, &tables); - } else { - ZEPHIR_CPY_WRT(&deleteTables, &tables); - } - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - zephir_is_iterable(&deleteTables, 0, "phalcon/Mvc/Model/Query.zep", 3540); - if (Z_TYPE_P(&deleteTables) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&deleteTables), _1) - { - ZEPHIR_INIT_NVAR(&table); - ZVAL_COPY(&table, _1); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &table, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3504); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3505); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_3, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&completeSource); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&_4$$8); - zephir_create_array(&_4$$8, 2, 0); - zephir_array_fast_append(&_4$$8, &source); - zephir_array_fast_append(&_4$$8, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_4$$8); - } else { - ZEPHIR_INIT_NVAR(&_5$$9); - zephir_create_array(&_5$$9, 2, 0); - zephir_array_fast_append(&_5$$9, &source); - zephir_array_fast_append(&_5$$9, &__$null); - ZEPHIR_CPY_WRT(&completeSource, &_5$$9); - } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &table, SL("alias"), 0)) { - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3522); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3523); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &alias, &modelName, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlTables, &source, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3529); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); - } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3533); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &deleteTables, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_2, &deleteTables, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_4, &fields, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (!zend_is_true(&_4)) { break; } - ZEPHIR_CALL_METHOD(&table, &deleteTables, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &table, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3504); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3505); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_6, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&_7$$13); - zephir_create_array(&_7$$13, 2, 0); - zephir_array_fast_append(&_7$$13, &source); - zephir_array_fast_append(&_7$$13, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_7$$13); + ZEPHIR_INIT_NVAR(&_63$$41); + zephir_create_array(&_63$$41, 1, 0); + add_assoc_long_ex(&_63$$41, SL("bindType"), 2); + ZEPHIR_CPY_WRT(&definition, &_63$$41); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 1, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 182); + ZEPHIR_OBS_NVAR(&charSize); + zephir_array_fetch_long(&charSize, &field, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 183); + ZEPHIR_OBS_NVAR(&numericSize); + zephir_array_fetch_long(&numericSize, &field, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 184); + ZEPHIR_OBS_NVAR(&numericScale); + zephir_array_fetch_long(&numericScale, &field, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 185); + do { + _64$$41 = 1; + if (_64$$41 == zephir_memnstr_str(&columnType, SL("boolean"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 203)) { + ZEPHIR_INIT_NVAR(&_65$$42); + ZVAL_LONG(&_65$$42, 8); + zephir_array_update_string(&definition, SL("type"), &_65$$42, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_66$$42); + ZVAL_LONG(&_66$$42, 5); + zephir_array_update_string(&definition, SL("bindType"), &_66$$42, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("bigint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 215)) { + ZEPHIR_INIT_NVAR(&_67$$43); + ZVAL_LONG(&_67$$43, 14); + zephir_array_update_string(&definition, SL("type"), &_67$$43, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_68$$43); + ZVAL_LONG(&_68$$43, 2); + zephir_array_update_string(&definition, SL("bindType"), &_68$$43, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("mediumint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 225)) { + ZEPHIR_INIT_NVAR(&_69$$44); + ZVAL_LONG(&_69$$44, 21); + zephir_array_update_string(&definition, SL("type"), &_69$$44, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_70$$44); + ZVAL_LONG(&_70$$44, 1); + zephir_array_update_string(&definition, SL("bindType"), &_70$$44, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("smallint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 235)) { + ZEPHIR_INIT_NVAR(&_71$$45); + ZVAL_LONG(&_71$$45, 22); + zephir_array_update_string(&definition, SL("type"), &_71$$45, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_72$$45); + ZVAL_LONG(&_72$$45, 1); + zephir_array_update_string(&definition, SL("bindType"), &_72$$45, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("tinyint"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 245)) { + ZEPHIR_INIT_NVAR(&_73$$46); + ZVAL_LONG(&_73$$46, 26); + zephir_array_update_string(&definition, SL("type"), &_73$$46, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_74$$46); + ZVAL_LONG(&_74$$46, 1); + zephir_array_update_string(&definition, SL("bindType"), &_74$$46, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("int"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 258)) { + ZEPHIR_INIT_NVAR(&_75$$47); + ZVAL_LONG(&_75$$47, 0); + zephir_array_update_string(&definition, SL("type"), &_75$$47, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_76$$47); + ZVAL_LONG(&_76$$47, 1); + zephir_array_update_string(&definition, SL("bindType"), &_76$$47, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("bit"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 268)) { + ZEPHIR_INIT_NVAR(&_77$$48); + ZVAL_LONG(&_77$$48, 19); + zephir_array_update_string(&definition, SL("type"), &_77$$48, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("enum"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 277)) { + ZEPHIR_INIT_NVAR(&_78$$49); + ZVAL_LONG(&_78$$49, 18); + zephir_array_update_string(&definition, SL("type"), &_78$$49, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("datetime"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 285)) { + ZEPHIR_INIT_NVAR(&_79$$50); + ZVAL_LONG(&_79$$50, 4); + zephir_array_update_string(&definition, SL("type"), &_79$$50, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_80$$50); + ZVAL_LONG(&_80$$50, 0); + zephir_array_update_string(&definition, SL("size"), &_80$$50, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("date"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 294)) { + ZEPHIR_INIT_NVAR(&_81$$51); + ZVAL_LONG(&_81$$51, 1); + zephir_array_update_string(&definition, SL("type"), &_81$$51, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_82$$51); + ZVAL_LONG(&_82$$51, 0); + zephir_array_update_string(&definition, SL("size"), &_82$$51, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("decimal"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 304) || _64$$41 == zephir_memnstr_str(&columnType, SL("numeric"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 305)) { + ZEPHIR_INIT_NVAR(&_83$$52); + ZVAL_LONG(&_83$$52, 3); + zephir_array_update_string(&definition, SL("type"), &_83$$52, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_84$$52); + ZVAL_LONG(&_84$$52, 32); + zephir_array_update_string(&definition, SL("bindType"), &_84$$52, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("double precision"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 316)) { + ZEPHIR_INIT_NVAR(&_85$$53); + ZVAL_LONG(&_85$$53, 9); + zephir_array_update_string(&definition, SL("type"), &_85$$53, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_86$$53); + ZVAL_LONG(&_86$$53, 32); + zephir_array_update_string(&definition, SL("bindType"), &_86$$53, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("float"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 327) || _64$$41 == zephir_memnstr_str(&columnType, SL("real"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 328)) { + ZEPHIR_INIT_NVAR(&_87$$54); + ZVAL_LONG(&_87$$54, 7); + zephir_array_update_string(&definition, SL("type"), &_87$$54, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &numericSize, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_88$$54); + ZVAL_LONG(&_88$$54, 32); + zephir_array_update_string(&definition, SL("bindType"), &_88$$54, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("mediumblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 339)) { + ZEPHIR_INIT_NVAR(&_89$$55); + ZVAL_LONG(&_89$$55, 6); + zephir_array_update_string(&definition, SL("type"), &_89$$55, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("longblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 347)) { + ZEPHIR_INIT_NVAR(&_90$$56); + ZVAL_LONG(&_90$$56, 13); + zephir_array_update_string(&definition, SL("type"), &_90$$56, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("tinyblob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 355)) { + ZEPHIR_INIT_NVAR(&_91$$57); + ZVAL_LONG(&_91$$57, 10); + zephir_array_update_string(&definition, SL("type"), &_91$$57, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("blob"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 363)) { + ZEPHIR_INIT_NVAR(&_92$$58); + ZVAL_LONG(&_92$$58, 11); + zephir_array_update_string(&definition, SL("type"), &_92$$58, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("timestamp"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 371)) { + ZEPHIR_INIT_NVAR(&_93$$59); + ZVAL_LONG(&_93$$59, 17); + zephir_array_update_string(&definition, SL("type"), &_93$$59, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("time"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 379)) { + ZEPHIR_INIT_NVAR(&_94$$60); + ZVAL_LONG(&_94$$60, 20); + zephir_array_update_string(&definition, SL("type"), &_94$$60, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("jsonb"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 387)) { + ZEPHIR_INIT_NVAR(&_95$$61); + ZVAL_LONG(&_95$$61, 16); + zephir_array_update_string(&definition, SL("type"), &_95$$61, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("json"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 395)) { + ZEPHIR_INIT_NVAR(&_96$$62); + ZVAL_LONG(&_96$$62, 15); + zephir_array_update_string(&definition, SL("type"), &_96$$62, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("longtext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 403)) { + ZEPHIR_INIT_NVAR(&_97$$63); + ZVAL_LONG(&_97$$63, 24); + zephir_array_update_string(&definition, SL("type"), &_97$$63, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("mediumtext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 411)) { + ZEPHIR_INIT_NVAR(&_98$$64); + ZVAL_LONG(&_98$$64, 23); + zephir_array_update_string(&definition, SL("type"), &_98$$64, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("tinytext"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 419)) { + ZEPHIR_INIT_NVAR(&_99$$65); + ZVAL_LONG(&_99$$65, 25); + zephir_array_update_string(&definition, SL("type"), &_99$$65, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("text"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 427)) { + ZEPHIR_INIT_NVAR(&_100$$66); + ZVAL_LONG(&_100$$66, 6); + zephir_array_update_string(&definition, SL("type"), &_100$$66, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("varying"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 435) || _64$$41 == zephir_memnstr_str(&columnType, SL("varchar"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 436)) { + ZEPHIR_INIT_NVAR(&_101$$67); + ZVAL_LONG(&_101$$67, 2); + zephir_array_update_string(&definition, SL("type"), &_101$$67, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &charSize, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("char"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 445)) { + ZEPHIR_INIT_NVAR(&_102$$68); + ZVAL_LONG(&_102$$68, 5); + zephir_array_update_string(&definition, SL("type"), &_102$$68, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("size"), &charSize, PH_COPY | PH_SEPARATE); + break; + } + if (_64$$41 == zephir_memnstr_str(&columnType, SL("uuid"), "phalcon/Db/Adapter/Pdo/Postgresql.zep", 454)) { + ZEPHIR_INIT_NVAR(&_103$$69); + ZVAL_LONG(&_103$$69, 5); + zephir_array_update_string(&definition, SL("type"), &_103$$69, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_104$$69); + ZVAL_LONG(&_104$$69, 36); + zephir_array_update_string(&definition, SL("size"), &_104$$69, PH_COPY | PH_SEPARATE); + break; + } + ZEPHIR_INIT_NVAR(&_105$$70); + ZVAL_LONG(&_105$$70, 2); + zephir_array_update_string(&definition, SL("type"), &_105$$70, PH_COPY | PH_SEPARATE); + break; + } while(0); + + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); } else { - ZEPHIR_INIT_NVAR(&_8$$14); - zephir_create_array(&_8$$14, 2, 0); - zephir_array_fast_append(&_8$$14, &source); - zephir_array_fast_append(&_8$$14, &__$null); - ZEPHIR_CPY_WRT(&completeSource, &_8$$14); + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &table, SL("alias"), 0)) { - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3522); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3523); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &alias, &modelName, PH_COPY | PH_SEPARATE); - } else { - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlTables, &source, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3529); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_106$$41, &field, 6, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 481); + if (ZEPHIR_IS_STRING(&_106$$41, "PRI")) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3533); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &deleteTables, "next", NULL, 0); + zephir_array_fetch_long(&_107$$41, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 488); + if (ZEPHIR_IS_STRING(&_107$$41, "YES")) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_108$$41, &field, 7, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 495); + if (ZEPHIR_IS_STRING(&_108$$41, "auto_increment")) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_109$$41, &field, 9, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 502); + if (Z_TYPE_P(&_109$$41) != IS_NULL) { + zephir_array_fetch_long(&_110$$76, &field, 9, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 507); + ZEPHIR_INIT_NVAR(&_111$$76); + ZVAL_STRING(&_111$$76, "/^'|'?::[[:alnum:][:space:]]+$/"); + ZEPHIR_INIT_NVAR(&_112$$76); + ZVAL_STRING(&_112$$76, ""); + ZEPHIR_CALL_FUNCTION(&_113$$76, "preg_replace", &_55, 37, &_111$$76, &_112$$76, &_110$$76); + zephir_check_call_status(); + zephir_array_update_string(&definition, SL("default"), &_113$$76, PH_COPY | PH_SEPARATE); + zephir_array_fetch_string(&_114$$76, &definition, SL("default"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 509); + ZEPHIR_INIT_NVAR(&_111$$76); + ZVAL_STRING(&_111$$76, "null"); + ZEPHIR_CALL_FUNCTION(&_115$$76, "strcasecmp", &_58, 35, &_114$$76, &_111$$76); + zephir_check_call_status(); + if (ZEPHIR_IS_LONG(&_115$$76, 0)) { + zephir_array_update_string(&definition, SL("default"), &__$null, PH_COPY | PH_SEPARATE); + } + } + zephir_array_fetch_long(&_116$$41, &field, 10, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 517); + if (Z_TYPE_P(&_116$$41) != IS_NULL) { + zephir_array_fetch_long(&_117$$78, &field, 10, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 518); + zephir_array_update_string(&definition, SL("comment"), &_117$$78, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&columnName); + zephir_array_fetch_long(&columnName, &field, 0, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 524); + ZEPHIR_INIT_NVAR(&_118$$41); + object_init_ex(&_118$$41, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_118$$41, "__construct", &_62, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_118$$41, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 525); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); + ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&table); - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &models); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &modelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &sqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &sqlAliasesModelsInstances); - ZEPHIR_INIT_VAR(&sqlDelete); - array_init(&sqlDelete); - zephir_array_update_string(&sqlDelete, SL("tables"), &sqlTables, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlDelete, SL("models"), &sqlModels, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_VAR(&where); - if (zephir_array_isset_string_fetch(&where, &ast, SL("where"), 0)) { - ZVAL_BOOL(&_10$$17, 1); - ZEPHIR_CALL_METHOD(&_9$$17, this_ptr, "getexpression", NULL, 456, &where, &_10$$17); - zephir_check_call_status(); - zephir_array_update_string(&sqlDelete, SL("where"), &_9$$17, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&limit); - if (zephir_array_isset_string_fetch(&limit, &ast, SL("limit"), 0)) { - ZEPHIR_CALL_METHOD(&_11$$18, this_ptr, "getlimitclause", NULL, 470, &limit); - zephir_check_call_status(); - zephir_array_update_string(&sqlDelete, SL("limit"), &_11$$18, PH_COPY | PH_SEPARATE); - } - RETURN_CCTOR(&sqlDelete); + ZEPHIR_INIT_NVAR(&field); + RETURN_CCTOR(&columns); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, _prepareInsert) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, describeReferences) { - zval _5$$7, _10$$8; - zend_bool notQuoting = 0; - zval ast, qualifiedName, manager, modelName, model, source, schema, exprValues, exprValue, sqlInsert, metaData, fields, sqlFields, field, name, _0, _2, *_3, _4, _1$$6, _6$$7, _7$$7, _8$$7, _11$$8, _12$$8, _13$$8, *_14$$9, _15$$9, _16$$10, _18$$11, _19$$11, _20$$11, _22$$12, _24$$13, _25$$13, _26$$13; + zval _14$$3, _23$$6, _29$$9, _33$$10; + zend_string *_27; + zend_ulong _26; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_9 = NULL, *_17 = NULL, *_21 = NULL, *_23 = NULL; + zephir_fcall_cache_entry *_31 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, references, reference, arrayReference, constraintName, referenceObjects, name, referencedSchema, referencedTable, columns, referencedColumns, referenceUpdate, referenceDelete, _0, _1, _2, _3, *_4, _5, *_24, _25, _6$$5, _7$$5, _8$$5, _9$$5, _10$$5, _11$$5, _12$$3, _13$$3, _15$$8, _16$$8, _17$$8, _18$$8, _19$$8, _20$$8, _21$$6, _22$$6, _28$$9, _30$$9, _32$$10, _34$$10; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_UNDEF(&ast); - ZVAL_UNDEF(&qualifiedName); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&source); + ZVAL_UNDEF(&table); ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&exprValues); - ZVAL_UNDEF(&exprValue); - ZVAL_UNDEF(&sqlInsert); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&fields); - ZVAL_UNDEF(&sqlFields); - ZVAL_UNDEF(&field); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&arrayReference); + ZVAL_UNDEF(&constraintName); + ZVAL_UNDEF(&referenceObjects); ZVAL_UNDEF(&name); + ZVAL_UNDEF(&referencedSchema); + ZVAL_UNDEF(&referencedTable); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&referencedColumns); + ZVAL_UNDEF(&referenceUpdate); + ZVAL_UNDEF(&referenceDelete); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_1$$6); - ZVAL_UNDEF(&_6$$7); - ZVAL_UNDEF(&_7$$7); - ZVAL_UNDEF(&_8$$7); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_12$$8); - ZVAL_UNDEF(&_13$$8); - ZVAL_UNDEF(&_15$$9); - ZVAL_UNDEF(&_16$$10); - ZVAL_UNDEF(&_18$$11); - ZVAL_UNDEF(&_19$$11); - ZVAL_UNDEF(&_20$$11); - ZVAL_UNDEF(&_22$$12); - ZVAL_UNDEF(&_24$$13); - ZVAL_UNDEF(&_25$$13); - ZVAL_UNDEF(&_26$$13); - ZVAL_UNDEF(&_5$$7); - ZVAL_UNDEF(&_10$$8); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_25); + ZVAL_UNDEF(&_6$$5); + ZVAL_UNDEF(&_7$$5); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_11$$5); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_13$$3); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_18$$8); + ZVAL_UNDEF(&_19$$8); + ZVAL_UNDEF(&_20$$8); + ZVAL_UNDEF(&_21$$6); + ZVAL_UNDEF(&_22$$6); + ZVAL_UNDEF(&_28$$9); + ZVAL_UNDEF(&_30$$9); + ZVAL_UNDEF(&_32$$10); + ZVAL_UNDEF(&_34$$10); + ZVAL_UNDEF(&_14$$3); + ZVAL_UNDEF(&_23$$6); + ZVAL_UNDEF(&_29$$9); + ZVAL_UNDEF(&_33$$10); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("ast"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&ast, &_0); - if (UNEXPECTED(!(zephir_array_isset_string(&ast, SL("qualifiedName"))))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted INSERT AST", "phalcon/Mvc/Model/Query.zep", 3574); - return; + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - if (UNEXPECTED(!(zephir_array_isset_string(&ast, SL("values"))))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted INSERT AST", "phalcon/Mvc/Model/Query.zep", 3578); - return; + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); } - ZEPHIR_OBS_VAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &ast, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3581); - if (UNEXPECTED(!(zephir_array_isset_string(&qualifiedName, SL("name"))))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted INSERT AST", "phalcon/Mvc/Model/Query.zep", 3585); - return; + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - ZEPHIR_OBS_VAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3589); - ZEPHIR_CALL_METHOD(&model, &manager, "load", NULL, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); + } else { + ZEPHIR_INIT_VAR(&schema); + } + } + + + ZEPHIR_INIT_VAR(&references); + array_init(&references); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describereferences", NULL, 0, &table, &schema); zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_VAR(&_1$$6); - zephir_create_array(&_1$$6, 2, 0); - zephir_array_fast_append(&_1$$6, &schema); - zephir_array_fast_append(&_1$$6, &source); - ZEPHIR_CPY_WRT(&source, &_1$$6); - } - notQuoting = 0; - ZEPHIR_INIT_VAR(&exprValues); - array_init(&exprValues); - zephir_array_fetch_string(&_2, &ast, SL("values"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3602); - zephir_is_iterable(&_2, 0, "phalcon/Mvc/Model/Query.zep", 3610); - if (Z_TYPE_P(&_2) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_2), _3) + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 581); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) { - ZEPHIR_INIT_NVAR(&exprValue); - ZVAL_COPY(&exprValue, _3); - ZEPHIR_INIT_NVAR(&_5$$7); - zephir_create_array(&_5$$7, 2, 0); - ZEPHIR_OBS_NVAR(&_6$$7); - zephir_array_fetch_string(&_6$$7, &exprValue, SL("type"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3605); - zephir_array_update_string(&_5$$7, SL("type"), &_6$$7, PH_COPY | PH_SEPARATE); - if (notQuoting) { - ZVAL_BOOL(&_8$$7, 1); + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _4); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 550); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 553); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 554); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_long(&referenceUpdate, &reference, 6, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 555); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_long(&referenceDelete, &reference, 7, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 556); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); } else { - ZVAL_BOOL(&_8$$7, 0); + zephir_array_fetch(&_6$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 560); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_6$$5, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 560); + zephir_array_fetch(&_7$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 561); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_7$$5, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 561); + zephir_array_fetch(&_8$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 562); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_8$$5, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 562); + zephir_array_fetch(&_9$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 563); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_9$$5, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 563); + zephir_array_fetch(&_10$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 564); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_string(&referenceUpdate, &_10$$5, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 564); + zephir_array_fetch(&_11$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 565); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_string(&referenceDelete, &_11$$5, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 565); } - ZEPHIR_CALL_METHOD(&_7$$7, this_ptr, "getexpression", &_9, 456, &exprValue, &_8$$7); - zephir_check_call_status(); - zephir_array_update_string(&_5$$7, SL("value"), &_7$$7, PH_COPY | PH_SEPARATE); - zephir_array_append(&exprValues, &_5$$7, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3607); + zephir_array_fetch_long(&_12$$3, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 568); + zephir_array_append(&columns, &_12$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 568); + zephir_array_fetch_long(&_13$$3, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 569); + zephir_array_append(&referencedColumns, &_13$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 569); + ZEPHIR_INIT_NVAR(&_14$$3); + zephir_create_array(&_14$$3, 6, 0); + zephir_array_update_string(&_14$$3, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("onUpdate"), &referenceUpdate, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("onDelete"), &referenceDelete, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_14$$3, PH_COPY | PH_SEPARATE); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_2, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_4, &_2, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_4)) { + if (!zend_is_true(&_5)) { break; } - ZEPHIR_CALL_METHOD(&exprValue, &_2, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&reference, &_0, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_10$$8); - zephir_create_array(&_10$$8, 2, 0); - ZEPHIR_OBS_NVAR(&_11$$8); - zephir_array_fetch_string(&_11$$8, &exprValue, SL("type"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3605); - zephir_array_update_string(&_10$$8, SL("type"), &_11$$8, PH_COPY | PH_SEPARATE); - if (notQuoting) { - ZVAL_BOOL(&_13$$8, 1); + ZEPHIR_OBS_NVAR(&constraintName); + zephir_array_fetch_long(&constraintName, &reference, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 550); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_long(&referencedSchema, &reference, 3, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 553); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 554); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_long(&referenceUpdate, &reference, 6, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 555); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_long(&referenceDelete, &reference, 7, PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 556); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); } else { - ZVAL_BOOL(&_13$$8, 0); + zephir_array_fetch(&_15$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 560); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_15$$8, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 560); + zephir_array_fetch(&_16$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 561); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_16$$8, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 561); + zephir_array_fetch(&_17$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 562); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_17$$8, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 562); + zephir_array_fetch(&_18$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 563); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_18$$8, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 563); + zephir_array_fetch(&_19$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 564); + ZEPHIR_OBS_NVAR(&referenceUpdate); + zephir_array_fetch_string(&referenceUpdate, &_19$$8, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 564); + zephir_array_fetch(&_20$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 565); + ZEPHIR_OBS_NVAR(&referenceDelete); + zephir_array_fetch_string(&referenceDelete, &_20$$8, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 565); } - ZEPHIR_CALL_METHOD(&_12$$8, this_ptr, "getexpression", &_9, 456, &exprValue, &_13$$8); - zephir_check_call_status(); - zephir_array_update_string(&_10$$8, SL("value"), &_12$$8, PH_COPY | PH_SEPARATE); - zephir_array_append(&exprValues, &_10$$8, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3607); - ZEPHIR_CALL_METHOD(NULL, &_2, "next", NULL, 0); + zephir_array_fetch_long(&_21$$6, &reference, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 568); + zephir_array_append(&columns, &_21$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 568); + zephir_array_fetch_long(&_22$$6, &reference, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 569); + zephir_array_append(&referencedColumns, &_22$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 569); + ZEPHIR_INIT_NVAR(&_23$$6); + zephir_create_array(&_23$$6, 6, 0); + zephir_array_update_string(&_23$$6, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("onUpdate"), &referenceUpdate, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_23$$6, SL("onDelete"), &referenceDelete, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_23$$6, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&exprValue); - ZEPHIR_INIT_VAR(&sqlInsert); - zephir_create_array(&sqlInsert, 2, 0); - zephir_array_update_string(&sqlInsert, SL("model"), &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlInsert, SL("table"), &source, PH_COPY | PH_SEPARATE); - zephir_read_property(&_0, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_0); - ZEPHIR_OBS_VAR(&fields); - if (zephir_array_isset_string_fetch(&fields, &ast, SL("fields"), 0)) { - ZEPHIR_INIT_VAR(&sqlFields); - array_init(&sqlFields); - zephir_is_iterable(&fields, 0, "phalcon/Mvc/Model/Query.zep", 3634); - if (Z_TYPE_P(&fields) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&fields), _14$$9) - { - ZEPHIR_INIT_NVAR(&field); - ZVAL_COPY(&field, _14$$9); - ZEPHIR_OBS_NVAR(&name); - zephir_array_fetch_string(&name, &field, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3621); - ZEPHIR_CALL_METHOD(&_16$$10, &metaData, "hasattribute", &_17, 0, &model, &name); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_16$$10))) { - ZEPHIR_INIT_NVAR(&_18$$11); - object_init_ex(&_18$$11, phalcon_mvc_model_exception_ce); - zephir_read_property(&_19$$11, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_20$$11); - ZEPHIR_CONCAT_SVSVSV(&_20$$11, "The model '", &modelName, "' doesn't have the attribute '", &name, "', when preparing: ", &_19$$11); - ZEPHIR_CALL_METHOD(NULL, &_18$$11, "__construct", &_21, 29, &_20$$11); - zephir_check_call_status(); - zephir_throw_exception_debug(&_18$$11, "phalcon/Mvc/Model/Query.zep", 3627); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&sqlFields, &name, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3631); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); + ZEPHIR_INIT_NVAR(&reference); + ZEPHIR_INIT_VAR(&referenceObjects); + array_init(&referenceObjects); + zephir_is_iterable(&references, 0, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 597); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&references), _26, _27, _24) + { + ZEPHIR_INIT_NVAR(&name); + if (_27 != NULL) { + ZVAL_STR_COPY(&name, _27); + } else { + ZVAL_LONG(&name, _26); + } + ZEPHIR_INIT_NVAR(&arrayReference); + ZVAL_COPY(&arrayReference, _24); + ZEPHIR_INIT_NVAR(&_28$$9); + object_init_ex(&_28$$9, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_29$$9); + zephir_create_array(&_29$$9, 6, 0); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 587); + zephir_array_update_string(&_29$$9, SL("referencedSchema"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 588); + zephir_array_update_string(&_29$$9, SL("referencedTable"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 589); + zephir_array_update_string(&_29$$9, SL("columns"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 590); + zephir_array_update_string(&_29$$9, SL("referencedColumns"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 591); + zephir_array_update_string(&_29$$9, SL("onUpdate"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_30$$9); + zephir_array_fetch_string(&_30$$9, &arrayReference, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 593); + zephir_array_update_string(&_29$$9, SL("onDelete"), &_30$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_28$$9, "__construct", &_31, 31, &name, &_29$$9); zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_15$$9, &fields, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_15$$9)) { - break; - } - ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&name); - zephir_array_fetch_string(&name, &field, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3621); - ZEPHIR_CALL_METHOD(&_22$$12, &metaData, "hasattribute", &_23, 0, &model, &name); - zephir_check_call_status(); - if (UNEXPECTED(!zephir_is_true(&_22$$12))) { - ZEPHIR_INIT_NVAR(&_24$$13); - object_init_ex(&_24$$13, phalcon_mvc_model_exception_ce); - zephir_read_property(&_25$$13, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_26$$13); - ZEPHIR_CONCAT_SVSVSV(&_26$$13, "The model '", &modelName, "' doesn't have the attribute '", &name, "', when preparing: ", &_25$$13); - ZEPHIR_CALL_METHOD(NULL, &_24$$13, "__construct", &_21, 29, &_26$$13); - zephir_check_call_status(); - zephir_throw_exception_debug(&_24$$13, "phalcon/Mvc/Model/Query.zep", 3627); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_append(&sqlFields, &name, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3631); - ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); - zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_28$$9, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_25, &references, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_25)) { + break; } + ZEPHIR_CALL_METHOD(&name, &references, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&arrayReference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_32$$10); + object_init_ex(&_32$$10, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_33$$10); + zephir_create_array(&_33$$10, 6, 0); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 587); + zephir_array_update_string(&_33$$10, SL("referencedSchema"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 588); + zephir_array_update_string(&_33$$10, SL("referencedTable"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 589); + zephir_array_update_string(&_33$$10, SL("columns"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 590); + zephir_array_update_string(&_33$$10, SL("referencedColumns"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("onUpdate"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 591); + zephir_array_update_string(&_33$$10, SL("onUpdate"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_34$$10); + zephir_array_fetch_string(&_34$$10, &arrayReference, SL("onDelete"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 593); + zephir_array_update_string(&_33$$10, SL("onDelete"), &_34$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_32$$10, "__construct", &_31, 31, &name, &_33$$10); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); + zephir_check_call_status(); } - ZEPHIR_INIT_NVAR(&field); - zephir_array_update_string(&sqlInsert, SL("fields"), &sqlFields, PH_COPY | PH_SEPARATE); } - zephir_array_update_string(&sqlInsert, SL("values"), &exprValues, PH_COPY | PH_SEPARATE); - RETURN_CCTOR(&sqlInsert); + ZEPHIR_INIT_NVAR(&arrayReference); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&referenceObjects); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, _prepareSelect) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, getDefaultIdValue) { - zval _13$$24, _25$$28, _46$$43, _58$$47, _90$$66, _93$$73, _99$$81, _102$$88; - zval sqlModels, sqlTables, sqlAliases, sqlColumns, sqlAliasesModels, sqlModelsAliases, sqlAliasesModelsInstances, models, modelsInstances, _21$$24, _22$$24, _23$$24, _33$$28, _34$$28, _35$$28, _54$$43, _55$$43, _56$$43, _66$$47, _67$$47, _68$$47; + zval _0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zephir_fcall_cache_entry *_4 = NULL, *_8 = NULL, *_14 = NULL, *_16 = NULL, *_26 = NULL, *_28 = NULL, *_36 = NULL, *_47 = NULL, *_49 = NULL, *_59 = NULL, *_61 = NULL, *_85 = NULL; - zend_long ZEPHIR_LAST_CALL_STATUS, position = 0, number = 0; - zend_bool merge; - zval *ast = NULL, ast_sub, *merge_param = NULL, __$null, __$true, select, tables, columns, selectedModels, manager, metaData, selectedModel, qualifiedName, modelName, model, schema, source, completeSource, alias, joins, sqlJoins, selectColumns, sqlColumnAliases, column, sqlColumn, sqlSelect, distinct, having, where, groupBy, order, limit, tempModels, tempModelsInstances, tempSqlAliases, tempSqlModelsAliases, tempSqlAliasesModelsInstances, tempSqlAliasesModels, with, withs, withItem, automaticJoins, relation, joinAlias, relationModel, bestAlias, eagerType, _1, *_2, _3, *_82, _83, _103, _0$$3, _5$$17, _6$$17, _7$$17, _9$$19, *_10$$21, _11$$21, _12$$24, _15$$25, _17$$27, _18$$27, _19$$27, _20$$26, _24$$28, _27$$29, _29$$31, _30$$31, _31$$31, _32$$30, _37$$33, _38$$36, _39$$36, _40$$36, _41$$38, _42$$41, *_43$$40, _44$$40, _45$$43, _48$$44, _50$$46, _51$$46, _52$$46, _53$$45, _57$$47, _60$$48, _62$$50, _63$$50, _64$$50, _65$$49, _69$$52, _70$$52, _71$$52, _72$$52, _73$$52, _74$$52, _75$$52, _76$$52, _77$$52, _78$$52, _79$$52, _80$$52, _81$$55, _84$$60, *_86$$60, _87$$60, _88$$65, _89$$66, _91$$72, _92$$73, _94$$75, *_95$$75, _96$$75, _97$$80, _98$$81, _100$$87, _101$$88, _104$$92, _105$$93, _106$$94, _107$$95, _108$$96; + zend_long ZEPHIR_LAST_CALL_STATUS; zval *this_ptr = getThis(); - ZVAL_UNDEF(&ast_sub); - ZVAL_NULL(&__$null); - ZVAL_BOOL(&__$true, 1); - ZVAL_UNDEF(&select); - ZVAL_UNDEF(&tables); - ZVAL_UNDEF(&columns); - ZVAL_UNDEF(&selectedModels); - ZVAL_UNDEF(&manager); - ZVAL_UNDEF(&metaData); - ZVAL_UNDEF(&selectedModel); - ZVAL_UNDEF(&qualifiedName); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&source); - ZVAL_UNDEF(&completeSource); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&joins); - ZVAL_UNDEF(&sqlJoins); - ZVAL_UNDEF(&selectColumns); - ZVAL_UNDEF(&sqlColumnAliases); - ZVAL_UNDEF(&column); - ZVAL_UNDEF(&sqlColumn); - ZVAL_UNDEF(&sqlSelect); - ZVAL_UNDEF(&distinct); - ZVAL_UNDEF(&having); - ZVAL_UNDEF(&where); - ZVAL_UNDEF(&groupBy); - ZVAL_UNDEF(&order); - ZVAL_UNDEF(&limit); - ZVAL_UNDEF(&tempModels); - ZVAL_UNDEF(&tempModelsInstances); - ZVAL_UNDEF(&tempSqlAliases); - ZVAL_UNDEF(&tempSqlModelsAliases); - ZVAL_UNDEF(&tempSqlAliasesModelsInstances); - ZVAL_UNDEF(&tempSqlAliasesModels); - ZVAL_UNDEF(&with); - ZVAL_UNDEF(&withs); - ZVAL_UNDEF(&withItem); - ZVAL_UNDEF(&automaticJoins); - ZVAL_UNDEF(&relation); - ZVAL_UNDEF(&joinAlias); - ZVAL_UNDEF(&relationModel); - ZVAL_UNDEF(&bestAlias); - ZVAL_UNDEF(&eagerType); - ZVAL_UNDEF(&_1); - ZVAL_UNDEF(&_3); - ZVAL_UNDEF(&_83); - ZVAL_UNDEF(&_103); - ZVAL_UNDEF(&_0$$3); - ZVAL_UNDEF(&_5$$17); - ZVAL_UNDEF(&_6$$17); - ZVAL_UNDEF(&_7$$17); - ZVAL_UNDEF(&_9$$19); - ZVAL_UNDEF(&_11$$21); - ZVAL_UNDEF(&_12$$24); - ZVAL_UNDEF(&_15$$25); - ZVAL_UNDEF(&_17$$27); - ZVAL_UNDEF(&_18$$27); - ZVAL_UNDEF(&_19$$27); - ZVAL_UNDEF(&_20$$26); - ZVAL_UNDEF(&_24$$28); - ZVAL_UNDEF(&_27$$29); - ZVAL_UNDEF(&_29$$31); - ZVAL_UNDEF(&_30$$31); - ZVAL_UNDEF(&_31$$31); - ZVAL_UNDEF(&_32$$30); - ZVAL_UNDEF(&_37$$33); - ZVAL_UNDEF(&_38$$36); - ZVAL_UNDEF(&_39$$36); - ZVAL_UNDEF(&_40$$36); - ZVAL_UNDEF(&_41$$38); - ZVAL_UNDEF(&_42$$41); - ZVAL_UNDEF(&_44$$40); - ZVAL_UNDEF(&_45$$43); - ZVAL_UNDEF(&_48$$44); - ZVAL_UNDEF(&_50$$46); - ZVAL_UNDEF(&_51$$46); - ZVAL_UNDEF(&_52$$46); - ZVAL_UNDEF(&_53$$45); - ZVAL_UNDEF(&_57$$47); - ZVAL_UNDEF(&_60$$48); - ZVAL_UNDEF(&_62$$50); - ZVAL_UNDEF(&_63$$50); - ZVAL_UNDEF(&_64$$50); - ZVAL_UNDEF(&_65$$49); - ZVAL_UNDEF(&_69$$52); - ZVAL_UNDEF(&_70$$52); - ZVAL_UNDEF(&_71$$52); - ZVAL_UNDEF(&_72$$52); - ZVAL_UNDEF(&_73$$52); - ZVAL_UNDEF(&_74$$52); - ZVAL_UNDEF(&_75$$52); - ZVAL_UNDEF(&_76$$52); - ZVAL_UNDEF(&_77$$52); - ZVAL_UNDEF(&_78$$52); - ZVAL_UNDEF(&_79$$52); - ZVAL_UNDEF(&_80$$52); - ZVAL_UNDEF(&_81$$55); - ZVAL_UNDEF(&_84$$60); - ZVAL_UNDEF(&_87$$60); - ZVAL_UNDEF(&_88$$65); - ZVAL_UNDEF(&_89$$66); - ZVAL_UNDEF(&_91$$72); - ZVAL_UNDEF(&_92$$73); - ZVAL_UNDEF(&_94$$75); - ZVAL_UNDEF(&_96$$75); - ZVAL_UNDEF(&_97$$80); - ZVAL_UNDEF(&_98$$81); - ZVAL_UNDEF(&_100$$87); - ZVAL_UNDEF(&_101$$88); - ZVAL_UNDEF(&_104$$92); - ZVAL_UNDEF(&_105$$93); - ZVAL_UNDEF(&_106$$94); - ZVAL_UNDEF(&_107$$95); - ZVAL_UNDEF(&_108$$96); - ZVAL_UNDEF(&sqlModels); - ZVAL_UNDEF(&sqlTables); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&sqlColumns); - ZVAL_UNDEF(&sqlAliasesModels); - ZVAL_UNDEF(&sqlModelsAliases); - ZVAL_UNDEF(&sqlAliasesModelsInstances); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&modelsInstances); - ZVAL_UNDEF(&_21$$24); - ZVAL_UNDEF(&_22$$24); - ZVAL_UNDEF(&_23$$24); - ZVAL_UNDEF(&_33$$28); - ZVAL_UNDEF(&_34$$28); - ZVAL_UNDEF(&_35$$28); - ZVAL_UNDEF(&_54$$43); - ZVAL_UNDEF(&_55$$43); - ZVAL_UNDEF(&_56$$43); - ZVAL_UNDEF(&_66$$47); - ZVAL_UNDEF(&_67$$47); - ZVAL_UNDEF(&_68$$47); - ZVAL_UNDEF(&_13$$24); - ZVAL_UNDEF(&_25$$28); - ZVAL_UNDEF(&_46$$43); - ZVAL_UNDEF(&_58$$47); - ZVAL_UNDEF(&_90$$66); - ZVAL_UNDEF(&_93$$73); - ZVAL_UNDEF(&_99$$81); - ZVAL_UNDEF(&_102$$88); -#if PHP_VERSION_ID >= 80000 - bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(0, 2) - Z_PARAM_OPTIONAL - Z_PARAM_ZVAL_OR_NULL(ast) - Z_PARAM_BOOL(merge) - ZEND_PARSE_PARAMETERS_END(); -#endif + ZVAL_UNDEF(&_0); ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 0, 2, &ast, &merge_param); - if (!ast) { - ast = &ast_sub; - ZEPHIR_CPY_WRT(ast, &__$null); - } else { - ZEPHIR_SEPARATE_PARAM(ast); - } - if (!merge_param) { - merge = 0; - } else { - merge = zephir_get_boolval(merge_param); - } - - if (ZEPHIR_IS_EMPTY(ast)) { - zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("ast"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(ast, &_0$$3); - } - ZEPHIR_OBS_VAR(&select); - if (!(zephir_array_isset_string_fetch(&select, ast, SL("select"), 0))) { - ZEPHIR_CPY_WRT(&select, ast); - } - ZEPHIR_OBS_VAR(&tables); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&tables, &select, SL("tables"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 3670); - return; - } - ZEPHIR_OBS_VAR(&columns); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&columns, &select, SL("columns"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted SELECT AST", "phalcon/Mvc/Model/Query.zep", 3674); - return; - } - RETURN_ON_FAILURE(zephir_property_incr(this_ptr, SL("nestingLevel"))); - ZEPHIR_INIT_VAR(&sqlModels); - array_init(&sqlModels); - ZEPHIR_INIT_VAR(&sqlTables); - array_init(&sqlTables); - ZEPHIR_INIT_VAR(&sqlColumns); - array_init(&sqlColumns); - ZEPHIR_INIT_VAR(&sqlAliases); - array_init(&sqlAliases); - ZEPHIR_INIT_VAR(&sqlAliasesModels); - array_init(&sqlAliasesModels); - ZEPHIR_INIT_VAR(&sqlModelsAliases); - array_init(&sqlModelsAliases); - ZEPHIR_INIT_VAR(&sqlAliasesModelsInstances); - array_init(&sqlAliasesModelsInstances); - ZEPHIR_INIT_VAR(&models); - array_init(&models); - ZEPHIR_INIT_VAR(&modelsInstances); - array_init(&modelsInstances); - if (!(zephir_array_isset_long(&tables, 0))) { - ZEPHIR_INIT_VAR(&selectedModels); - zephir_create_array(&selectedModels, 1, 0); - zephir_array_fast_append(&selectedModels, &tables); - } else { - ZEPHIR_CPY_WRT(&selectedModels, &tables); + object_init_ex(return_value, phalcon_db_rawvalue_ce); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "DEFAULT"); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 32, &_0); + zephir_check_call_status(); + RETURN_MM(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, modifyColumn) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *tableName_param = NULL, *schemaName_param = NULL, *column, column_sub, *currentColumn = NULL, currentColumn_sub, __$null, sql, queries, query, exception, _0, *_1$$4, _2$$4, _3$$5, _5$$7, _6$$3, _7$$10, _8$$10, _9$$10; + zval tableName, schemaName; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&tableName); + ZVAL_UNDEF(&schemaName); + ZVAL_UNDEF(&column_sub); + ZVAL_UNDEF(¤tColumn_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&sql); + ZVAL_UNDEF(&queries); + ZVAL_UNDEF(&query); + ZVAL_UNDEF(&exception); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_2$$4); + ZVAL_UNDEF(&_3$$5); + ZVAL_UNDEF(&_5$$7); + ZVAL_UNDEF(&_6$$3); + ZVAL_UNDEF(&_7$$10); + ZVAL_UNDEF(&_8$$10); + ZVAL_UNDEF(&_9$$10); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 4) + Z_PARAM_STR(tableName) + Z_PARAM_STR(schemaName) + Z_PARAM_OBJECT_OF_CLASS(column, phalcon_db_columninterface_ce) + Z_PARAM_OPTIONAL + Z_PARAM_OBJECT_OF_CLASS_OR_NULL(currentColumn, phalcon_db_columninterface_ce) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 3, 1, &tableName_param, &schemaName_param, &column, ¤tColumn); + if (UNEXPECTED(Z_TYPE_P(tableName_param) != IS_STRING && Z_TYPE_P(tableName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'tableName' must be of the type string")); + RETURN_MM_NULL(); } - if (!(zephir_array_isset_long(&columns, 0))) { - ZEPHIR_INIT_VAR(&selectColumns); - zephir_create_array(&selectColumns, 1, 0); - zephir_array_fast_append(&selectColumns, &columns); + if (EXPECTED(Z_TYPE_P(tableName_param) == IS_STRING)) { + zephir_get_strval(&tableName, tableName_param); } else { - ZEPHIR_CPY_WRT(&selectColumns, &columns); - } - zephir_read_property(&_1, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_1); - zephir_read_property(&_1, this_ptr, ZEND_STRL("metaData"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&metaData, &_1); - if (UNEXPECTED(Z_TYPE_P(&manager) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A models-manager is required to execute the query", "phalcon/Mvc/Model/Query.zep", 3741); - return; - } - if (UNEXPECTED(Z_TYPE_P(&metaData) != IS_OBJECT)) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "A meta-data is required to execute the query", "phalcon/Mvc/Model/Query.zep", 3747); - return; + ZEPHIR_INIT_VAR(&tableName); } - number = 0; - ZEPHIR_INIT_VAR(&automaticJoins); - array_init(&automaticJoins); - zephir_is_iterable(&selectedModels, 0, "phalcon/Mvc/Model/Query.zep", 3877); - if (Z_TYPE_P(&selectedModels) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&selectedModels), _2) - { - ZEPHIR_INIT_NVAR(&selectedModel); - ZVAL_COPY(&selectedModel, _2); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &selectedModel, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3755); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3756); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_4, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&completeSource); - zephir_create_array(&completeSource, 2, 0); - zephir_array_fast_append(&completeSource, &source); - zephir_array_fast_append(&completeSource, &schema); - } else { - ZEPHIR_CPY_WRT(&completeSource, &source); - } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &selectedModel, SL("alias"), 0)) { - if (UNEXPECTED(zephir_array_isset(&sqlAliases, &alias))) { - ZEPHIR_INIT_NVAR(&_5$$17); - object_init_ex(&_5$$17, phalcon_mvc_model_exception_ce); - zephir_read_property(&_6$$17, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_7$$17); - ZEPHIR_CONCAT_SVSV(&_7$$17, "Alias '", &alias, "' is used more than once, when preparing: ", &_6$$17); - ZEPHIR_CALL_METHOD(NULL, &_5$$17, "__construct", &_8, 29, &_7$$17); - zephir_check_call_status(); - zephir_throw_exception_debug(&_5$$17, "phalcon/Mvc/Model/Query.zep", 3781); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &alias, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &modelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(&completeSource) == IS_ARRAY) { - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3793); - } else { - ZEPHIR_INIT_NVAR(&_9$$19); - zephir_create_array(&_9$$19, 3, 0); - zephir_array_fast_append(&_9$$19, &source); - zephir_array_fast_append(&_9$$19, &__$null); - zephir_array_fast_append(&_9$$19, &alias); - ZEPHIR_CPY_WRT(&completeSource, &_9$$19); - } - zephir_array_update_zval(&models, &modelName, &alias, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_CPY_WRT(&alias, &source); - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &modelName, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &modelName, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&with); - if (zephir_array_isset_string_fetch(&with, &selectedModel, SL("with"), 0)) { - if (!(zephir_array_isset_long(&with, 0))) { - ZEPHIR_INIT_NVAR(&withs); - zephir_create_array(&withs, 1, 0); - zephir_array_fast_append(&withs, &with); - } else { - ZEPHIR_CPY_WRT(&withs, &with); - } - zephir_is_iterable(&withs, 0, "phalcon/Mvc/Model/Query.zep", 3869); - if (Z_TYPE_P(&withs) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&withs), _10$$21) - { - ZEPHIR_INIT_NVAR(&withItem); - ZVAL_COPY(&withItem, _10$$21); - ZEPHIR_INIT_NVAR(&_12$$24); - ZVAL_LONG(&_12$$24, number); - ZEPHIR_INIT_NVAR(&_13$$24); - ZEPHIR_CONCAT_SV(&_13$$24, "AA", &_12$$24); - ZEPHIR_CPY_WRT(&joinAlias, &_13$$24); - ZEPHIR_OBS_NVAR(&relationModel); - zephir_array_fetch_string(&relationModel, &withItem, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3819); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_14, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_15$$25); - ZVAL_STRING(&_15$$25, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_15$$25); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationsbetween", &_16, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&relation) != IS_OBJECT)) { - ZEPHIR_INIT_NVAR(&_17$$27); - object_init_ex(&_17$$27, phalcon_mvc_model_exception_ce); - zephir_read_property(&_18$$27, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_19$$27); - ZEPHIR_CONCAT_SVSVSV(&_19$$27, "Can't find a relationship between '", &modelName, "' and '", &relationModel, "' when preparing: ", &_18$$27); - ZEPHIR_CALL_METHOD(NULL, &_17$$27, "__construct", &_8, 29, &_19$$27); - zephir_check_call_status(); - zephir_throw_exception_debug(&_17$$27, "phalcon/Mvc/Model/Query.zep", 3839); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_20$$26); - ZVAL_STRING(&_20$$26, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_20$$26); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } - ZEPHIR_INIT_NVAR(&_21$$24); - zephir_create_array(&_21$$24, 5, 0); - add_assoc_long_ex(&_21$$24, SL("type"), 353); - zephir_array_update_string(&_21$$24, SL("column"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_21$$24, SL("eager"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_21$$24, SL("eagerType"), &eagerType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_21$$24, SL("balias"), &bestAlias, PH_COPY | PH_SEPARATE); - zephir_array_append(&selectColumns, &_21$$24, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3853); - ZEPHIR_INIT_NVAR(&_22$$24); - zephir_create_array(&_22$$24, 3, 0); - add_assoc_long_ex(&_22$$24, SL("type"), 360); - ZEPHIR_INIT_NVAR(&_23$$24); - zephir_create_array(&_23$$24, 2, 0); - add_assoc_long_ex(&_23$$24, SL("type"), 355); - zephir_array_update_string(&_23$$24, SL("name"), &relationModel, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_22$$24, SL("qualified"), &_23$$24, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_23$$24); - zephir_create_array(&_23$$24, 2, 0); - add_assoc_long_ex(&_23$$24, SL("type"), 355); - zephir_array_update_string(&_23$$24, SL("name"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_22$$24, SL("alias"), &_23$$24, PH_COPY | PH_SEPARATE); - zephir_array_append(&automaticJoins, &_22$$24, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3865); - number++; - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &withs, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_11$$21, &withs, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_11$$21)) { - break; - } - ZEPHIR_CALL_METHOD(&withItem, &withs, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_24$$28); - ZVAL_LONG(&_24$$28, number); - ZEPHIR_INIT_NVAR(&_25$$28); - ZEPHIR_CONCAT_SV(&_25$$28, "AA", &_24$$28); - ZEPHIR_CPY_WRT(&joinAlias, &_25$$28); - ZEPHIR_OBS_NVAR(&relationModel); - zephir_array_fetch_string(&relationModel, &withItem, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3819); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_26, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_27$$29); - ZVAL_STRING(&_27$$29, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_27$$29); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationsbetween", &_28, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&relation) != IS_OBJECT)) { - ZEPHIR_INIT_NVAR(&_29$$31); - object_init_ex(&_29$$31, phalcon_mvc_model_exception_ce); - zephir_read_property(&_30$$31, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_31$$31); - ZEPHIR_CONCAT_SVSVSV(&_31$$31, "Can't find a relationship between '", &modelName, "' and '", &relationModel, "' when preparing: ", &_30$$31); - ZEPHIR_CALL_METHOD(NULL, &_29$$31, "__construct", &_8, 29, &_31$$31); - zephir_check_call_status(); - zephir_throw_exception_debug(&_29$$31, "phalcon/Mvc/Model/Query.zep", 3839); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_32$$30); - ZVAL_STRING(&_32$$30, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_32$$30); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } - ZEPHIR_INIT_NVAR(&_33$$28); - zephir_create_array(&_33$$28, 5, 0); - add_assoc_long_ex(&_33$$28, SL("type"), 353); - zephir_array_update_string(&_33$$28, SL("column"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_33$$28, SL("eager"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_33$$28, SL("eagerType"), &eagerType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_33$$28, SL("balias"), &bestAlias, PH_COPY | PH_SEPARATE); - zephir_array_append(&selectColumns, &_33$$28, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3853); - ZEPHIR_INIT_NVAR(&_34$$28); - zephir_create_array(&_34$$28, 3, 0); - add_assoc_long_ex(&_34$$28, SL("type"), 360); - ZEPHIR_INIT_NVAR(&_35$$28); - zephir_create_array(&_35$$28, 2, 0); - add_assoc_long_ex(&_35$$28, SL("type"), 355); - zephir_array_update_string(&_35$$28, SL("name"), &relationModel, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_34$$28, SL("qualified"), &_35$$28, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_35$$28); - zephir_create_array(&_35$$28, 2, 0); - add_assoc_long_ex(&_35$$28, SL("type"), 355); - zephir_array_update_string(&_35$$28, SL("name"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_34$$28, SL("alias"), &_35$$28, PH_COPY | PH_SEPARATE); - zephir_array_append(&automaticJoins, &_34$$28, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3865); - number++; - ZEPHIR_CALL_METHOD(NULL, &withs, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&withItem); - } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3871); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3872); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &selectedModels, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_3, &selectedModels, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_3)) { - break; - } - ZEPHIR_CALL_METHOD(&selectedModel, &selectedModels, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &selectedModel, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3755); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3756); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_36, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&_37$$33); - zephir_create_array(&_37$$33, 2, 0); - zephir_array_fast_append(&_37$$33, &source); - zephir_array_fast_append(&_37$$33, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_37$$33); - } else { - ZEPHIR_CPY_WRT(&completeSource, &source); - } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &selectedModel, SL("alias"), 0)) { - if (UNEXPECTED(zephir_array_isset(&sqlAliases, &alias))) { - ZEPHIR_INIT_NVAR(&_38$$36); - object_init_ex(&_38$$36, phalcon_mvc_model_exception_ce); - zephir_read_property(&_39$$36, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_40$$36); - ZEPHIR_CONCAT_SVSV(&_40$$36, "Alias '", &alias, "' is used more than once, when preparing: ", &_39$$36); - ZEPHIR_CALL_METHOD(NULL, &_38$$36, "__construct", &_8, 29, &_40$$36); - zephir_check_call_status(); - zephir_throw_exception_debug(&_38$$36, "phalcon/Mvc/Model/Query.zep", 3781); - ZEPHIR_MM_RESTORE(); - return; - } - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &alias, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &modelName, &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - if (Z_TYPE_P(&completeSource) == IS_ARRAY) { - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3793); - } else { - ZEPHIR_INIT_NVAR(&_41$$38); - zephir_create_array(&_41$$38, 3, 0); - zephir_array_fast_append(&_41$$38, &source); - zephir_array_fast_append(&_41$$38, &__$null); - zephir_array_fast_append(&_41$$38, &alias); - ZEPHIR_CPY_WRT(&completeSource, &_41$$38); - } - zephir_array_update_zval(&models, &modelName, &alias, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_CPY_WRT(&alias, &source); - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModels, &modelName, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlModelsAliases, &modelName, &modelName, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_NVAR(&with); - if (zephir_array_isset_string_fetch(&with, &selectedModel, SL("with"), 0)) { - if (!(zephir_array_isset_long(&with, 0))) { - ZEPHIR_INIT_NVAR(&_42$$41); - zephir_create_array(&_42$$41, 1, 0); - zephir_array_fast_append(&_42$$41, &with); - ZEPHIR_CPY_WRT(&withs, &_42$$41); - } else { - ZEPHIR_CPY_WRT(&withs, &with); - } - zephir_is_iterable(&withs, 0, "phalcon/Mvc/Model/Query.zep", 3869); - if (Z_TYPE_P(&withs) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&withs), _43$$40) - { - ZEPHIR_INIT_NVAR(&withItem); - ZVAL_COPY(&withItem, _43$$40); - ZEPHIR_INIT_NVAR(&_45$$43); - ZVAL_LONG(&_45$$43, number); - ZEPHIR_INIT_NVAR(&_46$$43); - ZEPHIR_CONCAT_SV(&_46$$43, "AA", &_45$$43); - ZEPHIR_CPY_WRT(&joinAlias, &_46$$43); - ZEPHIR_OBS_NVAR(&relationModel); - zephir_array_fetch_string(&relationModel, &withItem, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3819); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_47, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_48$$44); - ZVAL_STRING(&_48$$44, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_48$$44); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationsbetween", &_49, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&relation) != IS_OBJECT)) { - ZEPHIR_INIT_NVAR(&_50$$46); - object_init_ex(&_50$$46, phalcon_mvc_model_exception_ce); - zephir_read_property(&_51$$46, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_52$$46); - ZEPHIR_CONCAT_SVSVSV(&_52$$46, "Can't find a relationship between '", &modelName, "' and '", &relationModel, "' when preparing: ", &_51$$46); - ZEPHIR_CALL_METHOD(NULL, &_50$$46, "__construct", &_8, 29, &_52$$46); - zephir_check_call_status(); - zephir_throw_exception_debug(&_50$$46, "phalcon/Mvc/Model/Query.zep", 3839); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_53$$45); - ZVAL_STRING(&_53$$45, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_53$$45); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } - ZEPHIR_INIT_NVAR(&_54$$43); - zephir_create_array(&_54$$43, 5, 0); - add_assoc_long_ex(&_54$$43, SL("type"), 353); - zephir_array_update_string(&_54$$43, SL("column"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_54$$43, SL("eager"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_54$$43, SL("eagerType"), &eagerType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_54$$43, SL("balias"), &bestAlias, PH_COPY | PH_SEPARATE); - zephir_array_append(&selectColumns, &_54$$43, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3853); - ZEPHIR_INIT_NVAR(&_55$$43); - zephir_create_array(&_55$$43, 3, 0); - add_assoc_long_ex(&_55$$43, SL("type"), 360); - ZEPHIR_INIT_NVAR(&_56$$43); - zephir_create_array(&_56$$43, 2, 0); - add_assoc_long_ex(&_56$$43, SL("type"), 355); - zephir_array_update_string(&_56$$43, SL("name"), &relationModel, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_55$$43, SL("qualified"), &_56$$43, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_56$$43); - zephir_create_array(&_56$$43, 2, 0); - add_assoc_long_ex(&_56$$43, SL("type"), 355); - zephir_array_update_string(&_56$$43, SL("name"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_55$$43, SL("alias"), &_56$$43, PH_COPY | PH_SEPARATE); - zephir_array_append(&automaticJoins, &_55$$43, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3865); - number++; - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &withs, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_44$$40, &withs, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_44$$40)) { - break; - } - ZEPHIR_CALL_METHOD(&withItem, &withs, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&_57$$47); - ZVAL_LONG(&_57$$47, number); - ZEPHIR_INIT_NVAR(&_58$$47); - ZEPHIR_CONCAT_SV(&_58$$47, "AA", &_57$$47); - ZEPHIR_CPY_WRT(&joinAlias, &_58$$47); - ZEPHIR_OBS_NVAR(&relationModel); - zephir_array_fetch_string(&relationModel, &withItem, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 3819); - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationbyalias", &_59, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (Z_TYPE_P(&relation) == IS_OBJECT) { - ZEPHIR_INIT_NVAR(&_60$$48); - ZVAL_STRING(&_60$$48, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_60$$48); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } else { - ZEPHIR_CALL_METHOD(&relation, &manager, "getrelationsbetween", &_61, 0, &modelName, &relationModel); - zephir_check_call_status(); - if (UNEXPECTED(Z_TYPE_P(&relation) != IS_OBJECT)) { - ZEPHIR_INIT_NVAR(&_62$$50); - object_init_ex(&_62$$50, phalcon_mvc_model_exception_ce); - zephir_read_property(&_63$$50, this_ptr, ZEND_STRL("phql"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_INIT_NVAR(&_64$$50); - ZEPHIR_CONCAT_SVSVSV(&_64$$50, "Can't find a relationship between '", &modelName, "' and '", &relationModel, "' when preparing: ", &_63$$50); - ZEPHIR_CALL_METHOD(NULL, &_62$$50, "__construct", &_8, 29, &_64$$50); - zephir_check_call_status(); - zephir_throw_exception_debug(&_62$$50, "phalcon/Mvc/Model/Query.zep", 3839); - ZEPHIR_MM_RESTORE(); - return; - } - ZEPHIR_INIT_NVAR(&_65$$49); - ZVAL_STRING(&_65$$49, "alias"); - ZEPHIR_CALL_METHOD(&bestAlias, &relation, "getoption", NULL, 0, &_65$$49); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&relationModel, &relation, "getreferencedmodel", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&eagerType, &relation, "gettype", NULL, 0); - zephir_check_call_status(); - } - ZEPHIR_INIT_NVAR(&_66$$47); - zephir_create_array(&_66$$47, 5, 0); - add_assoc_long_ex(&_66$$47, SL("type"), 353); - zephir_array_update_string(&_66$$47, SL("column"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_66$$47, SL("eager"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_66$$47, SL("eagerType"), &eagerType, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_66$$47, SL("balias"), &bestAlias, PH_COPY | PH_SEPARATE); - zephir_array_append(&selectColumns, &_66$$47, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3853); - ZEPHIR_INIT_NVAR(&_67$$47); - zephir_create_array(&_67$$47, 3, 0); - add_assoc_long_ex(&_67$$47, SL("type"), 360); - ZEPHIR_INIT_NVAR(&_68$$47); - zephir_create_array(&_68$$47, 2, 0); - add_assoc_long_ex(&_68$$47, SL("type"), 355); - zephir_array_update_string(&_68$$47, SL("name"), &relationModel, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_67$$47, SL("qualified"), &_68$$47, PH_COPY | PH_SEPARATE); - ZEPHIR_INIT_NVAR(&_68$$47); - zephir_create_array(&_68$$47, 2, 0); - add_assoc_long_ex(&_68$$47, SL("type"), 355); - zephir_array_update_string(&_68$$47, SL("name"), &joinAlias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&_67$$47, SL("alias"), &_68$$47, PH_COPY | PH_SEPARATE); - zephir_array_append(&automaticJoins, &_67$$47, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3865); - number++; - ZEPHIR_CALL_METHOD(NULL, &withs, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&withItem); - } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3871); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3872); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &selectedModels, "next", NULL, 0); - zephir_check_call_status(); - } + if (UNEXPECTED(Z_TYPE_P(schemaName_param) != IS_STRING && Z_TYPE_P(schemaName_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schemaName' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_INIT_NVAR(&selectedModel); - if (!(merge)) { - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &models); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &modelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &sqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModels"), &sqlAliasesModels); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlModelsAliases"), &sqlModelsAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &sqlAliasesModelsInstances); + if (EXPECTED(Z_TYPE_P(schemaName_param) == IS_STRING)) { + zephir_get_strval(&schemaName, schemaName_param); } else { - ZEPHIR_OBS_VAR(&tempModels); - zephir_read_property(&tempModels, this_ptr, ZEND_STRL("models"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&tempModelsInstances); - zephir_read_property(&tempModelsInstances, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&tempSqlAliases); - zephir_read_property(&tempSqlAliases, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&tempSqlAliasesModels); - zephir_read_property(&tempSqlAliasesModels, this_ptr, ZEND_STRL("sqlAliasesModels"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&tempSqlModelsAliases); - zephir_read_property(&tempSqlModelsAliases, this_ptr, ZEND_STRL("sqlModelsAliases"), PH_NOISY_CC); - ZEPHIR_OBS_VAR(&tempSqlAliasesModelsInstances); - zephir_read_property(&tempSqlAliasesModelsInstances, this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), PH_NOISY_CC); - ZEPHIR_INIT_VAR(&_69$$52); - zephir_read_property(&_70$$52, this_ptr, ZEND_STRL("models"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_69$$52, &_70$$52, &models); - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &_69$$52); - ZEPHIR_INIT_VAR(&_71$$52); - zephir_read_property(&_72$$52, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_71$$52, &_72$$52, &modelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &_71$$52); - ZEPHIR_INIT_VAR(&_73$$52); - zephir_read_property(&_74$$52, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_73$$52, &_74$$52, &sqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &_73$$52); - ZEPHIR_INIT_VAR(&_75$$52); - zephir_read_property(&_76$$52, this_ptr, ZEND_STRL("sqlAliasesModels"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_75$$52, &_76$$52, &sqlAliasesModels); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModels"), &_75$$52); - ZEPHIR_INIT_VAR(&_77$$52); - zephir_read_property(&_78$$52, this_ptr, ZEND_STRL("sqlModelsAliases"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_77$$52, &_78$$52, &sqlModelsAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlModelsAliases"), &_77$$52); - ZEPHIR_INIT_VAR(&_79$$52); - zephir_read_property(&_80$$52, this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), PH_NOISY_CC | PH_READONLY); - zephir_fast_array_merge(&_79$$52, &_80$$52, &sqlAliasesModelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &_79$$52); + ZEPHIR_INIT_VAR(&schemaName); } - ZEPHIR_OBS_VAR(&joins); - zephir_array_isset_string_fetch(&joins, &select, SL("joins"), 0); - if (zephir_fast_count_int(&joins)) { - if (zephir_fast_count_int(&automaticJoins)) { - if (zephir_array_isset_long(&joins, 0)) { - ZEPHIR_INIT_VAR(&_81$$55); - zephir_fast_array_merge(&_81$$55, &joins, &automaticJoins); - zephir_array_update_string(&select, SL("joins"), &_81$$55, PH_COPY | PH_SEPARATE); - } else { - zephir_array_append(&automaticJoins, &joins, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3908); - zephir_array_update_string(&select, SL("joins"), &automaticJoins, PH_COPY | PH_SEPARATE); - } - } - ZEPHIR_CALL_METHOD(&sqlJoins, this_ptr, "getjoins", NULL, 471, &select); - zephir_check_call_status(); - } else { - if (zephir_fast_count_int(&automaticJoins)) { - zephir_array_update_string(&select, SL("joins"), &automaticJoins, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(&sqlJoins, this_ptr, "getjoins", NULL, 471, &select); - zephir_check_call_status(); - } else { - ZEPHIR_INIT_NVAR(&sqlJoins); - array_init(&sqlJoins); - } + if (!currentColumn) { + currentColumn = ¤tColumn_sub; + currentColumn = &__$null; } - position = 0; - ZEPHIR_INIT_VAR(&sqlColumnAliases); - array_init(&sqlColumnAliases); - zephir_is_iterable(&selectColumns, 0, "phalcon/Mvc/Model/Query.zep", 3959); - if (Z_TYPE_P(&selectColumns) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&selectColumns), _82) - { - ZEPHIR_INIT_NVAR(&column); - ZVAL_COPY(&column, _82); - ZEPHIR_CALL_METHOD(&_84$$60, this_ptr, "getselectcolumn", &_85, 472, &column); - zephir_check_call_status(); - zephir_is_iterable(&_84$$60, 0, "phalcon/Mvc/Model/Query.zep", 3957); - if (Z_TYPE_P(&_84$$60) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_84$$60), _86$$60) + + + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&sql, &_0, "modifycolumn", NULL, 0, &tableName, &schemaName, column, currentColumn); + zephir_check_call_status(); + ZEPHIR_INIT_VAR(&queries); + zephir_fast_explode_str(&queries, SL(";"), &sql, LONG_MAX); + if (zephir_fast_count_int(&queries) > 1) { + + /* try_start_1: */ + + ZEPHIR_CALL_METHOD(NULL, this_ptr, "begin", NULL, 0); + zephir_check_call_status_or_jump(try_end_1); + zephir_is_iterable(&queries, 0, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 653); + if (Z_TYPE_P(&queries) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&queries), _1$$4) { - ZEPHIR_INIT_NVAR(&sqlColumn); - ZVAL_COPY(&sqlColumn, _86$$60); - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &column, SL("alias"), 0)) { - zephir_array_update_string(&sqlColumn, SL("balias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("sqlAlias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumnAliases, &alias, &__$true, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &sqlColumn, SL("balias"), 0)) { - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_fetch_string(&_88$$65, &sqlColumn, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3947); - if (ZEPHIR_IS_STRING(&_88$$65, "scalar")) { - ZEPHIR_INIT_NVAR(&_89$$66); - ZVAL_LONG(&_89$$66, position); - ZEPHIR_INIT_NVAR(&_90$$66); - ZEPHIR_CONCAT_SV(&_90$$66, "_", &_89$$66); - zephir_array_update_zval(&sqlColumns, &_90$$66, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3950); - } - } + ZEPHIR_INIT_NVAR(&query); + ZVAL_COPY(&query, _1$$4); + if (ZEPHIR_IS_EMPTY(&query)) { + continue; } - position++; + ZEPHIR_INIT_NVAR(&_3$$5); + ZEPHIR_CONCAT_VS(&_3$$5, &query, ";"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "query", &_4, 0, &_3$$5); + zephir_check_call_status_or_jump(try_end_1); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &_84$$60, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &queries, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_87$$60, &_84$$60, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_2$$4, &queries, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_87$$60)) { + if (!zend_is_true(&_2$$4)) { break; } - ZEPHIR_CALL_METHOD(&sqlColumn, &_84$$60, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&query, &queries, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &column, SL("alias"), 0)) { - zephir_array_update_string(&sqlColumn, SL("balias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("sqlAlias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumnAliases, &alias, &__$true, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &sqlColumn, SL("balias"), 0)) { - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_fetch_string(&_91$$72, &sqlColumn, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3947); - if (ZEPHIR_IS_STRING(&_91$$72, "scalar")) { - ZEPHIR_INIT_NVAR(&_92$$73); - ZVAL_LONG(&_92$$73, position); - ZEPHIR_INIT_NVAR(&_93$$73); - ZEPHIR_CONCAT_SV(&_93$$73, "_", &_92$$73); - zephir_array_update_zval(&sqlColumns, &_93$$73, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3950); - } - } + if (ZEPHIR_IS_EMPTY(&query)) { + continue; } - position++; - ZEPHIR_CALL_METHOD(NULL, &_84$$60, "next", NULL, 0); + ZEPHIR_INIT_NVAR(&_5$$7); + ZEPHIR_CONCAT_VS(&_5$$7, &query, ";"); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "query", &_4, 0, &_5$$7); + zephir_check_call_status_or_jump(try_end_1); + ZEPHIR_CALL_METHOD(NULL, &queries, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&sqlColumn); - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &selectColumns, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_83, &selectColumns, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_83)) { - break; - } - ZEPHIR_CALL_METHOD(&column, &selectColumns, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&_94$$75, this_ptr, "getselectcolumn", &_85, 472, &column); + ZEPHIR_INIT_NVAR(&query); + ZEPHIR_RETURN_CALL_METHOD(this_ptr, "commit", NULL, 0); + zephir_check_call_status_or_jump(try_end_1); + RETURN_MM(); + + try_end_1: + + if (EG(exception)) { + ZEPHIR_INIT_VAR(&_6$$3); + ZVAL_OBJ(&_6$$3, EG(exception)); + Z_ADDREF_P(&_6$$3); + if (zephir_is_instance_of(&_6$$3, SL("Throwable"))) { + zend_clear_exception(); + ZEPHIR_CPY_WRT(&exception, &_6$$3); + ZEPHIR_CALL_METHOD(NULL, this_ptr, "rollback", NULL, 0); zephir_check_call_status(); - zephir_is_iterable(&_94$$75, 0, "phalcon/Mvc/Model/Query.zep", 3957); - if (Z_TYPE_P(&_94$$75) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_94$$75), _95$$75) - { - ZEPHIR_INIT_NVAR(&sqlColumn); - ZVAL_COPY(&sqlColumn, _95$$75); - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &column, SL("alias"), 0)) { - zephir_array_update_string(&sqlColumn, SL("balias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("sqlAlias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumnAliases, &alias, &__$true, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &sqlColumn, SL("balias"), 0)) { - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_fetch_string(&_97$$80, &sqlColumn, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3947); - if (ZEPHIR_IS_STRING(&_97$$80, "scalar")) { - ZEPHIR_INIT_NVAR(&_98$$81); - ZVAL_LONG(&_98$$81, position); - ZEPHIR_INIT_NVAR(&_99$$81); - ZEPHIR_CONCAT_SV(&_99$$81, "_", &_98$$81); - zephir_array_update_zval(&sqlColumns, &_99$$81, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3950); - } - } - } - position++; - } ZEND_HASH_FOREACH_END(); - } else { - ZEPHIR_CALL_METHOD(NULL, &_94$$75, "rewind", NULL, 0); - zephir_check_call_status(); - while (1) { - ZEPHIR_CALL_METHOD(&_96$$75, &_94$$75, "valid", NULL, 0); - zephir_check_call_status(); - if (!zend_is_true(&_96$$75)) { - break; - } - ZEPHIR_CALL_METHOD(&sqlColumn, &_94$$75, "current", NULL, 0); - zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &column, SL("alias"), 0)) { - zephir_array_update_string(&sqlColumn, SL("balias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlColumn, SL("sqlAlias"), &alias, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlColumnAliases, &alias, &__$true, PH_COPY | PH_SEPARATE); - } else { - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &sqlColumn, SL("balias"), 0)) { - zephir_array_update_zval(&sqlColumns, &alias, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_fetch_string(&_100$$87, &sqlColumn, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 3947); - if (ZEPHIR_IS_STRING(&_100$$87, "scalar")) { - ZEPHIR_INIT_NVAR(&_101$$88); - ZVAL_LONG(&_101$$88, position); - ZEPHIR_INIT_NVAR(&_102$$88); - ZEPHIR_CONCAT_SV(&_102$$88, "_", &_101$$88); - zephir_array_update_zval(&sqlColumns, &_102$$88, &sqlColumn, PH_COPY | PH_SEPARATE); - } else { - zephir_array_append(&sqlColumns, &sqlColumn, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 3950); - } - } - } - position++; - ZEPHIR_CALL_METHOD(NULL, &_94$$75, "next", NULL, 0); - zephir_check_call_status(); - } - } - ZEPHIR_INIT_NVAR(&sqlColumn); - ZEPHIR_CALL_METHOD(NULL, &selectColumns, "next", NULL, 0); + zephir_throw_exception_debug(&exception, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 657); + ZEPHIR_MM_RESTORE(); + return; + } + } + } else { + ZEPHIR_INIT_VAR(&_7$$10); + if (!(ZEPHIR_IS_EMPTY(&sql))) { + zephir_array_fetch_long(&_8$$10, &queries, 0, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Postgresql.zep", 660); + ZEPHIR_INIT_VAR(&_9$$10); + ZEPHIR_CONCAT_VS(&_9$$10, &_8$$10, ";"); + ZEPHIR_CALL_METHOD(&_7$$10, this_ptr, "execute", NULL, 0, &_9$$10); zephir_check_call_status(); + } else { + ZVAL_BOOL(&_7$$10, 1); } + RETURN_CCTOR(&_7$$10); } - ZEPHIR_INIT_NVAR(&column); - ZEPHIR_OBS_VAR(&_103); - zephir_read_property(&_103, this_ptr, ZEND_STRL("nestingLevel"), PH_NOISY_CC); - zephir_update_property_array(this_ptr, SL("sqlColumnAliases"), &_103, &sqlColumnAliases); - ZEPHIR_INIT_VAR(&sqlSelect); - zephir_create_array(&sqlSelect, 3, 0); - zephir_array_update_string(&sqlSelect, SL("models"), &sqlModels, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlSelect, SL("tables"), &sqlTables, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlSelect, SL("columns"), &sqlColumns, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_VAR(&distinct); - if (zephir_array_isset_string_fetch(&distinct, &select, SL("distinct"), 0)) { - zephir_array_update_string(&sqlSelect, SL("distinct"), &distinct, PH_COPY | PH_SEPARATE); - } - if (zephir_fast_count_int(&sqlJoins)) { - zephir_array_update_string(&sqlSelect, SL("joins"), &sqlJoins, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&where); - if (zephir_array_isset_string_fetch(&where, ast, SL("where"), 0)) { - ZEPHIR_CALL_METHOD(&_104$$92, this_ptr, "getexpression", NULL, 456, &where); - zephir_check_call_status(); - zephir_array_update_string(&sqlSelect, SL("where"), &_104$$92, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&groupBy); - if (zephir_array_isset_string_fetch(&groupBy, ast, SL("groupBy"), 0)) { - ZEPHIR_CALL_METHOD(&_105$$93, this_ptr, "getgroupclause", NULL, 473, &groupBy); - zephir_check_call_status(); - zephir_array_update_string(&sqlSelect, SL("group"), &_105$$93, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&having); - if (zephir_array_isset_string_fetch(&having, ast, SL("having"), 0)) { - ZEPHIR_CALL_METHOD(&_106$$94, this_ptr, "getexpression", NULL, 456, &having); - zephir_check_call_status(); - zephir_array_update_string(&sqlSelect, SL("having"), &_106$$94, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&order); - if (zephir_array_isset_string_fetch(&order, ast, SL("orderBy"), 0)) { - ZEPHIR_CALL_METHOD(&_107$$95, this_ptr, "getorderclause", NULL, 474, &order); - zephir_check_call_status(); - zephir_array_update_string(&sqlSelect, SL("order"), &_107$$95, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&limit); - if (zephir_array_isset_string_fetch(&limit, ast, SL("limit"), 0)) { - ZEPHIR_CALL_METHOD(&_108$$96, this_ptr, "getlimitclause", NULL, 470, &limit); + RETURN_MM_BOOL(1); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, supportSequences) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(1); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, useExplicitIdValue) +{ + zval *this_ptr = getThis(); + + + + RETURN_BOOL(1); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Postgresql, getDsnDefaults) +{ + zval *this_ptr = getThis(); + + + + array_init(return_value); + return; +} + + + + +#ifdef HAVE_CONFIG_H +#endif + + + + + +ZEPHIR_INIT_CLASS(Phalcon_Db_Adapter_Pdo_Sqlite) +{ + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Db\\Adapter\\Pdo, Sqlite, phalcon, db_adapter_pdo_sqlite, phalcon_db_adapter_pdo_abstractpdo_ce, phalcon_db_adapter_pdo_sqlite_method_entry, 0); + + zend_declare_property_string(phalcon_db_adapter_pdo_sqlite_ce, SL("dialectType"), "sqlite", ZEND_ACC_PROTECTED); + zend_declare_property_string(phalcon_db_adapter_pdo_sqlite_ce, SL("type"), "sqlite", ZEND_ACC_PROTECTED); + return SUCCESS; +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, __construct) +{ + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_1 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *descriptor_param = NULL, _0$$3; + zval descriptor; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&descriptor); + ZVAL_UNDEF(&_0$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_ARRAY(descriptor) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 0, &descriptor_param); + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); + + + if (zephir_array_isset_string(&descriptor, SL("charset"))) { + ZEPHIR_INIT_VAR(&_0$$3); + ZVAL_STRING(&_0$$3, "SQLite does not allow the charset to be changed in the DSN."); + ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", NULL, 7, &_0$$3); zephir_check_call_status(); - zephir_array_update_string(&sqlSelect, SL("limit"), &_108$$96, PH_COPY | PH_SEPARATE); - } - if (zephir_array_isset_string(ast, SL("forUpdate"))) { - zephir_array_update_string(&sqlSelect, SL("forUpdate"), &__$true, PH_COPY | PH_SEPARATE); - } - if (merge) { - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &tempModels); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &tempModelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &tempSqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModels"), &tempSqlAliasesModels); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlModelsAliases"), &tempSqlModelsAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &tempSqlAliasesModelsInstances); } - RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("nestingLevel"))); - RETURN_CCTOR(&sqlSelect); + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_sqlite_ce, getThis(), "__construct", &_1, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); } -static PHP_METHOD(Phalcon_Mvc_Model_Query, _prepareUpdate) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, connect) { - zval _15$$20, _22$$21; - zend_bool notQuoting = 0; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval __$null, ast, update, tables, values, modelsInstances, models, sqlTables, sqlAliases, sqlAliasesModelsInstances, updateTables, completeSource, sqlModels, manager, table, qualifiedName, modelName, model, source, schema, alias, sqlFields, sqlValues, updateValues, updateValue, exprColumn, sqlUpdate, where, limit, _0, *_1, _2, *_9, _10, _4$$9, _5$$10, _7$$14, _8$$15, _11$$20, _12$$20, _13$$20, _16$$20, _17$$20, _18$$20, _19$$21, _20$$21, _21$$21, _23$$21, _24$$21, _25$$21, _26$$22, _27$$22, _28$$23; - zephir_fcall_cache_entry *_3 = NULL, *_6 = NULL, *_14 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_1 = NULL; + zval *descriptor_param = NULL, dbname, _0$$3; + zval descriptor; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&descriptor); + ZVAL_UNDEF(&dbname); + ZVAL_UNDEF(&_0$$3); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(0, 1) + Z_PARAM_OPTIONAL + Z_PARAM_ARRAY(descriptor) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 0, 1, &descriptor_param); + if (!descriptor_param) { + ZEPHIR_INIT_VAR(&descriptor); + array_init(&descriptor); + } else { + ZEPHIR_OBS_COPY_OR_DUP(&descriptor, descriptor_param); + } + + + if (ZEPHIR_IS_EMPTY(&descriptor)) { + zephir_read_property(&_0$$3, this_ptr, ZEND_STRL("descriptor"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CPY_WRT(&descriptor, &_0$$3); + } + ZEPHIR_OBS_VAR(&dbname); + if (zephir_array_isset_string_fetch(&dbname, &descriptor, SL("dbname"), 0)) { + zephir_array_update_string(&descriptor, SL("dsn"), &dbname, PH_COPY | PH_SEPARATE); + zephir_array_unset_string(&descriptor, SL("dbname"), PH_SEPARATE); + } else if (UNEXPECTED(!(zephir_array_isset_string(&descriptor, SL("dsn"))))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "The database must be specified with either 'dbname' or 'dsn'.", "phalcon/Db/Adapter/Pdo/Sqlite.zep", 82); + return; + } + ZEPHIR_CALL_PARENT(NULL, phalcon_db_adapter_pdo_sqlite_ce, getThis(), "connect", &_1, 0, &descriptor); + zephir_check_call_status(); + ZEPHIR_MM_RESTORE(); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, describeColumns) +{ + zend_bool _5$$3, _31$$3, _43$$28, _69$$28; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_35 = NULL, *_40 = NULL, *_41 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, __$true, __$false, columns, columnType, fields, field, definition, oldColumn, sizePattern, matches, matchOne, matchTwo, columnName, _0, _1, _2, *_3, _4, _28$$3, _29$$3, _30$$3, _32$$3, _33$$3, _34$$3, _6$$4, _7$$4, _8$$5, _9$$5, _10$$5, _11$$7, _12$$7, _13$$8, _14$$9, _15$$10, _16$$11, _17$$11, _18$$12, _19$$12, _20$$13, _21$$14, _22$$15, _23$$16, _24$$17, _25$$18, _26$$20, _27$$21, _36$$27, _37$$27, _38$$27, _39$$27, _42$$28, _66$$28, _67$$28, _68$$28, _70$$28, _71$$28, _72$$28, _44$$29, _45$$29, _46$$30, _47$$30, _48$$30, _49$$32, _50$$32, _51$$33, _52$$34, _53$$35, _54$$36, _55$$36, _56$$37, _57$$37, _58$$38, _59$$39, _60$$40, _61$$41, _62$$42, _63$$43, _64$$45, _65$$46, _73$$52, _74$$52, _75$$52, _76$$52; + zval table, schema; zval *this_ptr = getThis(); - ZVAL_NULL(&__$null); - ZVAL_UNDEF(&ast); - ZVAL_UNDEF(&update); - ZVAL_UNDEF(&tables); - ZVAL_UNDEF(&values); - ZVAL_UNDEF(&modelsInstances); - ZVAL_UNDEF(&models); - ZVAL_UNDEF(&sqlTables); - ZVAL_UNDEF(&sqlAliases); - ZVAL_UNDEF(&sqlAliasesModelsInstances); - ZVAL_UNDEF(&updateTables); - ZVAL_UNDEF(&completeSource); - ZVAL_UNDEF(&sqlModels); - ZVAL_UNDEF(&manager); ZVAL_UNDEF(&table); - ZVAL_UNDEF(&qualifiedName); - ZVAL_UNDEF(&modelName); - ZVAL_UNDEF(&model); - ZVAL_UNDEF(&source); ZVAL_UNDEF(&schema); - ZVAL_UNDEF(&alias); - ZVAL_UNDEF(&sqlFields); - ZVAL_UNDEF(&sqlValues); - ZVAL_UNDEF(&updateValues); - ZVAL_UNDEF(&updateValue); - ZVAL_UNDEF(&exprColumn); - ZVAL_UNDEF(&sqlUpdate); - ZVAL_UNDEF(&where); - ZVAL_UNDEF(&limit); + ZVAL_BOOL(&__$true, 1); + ZVAL_BOOL(&__$false, 0); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&columnType); + ZVAL_UNDEF(&fields); + ZVAL_UNDEF(&field); + ZVAL_UNDEF(&definition); + ZVAL_UNDEF(&oldColumn); + ZVAL_UNDEF(&sizePattern); + ZVAL_UNDEF(&matches); + ZVAL_UNDEF(&matchOne); + ZVAL_UNDEF(&matchTwo); + ZVAL_UNDEF(&columnName); ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_4$$9); - ZVAL_UNDEF(&_5$$10); - ZVAL_UNDEF(&_7$$14); - ZVAL_UNDEF(&_8$$15); - ZVAL_UNDEF(&_11$$20); - ZVAL_UNDEF(&_12$$20); - ZVAL_UNDEF(&_13$$20); - ZVAL_UNDEF(&_16$$20); - ZVAL_UNDEF(&_17$$20); - ZVAL_UNDEF(&_18$$20); - ZVAL_UNDEF(&_19$$21); - ZVAL_UNDEF(&_20$$21); - ZVAL_UNDEF(&_21$$21); - ZVAL_UNDEF(&_23$$21); - ZVAL_UNDEF(&_24$$21); - ZVAL_UNDEF(&_25$$21); - ZVAL_UNDEF(&_26$$22); - ZVAL_UNDEF(&_27$$22); - ZVAL_UNDEF(&_28$$23); - ZVAL_UNDEF(&_15$$20); - ZVAL_UNDEF(&_22$$21); + ZVAL_UNDEF(&_4); + ZVAL_UNDEF(&_28$$3); + ZVAL_UNDEF(&_29$$3); + ZVAL_UNDEF(&_30$$3); + ZVAL_UNDEF(&_32$$3); + ZVAL_UNDEF(&_33$$3); + ZVAL_UNDEF(&_34$$3); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$4); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_12$$7); + ZVAL_UNDEF(&_13$$8); + ZVAL_UNDEF(&_14$$9); + ZVAL_UNDEF(&_15$$10); + ZVAL_UNDEF(&_16$$11); + ZVAL_UNDEF(&_17$$11); + ZVAL_UNDEF(&_18$$12); + ZVAL_UNDEF(&_19$$12); + ZVAL_UNDEF(&_20$$13); + ZVAL_UNDEF(&_21$$14); + ZVAL_UNDEF(&_22$$15); + ZVAL_UNDEF(&_23$$16); + ZVAL_UNDEF(&_24$$17); + ZVAL_UNDEF(&_25$$18); + ZVAL_UNDEF(&_26$$20); + ZVAL_UNDEF(&_27$$21); + ZVAL_UNDEF(&_36$$27); + ZVAL_UNDEF(&_37$$27); + ZVAL_UNDEF(&_38$$27); + ZVAL_UNDEF(&_39$$27); + ZVAL_UNDEF(&_42$$28); + ZVAL_UNDEF(&_66$$28); + ZVAL_UNDEF(&_67$$28); + ZVAL_UNDEF(&_68$$28); + ZVAL_UNDEF(&_70$$28); + ZVAL_UNDEF(&_71$$28); + ZVAL_UNDEF(&_72$$28); + ZVAL_UNDEF(&_44$$29); + ZVAL_UNDEF(&_45$$29); + ZVAL_UNDEF(&_46$$30); + ZVAL_UNDEF(&_47$$30); + ZVAL_UNDEF(&_48$$30); + ZVAL_UNDEF(&_49$$32); + ZVAL_UNDEF(&_50$$32); + ZVAL_UNDEF(&_51$$33); + ZVAL_UNDEF(&_52$$34); + ZVAL_UNDEF(&_53$$35); + ZVAL_UNDEF(&_54$$36); + ZVAL_UNDEF(&_55$$36); + ZVAL_UNDEF(&_56$$37); + ZVAL_UNDEF(&_57$$37); + ZVAL_UNDEF(&_58$$38); + ZVAL_UNDEF(&_59$$39); + ZVAL_UNDEF(&_60$$40); + ZVAL_UNDEF(&_61$$41); + ZVAL_UNDEF(&_62$$42); + ZVAL_UNDEF(&_63$$43); + ZVAL_UNDEF(&_64$$45); + ZVAL_UNDEF(&_65$$46); + ZVAL_UNDEF(&_73$$52); + ZVAL_UNDEF(&_74$$52); + ZVAL_UNDEF(&_75$$52); + ZVAL_UNDEF(&_76$$52); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif ZEPHIR_MM_GROW(); - - zephir_read_property(&_0, this_ptr, ZEND_STRL("ast"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&ast, &_0); - ZEPHIR_OBS_VAR(&update); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&update, &ast, SL("update"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted UPDATE AST", "phalcon/Mvc/Model/Query.zep", 4036); - return; + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_OBS_VAR(&tables); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&tables, &update, SL("tables"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted UPDATE AST", "phalcon/Mvc/Model/Query.zep", 4040); - return; + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); } - ZEPHIR_OBS_VAR(&values); - if (UNEXPECTED(!(zephir_array_isset_string_fetch(&values, &update, SL("values"), 0)))) { - ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_mvc_model_exception_ce, "Corrupted UPDATE AST", "phalcon/Mvc/Model/Query.zep", 4044); - return; + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); } - ZEPHIR_INIT_VAR(&models); - array_init(&models); - ZEPHIR_INIT_VAR(&modelsInstances); - array_init(&modelsInstances); - ZEPHIR_INIT_VAR(&sqlTables); - array_init(&sqlTables); - ZEPHIR_INIT_VAR(&sqlModels); - array_init(&sqlModels); - ZEPHIR_INIT_VAR(&sqlAliases); - array_init(&sqlAliases); - ZEPHIR_INIT_VAR(&sqlAliasesModelsInstances); - array_init(&sqlAliasesModelsInstances); - if (!(zephir_array_isset_long(&tables, 0))) { - ZEPHIR_INIT_VAR(&updateTables); - zephir_create_array(&updateTables, 1, 0); - zephir_array_fast_append(&updateTables, &tables); + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); } else { - ZEPHIR_CPY_WRT(&updateTables, &tables); + ZEPHIR_INIT_VAR(&schema); } - zephir_read_property(&_0, this_ptr, ZEND_STRL("manager"), PH_NOISY_CC | PH_READONLY); - ZEPHIR_CPY_WRT(&manager, &_0); - zephir_is_iterable(&updateTables, 0, "phalcon/Mvc/Model/Query.zep", 4110); - if (Z_TYPE_P(&updateTables) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&updateTables), _1) + } + + + ZEPHIR_INIT_VAR(&oldColumn); + ZVAL_NULL(&oldColumn); + ZEPHIR_INIT_VAR(&sizePattern); + ZVAL_STRING(&sizePattern, "#\\(([0-9]+)(?:,\\s*([0-9]+))*\\)#"); + ZEPHIR_INIT_VAR(&columns); + array_init(&columns); + zephir_read_property(&_0, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_1, &_0, "describecolumns", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_2, 3); + ZEPHIR_CALL_METHOD(&fields, this_ptr, "fetchall", NULL, 0, &_1, &_2); + zephir_check_call_status(); + zephir_is_iterable(&fields, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 311); + if (Z_TYPE_P(&fields) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&fields), _3) { - ZEPHIR_INIT_NVAR(&table); - ZVAL_COPY(&table, _1); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &table, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4068); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4069); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_3, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - ZEPHIR_INIT_NVAR(&completeSource); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&_4$$9); - zephir_create_array(&_4$$9, 2, 0); - zephir_array_fast_append(&_4$$9, &source); - zephir_array_fast_append(&_4$$9, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_4$$9); + ZEPHIR_INIT_NVAR(&field); + ZVAL_COPY(&field, _3); + ZEPHIR_INIT_NVAR(&definition); + zephir_create_array(&definition, 1, 0); + add_assoc_long_ex(&definition, SL("bindType"), 2); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 127); + _5$$3 = zephir_memnstr_str(&columnType, SL("int"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 149); + if (!(_5$$3)) { + _5$$3 = zephir_memnstr_str(&columnType, SL("INT"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 149); + } + if (zephir_memnstr_str(&columnType, SL("bigint"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 142)) { + ZEPHIR_INIT_NVAR(&_6$$4); + ZVAL_LONG(&_6$$4, 14); + zephir_array_update_string(&definition, SL("type"), &_6$$4, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_7$$4); + ZVAL_LONG(&_7$$4, 2); + zephir_array_update_string(&definition, SL("bindType"), &_7$$4, PH_COPY | PH_SEPARATE); + } else if (_5$$3) { + ZEPHIR_INIT_NVAR(&_8$$5); + ZVAL_LONG(&_8$$5, 0); + zephir_array_update_string(&definition, SL("type"), &_8$$5, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_9$$5); + ZVAL_LONG(&_9$$5, 1); + zephir_array_update_string(&definition, SL("bindType"), &_9$$5, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_10$$5, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 157); + if (zephir_is_true(&_10$$5)) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + } else if (zephir_memnstr_str(&columnType, SL("tinyint(1)"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 160)) { + ZEPHIR_INIT_NVAR(&_11$$7); + ZVAL_LONG(&_11$$7, 8); + zephir_array_update_string(&definition, SL("type"), &_11$$7, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_12$$7); + ZVAL_LONG(&_12$$7, 5); + zephir_array_update_string(&definition, SL("bindType"), &_12$$7, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&columnType); + ZVAL_STRING(&columnType, "boolean"); + } else if (zephir_memnstr_str(&columnType, SL("enum"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 171)) { + ZEPHIR_INIT_NVAR(&_13$$8); + ZVAL_LONG(&_13$$8, 5); + zephir_array_update_string(&definition, SL("type"), &_13$$8, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("datetime"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 180)) { + ZEPHIR_INIT_NVAR(&_14$$9); + ZVAL_LONG(&_14$$9, 4); + zephir_array_update_string(&definition, SL("type"), &_14$$9, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("date"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 185)) { + ZEPHIR_INIT_NVAR(&_15$$10); + ZVAL_LONG(&_15$$10, 1); + zephir_array_update_string(&definition, SL("type"), &_15$$10, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("decimal"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 194)) { + ZEPHIR_INIT_NVAR(&_16$$11); + ZVAL_LONG(&_16$$11, 3); + zephir_array_update_string(&definition, SL("type"), &_16$$11, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_17$$11); + ZVAL_LONG(&_17$$11, 32); + zephir_array_update_string(&definition, SL("bindType"), &_17$$11, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("float"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 201)) { + ZEPHIR_INIT_NVAR(&_18$$12); + ZVAL_LONG(&_18$$12, 7); + zephir_array_update_string(&definition, SL("type"), &_18$$12, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_19$$12); + ZVAL_LONG(&_19$$12, 3); + zephir_array_update_string(&definition, SL("bindType"), &_19$$12, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("timestamp"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 212)) { + ZEPHIR_INIT_NVAR(&_20$$13); + ZVAL_LONG(&_20$$13, 17); + zephir_array_update_string(&definition, SL("type"), &_20$$13, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("varchar"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 221)) { + ZEPHIR_INIT_NVAR(&_21$$14); + ZVAL_LONG(&_21$$14, 2); + zephir_array_update_string(&definition, SL("type"), &_21$$14, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("char"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 226)) { + ZEPHIR_INIT_NVAR(&_22$$15); + ZVAL_LONG(&_22$$15, 5); + zephir_array_update_string(&definition, SL("type"), &_22$$15, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("text"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 231)) { + ZEPHIR_INIT_NVAR(&_23$$16); + ZVAL_LONG(&_23$$16, 6); + zephir_array_update_string(&definition, SL("type"), &_23$$16, PH_COPY | PH_SEPARATE); } else { - ZEPHIR_INIT_NVAR(&_5$$10); - zephir_create_array(&_5$$10, 2, 0); - zephir_array_fast_append(&_5$$10, &source); - zephir_array_fast_append(&_5$$10, &__$null); - ZEPHIR_CPY_WRT(&completeSource, &_5$$10); + ZEPHIR_INIT_NVAR(&_24$$17); + ZVAL_LONG(&_24$$17, 2); + zephir_array_update_string(&definition, SL("type"), &_24$$17, PH_COPY | PH_SEPARATE); } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &table, SL("alias"), 0)) { - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4092); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4093); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &alias, &modelName, PH_COPY | PH_SEPARATE); + if (zephir_memnstr_str(&columnType, SL("("), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 248)) { + ZEPHIR_INIT_NVAR(&matches); + ZVAL_NULL(&matches); + ZEPHIR_INIT_NVAR(&_25$$18); + zephir_preg_match(&_25$$18, &sizePattern, &columnType, &matches, 0, 0 , 0 ); + if (zephir_is_true(&_25$$18)) { + ZEPHIR_OBS_NVAR(&matchOne); + if (zephir_array_isset_long_fetch(&matchOne, &matches, 1, 0)) { + ZEPHIR_INIT_NVAR(&_26$$20); + ZVAL_LONG(&_26$$20, zephir_get_intval(&matchOne)); + zephir_array_update_string(&definition, SL("size"), &_26$$20, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&matchTwo); + if (zephir_array_isset_long_fetch(&matchTwo, &matches, 2, 0)) { + ZEPHIR_INIT_NVAR(&_27$$21); + ZVAL_LONG(&_27$$21, zephir_get_intval(&matchTwo)); + zephir_array_update_string(&definition, SL("scale"), &_27$$21, PH_COPY | PH_SEPARATE); + } + } + } + if (zephir_memnstr_str(&columnType, SL("unsigned"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 264)) { + zephir_array_update_string(&definition, SL("unsigned"), &__$true, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); } else { - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlTables, &source, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4099); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4103); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_28$$3, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 280); + if (zephir_is_true(&_28$$3)) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_29$$3, &field, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 287); + if (ZEPHIR_IS_LONG(&_29$$3, 0)) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&_30$$3); + zephir_array_fetch_long(&_30$$3, &field, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 295); + _31$$3 = !(ZEPHIR_IS_EMPTY(&_30$$3)); + if (_31$$3) { + zephir_array_fetch_long(&_32$$3, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 295); + ZEPHIR_INIT_NVAR(&_33$$3); + ZVAL_STRING(&_33$$3, "null"); + ZEPHIR_CALL_FUNCTION(&_34$$3, "strcasecmp", &_35, 35, &_32$$3, &_33$$3); + zephir_check_call_status(); + _31$$3 = !ZEPHIR_IS_LONG_IDENTICAL(&_34$$3, 0); + } + if (_31$$3) { + zephir_array_fetch_long(&_36$$27, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 300); + ZEPHIR_INIT_NVAR(&_37$$27); + ZVAL_STRING(&_37$$27, "/^'|'$/"); + ZEPHIR_INIT_NVAR(&_38$$27); + ZVAL_STRING(&_38$$27, ""); + ZEPHIR_CALL_FUNCTION(&_39$$27, "preg_replace", &_40, 37, &_37$$27, &_38$$27, &_36$$27); + zephir_check_call_status(); + zephir_array_update_string(&definition, SL("default"), &_39$$27, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&columnName, &field, 1, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 306); + ZEPHIR_INIT_NVAR(&_33$$3); + object_init_ex(&_33$$3, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_33$$3, "__construct", &_41, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_33$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 307); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &updateTables, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &fields, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_2, &updateTables, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_4, &fields, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_2)) { + if (!zend_is_true(&_4)) { break; } - ZEPHIR_CALL_METHOD(&table, &updateTables, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&field, &fields, "current", NULL, 0); zephir_check_call_status(); - ZEPHIR_OBS_NVAR(&qualifiedName); - zephir_array_fetch_string(&qualifiedName, &table, SL("qualifiedName"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4068); - ZEPHIR_OBS_NVAR(&modelName); - zephir_array_fetch_string(&modelName, &qualifiedName, SL("name"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4069); - ZEPHIR_CALL_METHOD(&model, &manager, "load", &_6, 0, &modelName); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&source, &model, "getsource", NULL, 0); - zephir_check_call_status(); - ZEPHIR_CALL_METHOD(&schema, &model, "getschema", NULL, 0); - zephir_check_call_status(); - if (zephir_is_true(&schema)) { - ZEPHIR_INIT_NVAR(&_7$$14); - zephir_create_array(&_7$$14, 2, 0); - zephir_array_fast_append(&_7$$14, &source); - zephir_array_fast_append(&_7$$14, &schema); - ZEPHIR_CPY_WRT(&completeSource, &_7$$14); + ZEPHIR_INIT_NVAR(&_42$$28); + zephir_create_array(&_42$$28, 1, 0); + add_assoc_long_ex(&_42$$28, SL("bindType"), 2); + ZEPHIR_CPY_WRT(&definition, &_42$$28); + ZEPHIR_OBS_NVAR(&columnType); + zephir_array_fetch_long(&columnType, &field, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 127); + _43$$28 = zephir_memnstr_str(&columnType, SL("int"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 149); + if (!(_43$$28)) { + _43$$28 = zephir_memnstr_str(&columnType, SL("INT"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 149); + } + if (zephir_memnstr_str(&columnType, SL("bigint"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 142)) { + ZEPHIR_INIT_NVAR(&_44$$29); + ZVAL_LONG(&_44$$29, 14); + zephir_array_update_string(&definition, SL("type"), &_44$$29, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_45$$29); + ZVAL_LONG(&_45$$29, 2); + zephir_array_update_string(&definition, SL("bindType"), &_45$$29, PH_COPY | PH_SEPARATE); + } else if (_43$$28) { + ZEPHIR_INIT_NVAR(&_46$$30); + ZVAL_LONG(&_46$$30, 0); + zephir_array_update_string(&definition, SL("type"), &_46$$30, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_47$$30); + ZVAL_LONG(&_47$$30, 1); + zephir_array_update_string(&definition, SL("bindType"), &_47$$30, PH_COPY | PH_SEPARATE); + zephir_array_fetch_long(&_48$$30, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 157); + if (zephir_is_true(&_48$$30)) { + zephir_array_update_string(&definition, SL("autoIncrement"), &__$true, PH_COPY | PH_SEPARATE); + } + } else if (zephir_memnstr_str(&columnType, SL("tinyint(1)"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 160)) { + ZEPHIR_INIT_NVAR(&_49$$32); + ZVAL_LONG(&_49$$32, 8); + zephir_array_update_string(&definition, SL("type"), &_49$$32, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_50$$32); + ZVAL_LONG(&_50$$32, 5); + zephir_array_update_string(&definition, SL("bindType"), &_50$$32, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&columnType); + ZVAL_STRING(&columnType, "boolean"); + } else if (zephir_memnstr_str(&columnType, SL("enum"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 171)) { + ZEPHIR_INIT_NVAR(&_51$$33); + ZVAL_LONG(&_51$$33, 5); + zephir_array_update_string(&definition, SL("type"), &_51$$33, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("datetime"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 180)) { + ZEPHIR_INIT_NVAR(&_52$$34); + ZVAL_LONG(&_52$$34, 4); + zephir_array_update_string(&definition, SL("type"), &_52$$34, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("date"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 185)) { + ZEPHIR_INIT_NVAR(&_53$$35); + ZVAL_LONG(&_53$$35, 1); + zephir_array_update_string(&definition, SL("type"), &_53$$35, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("decimal"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 194)) { + ZEPHIR_INIT_NVAR(&_54$$36); + ZVAL_LONG(&_54$$36, 3); + zephir_array_update_string(&definition, SL("type"), &_54$$36, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_55$$36); + ZVAL_LONG(&_55$$36, 32); + zephir_array_update_string(&definition, SL("bindType"), &_55$$36, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("float"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 201)) { + ZEPHIR_INIT_NVAR(&_56$$37); + ZVAL_LONG(&_56$$37, 7); + zephir_array_update_string(&definition, SL("type"), &_56$$37, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("isNumeric"), &__$true, PH_COPY | PH_SEPARATE); + ZEPHIR_INIT_NVAR(&_57$$37); + ZVAL_LONG(&_57$$37, 3); + zephir_array_update_string(&definition, SL("bindType"), &_57$$37, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("timestamp"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 212)) { + ZEPHIR_INIT_NVAR(&_58$$38); + ZVAL_LONG(&_58$$38, 17); + zephir_array_update_string(&definition, SL("type"), &_58$$38, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("varchar"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 221)) { + ZEPHIR_INIT_NVAR(&_59$$39); + ZVAL_LONG(&_59$$39, 2); + zephir_array_update_string(&definition, SL("type"), &_59$$39, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("char"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 226)) { + ZEPHIR_INIT_NVAR(&_60$$40); + ZVAL_LONG(&_60$$40, 5); + zephir_array_update_string(&definition, SL("type"), &_60$$40, PH_COPY | PH_SEPARATE); + } else if (zephir_memnstr_str(&columnType, SL("text"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 231)) { + ZEPHIR_INIT_NVAR(&_61$$41); + ZVAL_LONG(&_61$$41, 6); + zephir_array_update_string(&definition, SL("type"), &_61$$41, PH_COPY | PH_SEPARATE); } else { - ZEPHIR_INIT_NVAR(&_8$$15); - zephir_create_array(&_8$$15, 2, 0); - zephir_array_fast_append(&_8$$15, &source); - zephir_array_fast_append(&_8$$15, &__$null); - ZEPHIR_CPY_WRT(&completeSource, &_8$$15); + ZEPHIR_INIT_NVAR(&_62$$42); + ZVAL_LONG(&_62$$42, 2); + zephir_array_update_string(&definition, SL("type"), &_62$$42, PH_COPY | PH_SEPARATE); } - ZEPHIR_OBS_NVAR(&alias); - if (zephir_array_isset_string_fetch(&alias, &table, SL("alias"), 0)) { - zephir_array_update_zval(&sqlAliases, &alias, &alias, PH_COPY | PH_SEPARATE); - zephir_array_append(&completeSource, &alias, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4092); - zephir_array_append(&sqlTables, &completeSource, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4093); - zephir_array_update_zval(&sqlAliasesModelsInstances, &alias, &model, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&models, &alias, &modelName, PH_COPY | PH_SEPARATE); + if (zephir_memnstr_str(&columnType, SL("("), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 248)) { + ZEPHIR_INIT_NVAR(&matches); + ZVAL_NULL(&matches); + ZEPHIR_INIT_NVAR(&_63$$43); + zephir_preg_match(&_63$$43, &sizePattern, &columnType, &matches, 0, 0 , 0 ); + if (zephir_is_true(&_63$$43)) { + ZEPHIR_OBS_NVAR(&matchOne); + if (zephir_array_isset_long_fetch(&matchOne, &matches, 1, 0)) { + ZEPHIR_INIT_NVAR(&_64$$45); + ZVAL_LONG(&_64$$45, zephir_get_intval(&matchOne)); + zephir_array_update_string(&definition, SL("size"), &_64$$45, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&matchTwo); + if (zephir_array_isset_long_fetch(&matchTwo, &matches, 2, 0)) { + ZEPHIR_INIT_NVAR(&_65$$46); + ZVAL_LONG(&_65$$46, zephir_get_intval(&matchTwo)); + zephir_array_update_string(&definition, SL("scale"), &_65$$46, PH_COPY | PH_SEPARATE); + } + } + } + if (zephir_memnstr_str(&columnType, SL("unsigned"), "phalcon/Db/Adapter/Pdo/Sqlite.zep", 264)) { + zephir_array_update_string(&definition, SL("unsigned"), &__$true, PH_COPY | PH_SEPARATE); + } + if (Z_TYPE_P(&oldColumn) == IS_NULL) { + zephir_array_update_string(&definition, SL("first"), &__$true, PH_COPY | PH_SEPARATE); } else { - zephir_array_update_zval(&sqlAliases, &modelName, &source, PH_COPY | PH_SEPARATE); - zephir_array_update_zval(&sqlAliasesModelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlTables, &source, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4099); - zephir_array_update_zval(&models, &modelName, &source, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&definition, SL("after"), &oldColumn, PH_COPY | PH_SEPARATE); } - zephir_array_append(&sqlModels, &modelName, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4103); - zephir_array_update_zval(&modelsInstances, &modelName, &model, PH_COPY | PH_SEPARATE); - ZEPHIR_CALL_METHOD(NULL, &updateTables, "next", NULL, 0); + zephir_array_fetch_long(&_66$$28, &field, 5, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 280); + if (zephir_is_true(&_66$$28)) { + zephir_array_update_string(&definition, SL("primary"), &__$true, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch_long(&_67$$28, &field, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 287); + if (ZEPHIR_IS_LONG(&_67$$28, 0)) { + zephir_array_update_string(&definition, SL("notNull"), &__$false, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&_68$$28); + zephir_array_fetch_long(&_68$$28, &field, 4, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 295); + _69$$28 = !(ZEPHIR_IS_EMPTY(&_68$$28)); + if (_69$$28) { + zephir_array_fetch_long(&_70$$28, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 295); + ZEPHIR_INIT_NVAR(&_71$$28); + ZVAL_STRING(&_71$$28, "null"); + ZEPHIR_CALL_FUNCTION(&_72$$28, "strcasecmp", &_35, 35, &_70$$28, &_71$$28); + zephir_check_call_status(); + _69$$28 = !ZEPHIR_IS_LONG_IDENTICAL(&_72$$28, 0); + } + if (_69$$28) { + zephir_array_fetch_long(&_73$$52, &field, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 300); + ZEPHIR_INIT_NVAR(&_74$$52); + ZVAL_STRING(&_74$$52, "/^'|'$/"); + ZEPHIR_INIT_NVAR(&_75$$52); + ZVAL_STRING(&_75$$52, ""); + ZEPHIR_CALL_FUNCTION(&_76$$52, "preg_replace", &_40, 37, &_74$$52, &_75$$52, &_73$$52); + zephir_check_call_status(); + zephir_array_update_string(&definition, SL("default"), &_76$$52, PH_COPY | PH_SEPARATE); + } + ZEPHIR_OBS_NVAR(&columnName); + zephir_array_fetch_long(&columnName, &field, 1, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 306); + ZEPHIR_INIT_NVAR(&_71$$28); + object_init_ex(&_71$$28, phalcon_db_column_ce); + ZEPHIR_CALL_METHOD(NULL, &_71$$28, "__construct", &_41, 209, &columnName, &definition); + zephir_check_call_status(); + zephir_array_append(&columns, &_71$$28, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 307); + ZEPHIR_CPY_WRT(&oldColumn, &columnName); + ZEPHIR_CALL_METHOD(NULL, &fields, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&table); - zephir_update_property_zval(this_ptr, ZEND_STRL("models"), &models); - zephir_update_property_zval(this_ptr, ZEND_STRL("modelsInstances"), &modelsInstances); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliases"), &sqlAliases); - zephir_update_property_zval(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &sqlAliasesModelsInstances); - ZEPHIR_INIT_VAR(&sqlFields); - array_init(&sqlFields); - ZEPHIR_INIT_VAR(&sqlValues); - array_init(&sqlValues); - if (!(zephir_array_isset_long(&values, 0))) { - ZEPHIR_INIT_VAR(&updateValues); - zephir_create_array(&updateValues, 1, 0); - zephir_array_fast_append(&updateValues, &values); + ZEPHIR_INIT_NVAR(&field); + RETURN_CCTOR(&columns); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, describeIndexes) +{ + zend_string *_46; + zend_ulong _45; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_17 = NULL, *_50 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, __$null, indexes, index, keyName, indexObjects, name, columns, describeIndexes, describeIndex, indexSql, _0, _1, _2, _3, *_4, _5, *_43, _44, _6$$4, _7$$3, _9$$3, _10$$3, _11$$3, *_12$$3, _13$$3, _16$$3, _18$$3, _8$$6, _14$$7, _15$$8, _19$$9, _20$$9, _21$$9, _22$$9, _23$$10, _24$$11, _25$$14, _26$$13, _28$$13, _29$$13, _30$$13, *_31$$13, _32$$13, _35$$13, _36$$13, _27$$16, _33$$17, _34$$18, _37$$19, _38$$19, _39$$19, _40$$19, _41$$20, _42$$21, _47$$23, _48$$23, _49$$23, _51$$24, _52$$24, _53$$24; + zval table, schema; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(&indexes); + ZVAL_UNDEF(&index); + ZVAL_UNDEF(&keyName); + ZVAL_UNDEF(&indexObjects); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&describeIndexes); + ZVAL_UNDEF(&describeIndex); + ZVAL_UNDEF(&indexSql); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_44); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_7$$3); + ZVAL_UNDEF(&_9$$3); + ZVAL_UNDEF(&_10$$3); + ZVAL_UNDEF(&_11$$3); + ZVAL_UNDEF(&_13$$3); + ZVAL_UNDEF(&_16$$3); + ZVAL_UNDEF(&_18$$3); + ZVAL_UNDEF(&_8$$6); + ZVAL_UNDEF(&_14$$7); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_19$$9); + ZVAL_UNDEF(&_20$$9); + ZVAL_UNDEF(&_21$$9); + ZVAL_UNDEF(&_22$$9); + ZVAL_UNDEF(&_23$$10); + ZVAL_UNDEF(&_24$$11); + ZVAL_UNDEF(&_25$$14); + ZVAL_UNDEF(&_26$$13); + ZVAL_UNDEF(&_28$$13); + ZVAL_UNDEF(&_29$$13); + ZVAL_UNDEF(&_30$$13); + ZVAL_UNDEF(&_32$$13); + ZVAL_UNDEF(&_35$$13); + ZVAL_UNDEF(&_36$$13); + ZVAL_UNDEF(&_27$$16); + ZVAL_UNDEF(&_33$$17); + ZVAL_UNDEF(&_34$$18); + ZVAL_UNDEF(&_37$$19); + ZVAL_UNDEF(&_38$$19); + ZVAL_UNDEF(&_39$$19); + ZVAL_UNDEF(&_40$$19); + ZVAL_UNDEF(&_41$$20); + ZVAL_UNDEF(&_42$$21); + ZVAL_UNDEF(&_47$$23); + ZVAL_UNDEF(&_48$$23); + ZVAL_UNDEF(&_49$$23); + ZVAL_UNDEF(&_51$$24); + ZVAL_UNDEF(&_52$$24); + ZVAL_UNDEF(&_53$$24); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); } else { - ZEPHIR_CPY_WRT(&updateValues, &values); + ZEPHIR_INIT_VAR(&table); } - notQuoting = 0; - zephir_is_iterable(&updateValues, 0, "phalcon/Mvc/Model/Query.zep", 4134); - if (Z_TYPE_P(&updateValues) == IS_ARRAY) { - ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&updateValues), _9) + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); + } else { + ZEPHIR_INIT_VAR(&schema); + } + } + + + ZEPHIR_INIT_VAR(&indexes); + array_init(&indexes); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describeindexes", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_3, 2); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 369); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&_0), _4) { - ZEPHIR_INIT_NVAR(&updateValue); - ZVAL_COPY(&updateValue, _9); - zephir_array_fetch_string(&_12$$20, &updateValue, SL("column"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 4126); - if (notQuoting) { - ZVAL_BOOL(&_13$$20, 1); + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _4); + ZEPHIR_OBS_NVAR(&keyName); + zephir_array_fetch_string(&keyName, &index, SL("name"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 331); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&_6$$4); + array_init(&_6$$4); + zephir_array_update_zval(&indexes, &keyName, &_6$$4, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch(&_7$$3, &indexes, &keyName, PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 337); + if (!(zephir_array_isset_string(&_7$$3, SL("columns")))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); } else { - ZVAL_BOOL(&_13$$20, 0); + zephir_array_fetch(&_8$$6, &indexes, &keyName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 340); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_8$$6, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 340); } - ZEPHIR_CALL_METHOD(&_11$$20, this_ptr, "getexpression", &_14, 456, &_12$$20, &_13$$20); + zephir_read_property(&_9$$3, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_10$$3, &_9$$3, "describeindex", NULL, 0, &keyName); zephir_check_call_status(); - zephir_array_append(&sqlFields, &_11$$20, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4126); - ZEPHIR_OBS_NVAR(&exprColumn); - zephir_array_fetch_string(&exprColumn, &updateValue, SL("expr"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4127); - ZEPHIR_INIT_NVAR(&_15$$20); - zephir_create_array(&_15$$20, 2, 0); - ZEPHIR_OBS_NVAR(&_16$$20); - zephir_array_fetch_string(&_16$$20, &exprColumn, SL("type"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4129); - zephir_array_update_string(&_15$$20, SL("type"), &_16$$20, PH_COPY | PH_SEPARATE); - if (notQuoting) { - ZVAL_BOOL(&_18$$20, 1); + ZVAL_LONG(&_11$$3, 2); + ZEPHIR_CALL_METHOD(&describeIndexes, this_ptr, "fetchall", NULL, 0, &_10$$3, &_11$$3); + zephir_check_call_status(); + zephir_is_iterable(&describeIndexes, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 352); + if (Z_TYPE_P(&describeIndexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&describeIndexes), _12$$3) + { + ZEPHIR_INIT_NVAR(&describeIndex); + ZVAL_COPY(&describeIndex, _12$$3); + zephir_array_fetch_string(&_14$$7, &describeIndex, SL("name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + zephir_array_append(&columns, &_14$$7, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + } ZEND_HASH_FOREACH_END(); } else { - ZVAL_BOOL(&_18$$20, 0); + ZEPHIR_CALL_METHOD(NULL, &describeIndexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_13$$3, &describeIndexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_13$$3)) { + break; + } + ZEPHIR_CALL_METHOD(&describeIndex, &describeIndexes, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_fetch_string(&_15$$8, &describeIndex, SL("name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + zephir_array_append(&columns, &_15$$8, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + ZEPHIR_CALL_METHOD(NULL, &describeIndexes, "next", NULL, 0); + zephir_check_call_status(); + } } - ZEPHIR_CALL_METHOD(&_17$$20, this_ptr, "getexpression", &_14, 456, &exprColumn, &_18$$20); + ZEPHIR_INIT_NVAR(&describeIndex); + zephir_array_update_multi(&indexes, &columns, SL("zs"), 3, &keyName, SL("columns")); + zephir_read_property(&_11$$3, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_16$$3, &_11$$3, "listindexessql", NULL, 0, &table, &schema, &keyName); zephir_check_call_status(); - zephir_array_update_string(&_15$$20, SL("value"), &_17$$20, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlValues, &_15$$20, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4131); + ZEPHIR_CALL_METHOD(&indexSql, this_ptr, "fetchcolumn", &_17, 0, &_16$$3); + zephir_check_call_status(); + zephir_array_fetch_string(&_18$$3, &index, SL("unique"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 358); + if (zephir_is_true(&_18$$3)) { + ZEPHIR_INIT_NVAR(&_19$$9); + ZEPHIR_INIT_NVAR(&_20$$9); + ZVAL_STRING(&_20$$9, "# UNIQUE #i"); + ZEPHIR_INIT_NVAR(&_21$$9); + ZEPHIR_INIT_NVAR(&_22$$9); + ZVAL_STRING(&_22$$9, "# UNIQUE #i"); + zephir_preg_match(&_21$$9, &_22$$9, &indexSql, &_19$$9, 0, 0 , 0 ); + if (zephir_is_true(&_21$$9)) { + ZEPHIR_INIT_NVAR(&_23$$10); + ZVAL_STRING(&_23$$10, "UNIQUE"); + zephir_array_update_multi(&indexes, &_23$$10, SL("zs"), 3, &keyName, SL("type")); + } else { + ZEPHIR_INIT_NVAR(&_24$$11); + ZVAL_STRING(&_24$$11, "PRIMARY"); + zephir_array_update_multi(&indexes, &_24$$11, SL("zs"), 3, &keyName, SL("type")); + } + } else { + zephir_array_update_multi(&indexes, &__$null, SL("zs"), 3, &keyName, SL("type")); + } } ZEND_HASH_FOREACH_END(); } else { - ZEPHIR_CALL_METHOD(NULL, &updateValues, "rewind", NULL, 0); + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); zephir_check_call_status(); while (1) { - ZEPHIR_CALL_METHOD(&_10, &updateValues, "valid", NULL, 0); + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); zephir_check_call_status(); - if (!zend_is_true(&_10)) { + if (!zend_is_true(&_5)) { break; } - ZEPHIR_CALL_METHOD(&updateValue, &updateValues, "current", NULL, 0); + ZEPHIR_CALL_METHOD(&index, &_0, "current", NULL, 0); zephir_check_call_status(); - zephir_array_fetch_string(&_20$$21, &updateValue, SL("column"), PH_NOISY | PH_READONLY, "phalcon/Mvc/Model/Query.zep", 4126); - if (notQuoting) { - ZVAL_BOOL(&_21$$21, 1); + ZEPHIR_OBS_NVAR(&keyName); + zephir_array_fetch_string(&keyName, &index, SL("name"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 331); + if (!(zephir_array_isset(&indexes, &keyName))) { + ZEPHIR_INIT_NVAR(&_25$$14); + array_init(&_25$$14); + zephir_array_update_zval(&indexes, &keyName, &_25$$14, PH_COPY | PH_SEPARATE); + } + zephir_array_fetch(&_26$$13, &indexes, &keyName, PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 337); + if (!(zephir_array_isset_string(&_26$$13, SL("columns")))) { + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); } else { - ZVAL_BOOL(&_21$$21, 0); + zephir_array_fetch(&_27$$16, &indexes, &keyName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 340); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_27$$16, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 340); } - ZEPHIR_CALL_METHOD(&_19$$21, this_ptr, "getexpression", &_14, 456, &_20$$21, &_21$$21); + zephir_read_property(&_28$$13, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_29$$13, &_28$$13, "describeindex", NULL, 0, &keyName); zephir_check_call_status(); - zephir_array_append(&sqlFields, &_19$$21, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4126); - ZEPHIR_OBS_NVAR(&exprColumn); - zephir_array_fetch_string(&exprColumn, &updateValue, SL("expr"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4127); - ZEPHIR_INIT_NVAR(&_22$$21); - zephir_create_array(&_22$$21, 2, 0); - ZEPHIR_OBS_NVAR(&_23$$21); - zephir_array_fetch_string(&_23$$21, &exprColumn, SL("type"), PH_NOISY, "phalcon/Mvc/Model/Query.zep", 4129); - zephir_array_update_string(&_22$$21, SL("type"), &_23$$21, PH_COPY | PH_SEPARATE); - if (notQuoting) { - ZVAL_BOOL(&_25$$21, 1); + ZVAL_LONG(&_30$$13, 2); + ZEPHIR_CALL_METHOD(&describeIndexes, this_ptr, "fetchall", NULL, 0, &_29$$13, &_30$$13); + zephir_check_call_status(); + zephir_is_iterable(&describeIndexes, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 352); + if (Z_TYPE_P(&describeIndexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(&describeIndexes), _31$$13) + { + ZEPHIR_INIT_NVAR(&describeIndex); + ZVAL_COPY(&describeIndex, _31$$13); + zephir_array_fetch_string(&_33$$17, &describeIndex, SL("name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + zephir_array_append(&columns, &_33$$17, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + } ZEND_HASH_FOREACH_END(); } else { - ZVAL_BOOL(&_25$$21, 0); + ZEPHIR_CALL_METHOD(NULL, &describeIndexes, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_32$$13, &describeIndexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_32$$13)) { + break; + } + ZEPHIR_CALL_METHOD(&describeIndex, &describeIndexes, "current", NULL, 0); + zephir_check_call_status(); + zephir_array_fetch_string(&_34$$18, &describeIndex, SL("name"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + zephir_array_append(&columns, &_34$$18, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 349); + ZEPHIR_CALL_METHOD(NULL, &describeIndexes, "next", NULL, 0); + zephir_check_call_status(); + } } - ZEPHIR_CALL_METHOD(&_24$$21, this_ptr, "getexpression", &_14, 456, &exprColumn, &_25$$21); + ZEPHIR_INIT_NVAR(&describeIndex); + zephir_array_update_multi(&indexes, &columns, SL("zs"), 3, &keyName, SL("columns")); + zephir_read_property(&_30$$13, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_35$$13, &_30$$13, "listindexessql", NULL, 0, &table, &schema, &keyName); zephir_check_call_status(); - zephir_array_update_string(&_22$$21, SL("value"), &_24$$21, PH_COPY | PH_SEPARATE); - zephir_array_append(&sqlValues, &_22$$21, PH_SEPARATE, "phalcon/Mvc/Model/Query.zep", 4131); - ZEPHIR_CALL_METHOD(NULL, &updateValues, "next", NULL, 0); + ZEPHIR_CALL_METHOD(&indexSql, this_ptr, "fetchcolumn", &_17, 0, &_35$$13); + zephir_check_call_status(); + zephir_array_fetch_string(&_36$$13, &index, SL("unique"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 358); + if (zephir_is_true(&_36$$13)) { + ZEPHIR_INIT_NVAR(&_37$$19); + ZEPHIR_INIT_NVAR(&_38$$19); + ZVAL_STRING(&_38$$19, "# UNIQUE #i"); + ZEPHIR_INIT_NVAR(&_39$$19); + ZEPHIR_INIT_NVAR(&_40$$19); + ZVAL_STRING(&_40$$19, "# UNIQUE #i"); + zephir_preg_match(&_39$$19, &_40$$19, &indexSql, &_37$$19, 0, 0 , 0 ); + if (zephir_is_true(&_39$$19)) { + ZEPHIR_INIT_NVAR(&_41$$20); + ZVAL_STRING(&_41$$20, "UNIQUE"); + zephir_array_update_multi(&indexes, &_41$$20, SL("zs"), 3, &keyName, SL("type")); + } else { + ZEPHIR_INIT_NVAR(&_42$$21); + ZVAL_STRING(&_42$$21, "PRIMARY"); + zephir_array_update_multi(&indexes, &_42$$21, SL("zs"), 3, &keyName, SL("type")); + } + } else { + zephir_array_update_multi(&indexes, &__$null, SL("zs"), 3, &keyName, SL("type")); + } + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); zephir_check_call_status(); } } - ZEPHIR_INIT_NVAR(&updateValue); - ZEPHIR_INIT_VAR(&sqlUpdate); - zephir_create_array(&sqlUpdate, 4, 0); - zephir_array_update_string(&sqlUpdate, SL("tables"), &sqlTables, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlUpdate, SL("models"), &sqlModels, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlUpdate, SL("fields"), &sqlFields, PH_COPY | PH_SEPARATE); - zephir_array_update_string(&sqlUpdate, SL("values"), &sqlValues, PH_COPY | PH_SEPARATE); - ZEPHIR_OBS_VAR(&where); - if (zephir_array_isset_string_fetch(&where, &ast, SL("where"), 0)) { - ZVAL_BOOL(&_27$$22, 1); - ZEPHIR_CALL_METHOD(&_26$$22, this_ptr, "getexpression", &_14, 456, &where, &_27$$22); - zephir_check_call_status(); - zephir_array_update_string(&sqlUpdate, SL("where"), &_26$$22, PH_COPY | PH_SEPARATE); - } - ZEPHIR_OBS_VAR(&limit); - if (zephir_array_isset_string_fetch(&limit, &ast, SL("limit"), 0)) { - ZEPHIR_CALL_METHOD(&_28$$23, this_ptr, "getlimitclause", NULL, 470, &limit); + ZEPHIR_INIT_NVAR(&index); + ZEPHIR_INIT_VAR(&indexObjects); + array_init(&indexObjects); + zephir_is_iterable(&indexes, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 379); + if (Z_TYPE_P(&indexes) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&indexes), _45, _46, _43) + { + ZEPHIR_INIT_NVAR(&name); + if (_46 != NULL) { + ZVAL_STR_COPY(&name, _46); + } else { + ZVAL_LONG(&name, _45); + } + ZEPHIR_INIT_NVAR(&index); + ZVAL_COPY(&index, _43); + ZEPHIR_INIT_NVAR(&_47$$23); + object_init_ex(&_47$$23, phalcon_db_index_ce); + zephir_array_fetch_string(&_48$$23, &index, SL("columns"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 374); + zephir_array_fetch_string(&_49$$23, &index, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 376); + ZEPHIR_CALL_METHOD(NULL, &_47$$23, "__construct", &_50, 30, &name, &_48$$23, &_49$$23); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_47$$23, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &indexes, "rewind", NULL, 0); zephir_check_call_status(); - zephir_array_update_string(&sqlUpdate, SL("limit"), &_28$$23, PH_COPY | PH_SEPARATE); + while (1) { + ZEPHIR_CALL_METHOD(&_44, &indexes, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_44)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &indexes, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&index, &indexes, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_51$$24); + object_init_ex(&_51$$24, phalcon_db_index_ce); + zephir_array_fetch_string(&_52$$24, &index, SL("columns"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 374); + zephir_array_fetch_string(&_53$$24, &index, SL("type"), PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 376); + ZEPHIR_CALL_METHOD(NULL, &_51$$24, "__construct", &_50, 30, &name, &_52$$24, &_53$$24); + zephir_check_call_status(); + zephir_array_update_zval(&indexObjects, &name, &_51$$24, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &indexes, "next", NULL, 0); + zephir_check_call_status(); + } } - RETURN_CCTOR(&sqlUpdate); + ZEPHIR_INIT_NVAR(&index); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&indexObjects); } -zend_object *zephir_init_properties_Phalcon_Mvc_Model_Query(zend_class_entry *class_type) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, describeReferences) { - zval _0, _2, _4, _6, _8, _10, _12, _14, _16, _1$$3, _3$$4, _5$$5, _7$$6, _9$$7, _11$$8, _13$$9, _15$$10, _17$$11; + zval _14$$3, _21$$6, _27$$9, _31$$10; + zend_string *_7, *_25; + zend_ulong _6, _24; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&_2); - ZVAL_UNDEF(&_4); - ZVAL_UNDEF(&_6); - ZVAL_UNDEF(&_8); - ZVAL_UNDEF(&_10); - ZVAL_UNDEF(&_12); - ZVAL_UNDEF(&_14); - ZVAL_UNDEF(&_16); - ZVAL_UNDEF(&_1$$3); - ZVAL_UNDEF(&_3$$4); - ZVAL_UNDEF(&_5$$5); - ZVAL_UNDEF(&_7$$6); - ZVAL_UNDEF(&_9$$7); - ZVAL_UNDEF(&_11$$8); - ZVAL_UNDEF(&_13$$9); - ZVAL_UNDEF(&_15$$10); - ZVAL_UNDEF(&_17$$11); - + zephir_fcall_cache_entry *_29 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *table_param = NULL, *schema_param = NULL, references, reference, arrayReference, constraintName, referenceObjects, name, referencedSchema, referencedTable, columns, referencedColumns, number, _0, _1, _2, _3, *_4, _5, *_22, _23, _8$$5, _9$$5, _10$$5, _11$$5, _12$$3, _13$$3, _15$$8, _16$$8, _17$$8, _18$$8, _19$$6, _20$$6, _26$$9, _28$$9, _30$$10, _32$$10; + zval table, schema; + zval *this_ptr = getThis(); - ZEPHIR_MM_GROW(); - - { - zval local_this_ptr, *this_ptr = &local_this_ptr; - ZEPHIR_CREATE_OBJECT(this_ptr, class_type); - zephir_read_property_ex(&_0, this_ptr, ZEND_STRL("sqlModelsAliases"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_0) == IS_NULL) { - ZEPHIR_INIT_VAR(&_1$$3); - array_init(&_1$$3); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlModelsAliases"), &_1$$3); - } - zephir_read_property_ex(&_2, this_ptr, ZEND_STRL("sqlColumnAliases"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_2) == IS_NULL) { - ZEPHIR_INIT_VAR(&_3$$4); - array_init(&_3$$4); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlColumnAliases"), &_3$$4); - } - zephir_read_property_ex(&_4, this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_4) == IS_NULL) { - ZEPHIR_INIT_VAR(&_5$$5); - array_init(&_5$$5); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlAliasesModelsInstances"), &_5$$5); - } - zephir_read_property_ex(&_6, this_ptr, ZEND_STRL("sqlAliasesModels"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_6) == IS_NULL) { - ZEPHIR_INIT_VAR(&_7$$6); - array_init(&_7$$6); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlAliasesModels"), &_7$$6); - } - zephir_read_property_ex(&_8, this_ptr, ZEND_STRL("sqlAliases"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_8) == IS_NULL) { - ZEPHIR_INIT_VAR(&_9$$7); - array_init(&_9$$7); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("sqlAliases"), &_9$$7); - } - zephir_read_property_ex(&_10, this_ptr, ZEND_STRL("modelsInstances"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_10) == IS_NULL) { - ZEPHIR_INIT_VAR(&_11$$8); - array_init(&_11$$8); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("modelsInstances"), &_11$$8); - } - zephir_read_property_ex(&_12, this_ptr, ZEND_STRL("models"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_12) == IS_NULL) { - ZEPHIR_INIT_VAR(&_13$$9); - array_init(&_13$$9); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("models"), &_13$$9); - } - zephir_read_property_ex(&_14, this_ptr, ZEND_STRL("bindTypes"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_14) == IS_NULL) { - ZEPHIR_INIT_VAR(&_15$$10); - array_init(&_15$$10); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("bindTypes"), &_15$$10); + ZVAL_UNDEF(&table); + ZVAL_UNDEF(&schema); + ZVAL_UNDEF(&references); + ZVAL_UNDEF(&reference); + ZVAL_UNDEF(&arrayReference); + ZVAL_UNDEF(&constraintName); + ZVAL_UNDEF(&referenceObjects); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&referencedSchema); + ZVAL_UNDEF(&referencedTable); + ZVAL_UNDEF(&columns); + ZVAL_UNDEF(&referencedColumns); + ZVAL_UNDEF(&number); + ZVAL_UNDEF(&_0); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_2); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_23); + ZVAL_UNDEF(&_8$$5); + ZVAL_UNDEF(&_9$$5); + ZVAL_UNDEF(&_10$$5); + ZVAL_UNDEF(&_11$$5); + ZVAL_UNDEF(&_12$$3); + ZVAL_UNDEF(&_13$$3); + ZVAL_UNDEF(&_15$$8); + ZVAL_UNDEF(&_16$$8); + ZVAL_UNDEF(&_17$$8); + ZVAL_UNDEF(&_18$$8); + ZVAL_UNDEF(&_19$$6); + ZVAL_UNDEF(&_20$$6); + ZVAL_UNDEF(&_26$$9); + ZVAL_UNDEF(&_28$$9); + ZVAL_UNDEF(&_30$$10); + ZVAL_UNDEF(&_32$$10); + ZVAL_UNDEF(&_14$$3); + ZVAL_UNDEF(&_21$$6); + ZVAL_UNDEF(&_27$$9); + ZVAL_UNDEF(&_31$$10); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STR(table) + Z_PARAM_OPTIONAL + Z_PARAM_STR_OR_NULL(schema) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 1, 1, &table_param, &schema_param); + if (UNEXPECTED(Z_TYPE_P(table_param) != IS_STRING && Z_TYPE_P(table_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'table' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(table_param) == IS_STRING)) { + zephir_get_strval(&table, table_param); + } else { + ZEPHIR_INIT_VAR(&table); + } + if (!schema_param) { + ZEPHIR_INIT_VAR(&schema); + } else { + if (UNEXPECTED(Z_TYPE_P(schema_param) != IS_STRING && Z_TYPE_P(schema_param) != IS_NULL)) { + zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'schema' must be of the type string")); + RETURN_MM_NULL(); + } + if (EXPECTED(Z_TYPE_P(schema_param) == IS_STRING)) { + zephir_get_strval(&schema, schema_param); + } else { + ZEPHIR_INIT_VAR(&schema); + } + } + + + ZEPHIR_INIT_VAR(&references); + array_init(&references); + zephir_read_property(&_1, this_ptr, ZEND_STRL("dialect"), PH_NOISY_CC | PH_READONLY); + ZEPHIR_CALL_METHOD(&_2, &_1, "describereferences", NULL, 0, &table, &schema); + zephir_check_call_status(); + ZVAL_LONG(&_3, 3); + ZEPHIR_CALL_METHOD(&_0, this_ptr, "fetchall", NULL, 0, &_2, &_3); + zephir_check_call_status(); + zephir_is_iterable(&_0, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 419); + if (Z_TYPE_P(&_0) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&_0), _6, _7, _4) + { + ZEPHIR_INIT_NVAR(&number); + if (_7 != NULL) { + ZVAL_STR_COPY(&number, _7); + } else { + ZVAL_LONG(&number, _6); + } + ZEPHIR_INIT_NVAR(&reference); + ZVAL_COPY(&reference, _4); + ZEPHIR_INIT_NVAR(&constraintName); + ZEPHIR_CONCAT_SV(&constraintName, "foreign_key_", &number); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_INIT_NVAR(&referencedSchema); + ZVAL_NULL(&referencedSchema); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 398); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); + } else { + zephir_array_fetch(&_8$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 402); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_8$$5, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 402); + zephir_array_fetch(&_9$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 403); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_9$$5, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 403); + zephir_array_fetch(&_10$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 404); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_10$$5, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 404); + zephir_array_fetch(&_11$$5, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 405); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_11$$5, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 405); + } + zephir_array_fetch_long(&_12$$3, &reference, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 408); + zephir_array_append(&columns, &_12$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 408); + zephir_array_fetch_long(&_13$$3, &reference, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 409); + zephir_array_append(&referencedColumns, &_13$$3, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 409); + ZEPHIR_INIT_NVAR(&_14$$3); + zephir_create_array(&_14$$3, 4, 0); + zephir_array_update_string(&_14$$3, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_14$$3, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_14$$3, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &_0, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_5, &_0, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_5)) { + break; + } + ZEPHIR_CALL_METHOD(&number, &_0, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&reference, &_0, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&constraintName); + ZEPHIR_CONCAT_SV(&constraintName, "foreign_key_", &number); + if (!(zephir_array_isset(&references, &constraintName))) { + ZEPHIR_INIT_NVAR(&referencedSchema); + ZVAL_NULL(&referencedSchema); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_long(&referencedTable, &reference, 2, PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 398); + ZEPHIR_INIT_NVAR(&columns); + array_init(&columns); + ZEPHIR_INIT_NVAR(&referencedColumns); + array_init(&referencedColumns); + } else { + zephir_array_fetch(&_15$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 402); + ZEPHIR_OBS_NVAR(&referencedSchema); + zephir_array_fetch_string(&referencedSchema, &_15$$8, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 402); + zephir_array_fetch(&_16$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 403); + ZEPHIR_OBS_NVAR(&referencedTable); + zephir_array_fetch_string(&referencedTable, &_16$$8, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 403); + zephir_array_fetch(&_17$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 404); + ZEPHIR_OBS_NVAR(&columns); + zephir_array_fetch_string(&columns, &_17$$8, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 404); + zephir_array_fetch(&_18$$8, &references, &constraintName, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 405); + ZEPHIR_OBS_NVAR(&referencedColumns); + zephir_array_fetch_string(&referencedColumns, &_18$$8, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 405); + } + zephir_array_fetch_long(&_19$$6, &reference, 3, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 408); + zephir_array_append(&columns, &_19$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 408); + zephir_array_fetch_long(&_20$$6, &reference, 4, PH_NOISY | PH_READONLY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 409); + zephir_array_append(&referencedColumns, &_20$$6, PH_SEPARATE, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 409); + ZEPHIR_INIT_NVAR(&_21$$6); + zephir_create_array(&_21$$6, 4, 0); + zephir_array_update_string(&_21$$6, SL("referencedSchema"), &referencedSchema, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_21$$6, SL("referencedTable"), &referencedTable, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_21$$6, SL("columns"), &columns, PH_COPY | PH_SEPARATE); + zephir_array_update_string(&_21$$6, SL("referencedColumns"), &referencedColumns, PH_COPY | PH_SEPARATE); + zephir_array_update_zval(&references, &constraintName, &_21$$6, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_0, "next", NULL, 0); + zephir_check_call_status(); } - zephir_read_property_ex(&_16, this_ptr, ZEND_STRL("bindParams"), PH_NOISY_CC | PH_READONLY); - if (Z_TYPE_P(&_16) == IS_NULL) { - ZEPHIR_INIT_VAR(&_17$$11); - array_init(&_17$$11); - zephir_update_property_zval_ex(this_ptr, ZEND_STRL("bindParams"), &_17$$11); + } + ZEPHIR_INIT_NVAR(&reference); + ZEPHIR_INIT_NVAR(&number); + ZEPHIR_INIT_VAR(&referenceObjects); + array_init(&referenceObjects); + zephir_is_iterable(&references, 0, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 433); + if (Z_TYPE_P(&references) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&references), _24, _25, _22) + { + ZEPHIR_INIT_NVAR(&name); + if (_25 != NULL) { + ZVAL_STR_COPY(&name, _25); + } else { + ZVAL_LONG(&name, _24); + } + ZEPHIR_INIT_NVAR(&arrayReference); + ZVAL_COPY(&arrayReference, _22); + ZEPHIR_INIT_NVAR(&_26$$9); + object_init_ex(&_26$$9, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_27$$9); + zephir_create_array(&_27$$9, 4, 0); + ZEPHIR_OBS_NVAR(&_28$$9); + zephir_array_fetch_string(&_28$$9, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 425); + zephir_array_update_string(&_27$$9, SL("referencedSchema"), &_28$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_28$$9); + zephir_array_fetch_string(&_28$$9, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 426); + zephir_array_update_string(&_27$$9, SL("referencedTable"), &_28$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_28$$9); + zephir_array_fetch_string(&_28$$9, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 427); + zephir_array_update_string(&_27$$9, SL("columns"), &_28$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_28$$9); + zephir_array_fetch_string(&_28$$9, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 429); + zephir_array_update_string(&_27$$9, SL("referencedColumns"), &_28$$9, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_26$$9, "__construct", &_29, 31, &name, &_27$$9); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_26$$9, PH_COPY | PH_SEPARATE); + } ZEND_HASH_FOREACH_END(); + } else { + ZEPHIR_CALL_METHOD(NULL, &references, "rewind", NULL, 0); + zephir_check_call_status(); + while (1) { + ZEPHIR_CALL_METHOD(&_23, &references, "valid", NULL, 0); + zephir_check_call_status(); + if (!zend_is_true(&_23)) { + break; + } + ZEPHIR_CALL_METHOD(&name, &references, "key", NULL, 0); + zephir_check_call_status(); + ZEPHIR_CALL_METHOD(&arrayReference, &references, "current", NULL, 0); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_30$$10); + object_init_ex(&_30$$10, phalcon_db_reference_ce); + ZEPHIR_INIT_NVAR(&_31$$10); + zephir_create_array(&_31$$10, 4, 0); + ZEPHIR_OBS_NVAR(&_32$$10); + zephir_array_fetch_string(&_32$$10, &arrayReference, SL("referencedSchema"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 425); + zephir_array_update_string(&_31$$10, SL("referencedSchema"), &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_32$$10); + zephir_array_fetch_string(&_32$$10, &arrayReference, SL("referencedTable"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 426); + zephir_array_update_string(&_31$$10, SL("referencedTable"), &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_32$$10); + zephir_array_fetch_string(&_32$$10, &arrayReference, SL("columns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 427); + zephir_array_update_string(&_31$$10, SL("columns"), &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_OBS_NVAR(&_32$$10); + zephir_array_fetch_string(&_32$$10, &arrayReference, SL("referencedColumns"), PH_NOISY, "phalcon/Db/Adapter/Pdo/Sqlite.zep", 429); + zephir_array_update_string(&_31$$10, SL("referencedColumns"), &_32$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &_30$$10, "__construct", &_29, 31, &name, &_31$$10); + zephir_check_call_status(); + zephir_array_update_zval(&referenceObjects, &name, &_30$$10, PH_COPY | PH_SEPARATE); + ZEPHIR_CALL_METHOD(NULL, &references, "next", NULL, 0); + zephir_check_call_status(); } - ZEPHIR_MM_RESTORE(); - return Z_OBJ_P(this_ptr); } + ZEPHIR_INIT_NVAR(&arrayReference); + ZEPHIR_INIT_NVAR(&name); + RETURN_CCTOR(&referenceObjects); } +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, getDefaultValue) +{ + zval _0; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval *this_ptr = getThis(); + + ZVAL_UNDEF(&_0); + ZEPHIR_MM_GROW(); -#ifdef HAVE_CONFIG_H -#endif + object_init_ex(return_value, phalcon_db_rawvalue_ce); + ZEPHIR_INIT_VAR(&_0); + ZVAL_STRING(&_0, "NULL"); + ZEPHIR_CALL_METHOD(NULL, return_value, "__construct", NULL, 32, &_0); + zephir_check_call_status(); + RETURN_MM(); +} +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, useExplicitIdValue) +{ + zval *this_ptr = getThis(); + RETURN_BOOL(1); +} -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_QueryInterface) +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, supportsDefaultValue) { - ZEPHIR_REGISTER_INTERFACE(Phalcon\\Mvc\\Model, QueryInterface, phalcon, mvc_model_queryinterface, phalcon_mvc_model_queryinterface_method_entry); + zval *this_ptr = getThis(); - return SUCCESS; + + + RETURN_BOOL(0); +} + +static PHP_METHOD(Phalcon_Db_Adapter_Pdo_Sqlite, getDsnDefaults) +{ + zval *this_ptr = getThis(); + + + + array_init(return_value); + return; } -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, cache); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, execute); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getBindParams); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getCacheOptions); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getBindTypes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getSql); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getSingleResult); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, getUniqueRow); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, parse); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, setBindParams); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, setBindTypes); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, setSharedLock); -ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, setUniqueRow); @@ -70721,1058 +64933,1519 @@ ZEPHIR_DOC_METHOD(Phalcon_Mvc_Model_QueryInterface, setUniqueRow); -ZEPHIR_INIT_CLASS(Phalcon_Mvc_Model_Relation) +ZEPHIR_INIT_CLASS(Phalcon_Tag_Exception) { - ZEPHIR_REGISTER_CLASS(Phalcon\\Mvc\\Model, Relation, phalcon, mvc_model_relation, phalcon_mvc_model_relation_method_entry, 0); + ZEPHIR_REGISTER_CLASS_EX(Phalcon\\Tag, Exception, phalcon, tag_exception, zend_ce_exception, NULL, 0); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("fields"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("intermediateFields"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("intermediateModel"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("intermediateReferencedFields"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("options"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("referencedFields"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("referencedModel"), ZEND_ACC_PROTECTED); - zend_declare_property_null(phalcon_mvc_model_relation_ce, SL("type"), ZEND_ACC_PROTECTED); - phalcon_mvc_model_relation_ce->create_object = zephir_init_properties_Phalcon_Mvc_Model_Relation; - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("ACTION_CASCADE"), 2); + return SUCCESS; +} - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("ACTION_RESTRICT"), 1); - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("BELONGS_TO"), 0); - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("HAS_MANY"), 2); - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("HAS_MANY_THROUGH"), 4); +#ifdef HAVE_CONFIG_H +#endif - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("HAS_ONE"), 1); - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("HAS_ONE_THROUGH"), 3); - zephir_declare_class_constant_long(phalcon_mvc_model_relation_ce, SL("NO_ACTION"), 0); - zend_class_implements(phalcon_mvc_model_relation_ce, 1, phalcon_mvc_model_relationinterface_ce); + +ZEPHIR_INIT_CLASS(Phalcon_Tag_Select) +{ + ZEPHIR_REGISTER_CLASS(Phalcon\\Tag, Select, phalcon, tag_select, phalcon_tag_select_method_entry, ZEND_ACC_EXPLICIT_ABSTRACT_CLASS); + return SUCCESS; } -static PHP_METHOD(Phalcon_Mvc_Model_Relation, __construct) +static PHP_METHOD(Phalcon_Tag_Select, selectField) { + zend_bool _2$$19; zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; - zval options; - zval referencedModel; - zval *type_param = NULL, *referencedModel_param = NULL, *fields, fields_sub, *referencedFields, referencedFields_sub, *options_param = NULL, _0; - zend_long type; + zend_long ZEPHIR_LAST_CALL_STATUS; + zephir_fcall_cache_entry *_1 = NULL, *_4 = NULL, *_9 = NULL, *_13 = NULL; + zval *parameters, parameters_sub, *data = NULL, data_sub, __$null, params, name, id, value, useEmpty, code, emptyValue, emptyText, options, using, _3, _5, _0$$5, _6$$22, _7$$22, _8$$23, _10$$23, _11$$23, _12$$25, _14$$25, _15$$25; zval *this_ptr = getThis(); - ZVAL_UNDEF(&fields_sub); - ZVAL_UNDEF(&referencedFields_sub); - ZVAL_UNDEF(&_0); - ZVAL_UNDEF(&referencedModel); + ZVAL_UNDEF(¶meters_sub); + ZVAL_UNDEF(&data_sub); + ZVAL_NULL(&__$null); + ZVAL_UNDEF(¶ms); + ZVAL_UNDEF(&name); + ZVAL_UNDEF(&id); + ZVAL_UNDEF(&value); + ZVAL_UNDEF(&useEmpty); + ZVAL_UNDEF(&code); + ZVAL_UNDEF(&emptyValue); + ZVAL_UNDEF(&emptyText); ZVAL_UNDEF(&options); + ZVAL_UNDEF(&using); + ZVAL_UNDEF(&_3); + ZVAL_UNDEF(&_5); + ZVAL_UNDEF(&_0$$5); + ZVAL_UNDEF(&_6$$22); + ZVAL_UNDEF(&_7$$22); + ZVAL_UNDEF(&_8$$23); + ZVAL_UNDEF(&_10$$23); + ZVAL_UNDEF(&_11$$23); + ZVAL_UNDEF(&_12$$25); + ZVAL_UNDEF(&_14$$25); + ZVAL_UNDEF(&_15$$25); #if PHP_VERSION_ID >= 80000 bool is_null_true = 1; - ZEND_PARSE_PARAMETERS_START(4, 5) - Z_PARAM_LONG(type) - Z_PARAM_STR(referencedModel) - Z_PARAM_ZVAL(fields) - Z_PARAM_ZVAL(referencedFields) + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_ZVAL(parameters) Z_PARAM_OPTIONAL - Z_PARAM_ARRAY(options) + Z_PARAM_ZVAL_OR_NULL(data) ZEND_PARSE_PARAMETERS_END(); #endif ZEPHIR_MM_GROW(); - zephir_fetch_params(1, 4, 1, &type_param, &referencedModel_param, &fields, &referencedFields, &options_param); - type = zephir_get_intval(type_param); - if (UNEXPECTED(Z_TYPE_P(referencedModel_param) != IS_STRING && Z_TYPE_P(referencedModel_param) != IS_NULL)) { - zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'referencedModel' must be of the type string")); - RETURN_MM_NULL(); + zephir_fetch_params(1, 1, 1, ¶meters, &data); + if (!data) { + data = &data_sub; + data = &__$null; } - if (EXPECTED(Z_TYPE_P(referencedModel_param) == IS_STRING)) { - zephir_get_strval(&referencedModel, referencedModel_param); + + + if (Z_TYPE_P(parameters) != IS_ARRAY) { + ZEPHIR_INIT_VAR(¶ms); + zephir_create_array(¶ms, 2, 0); + zephir_array_fast_append(¶ms, parameters); + zephir_array_fast_append(¶ms, data); } else { - ZEPHIR_INIT_VAR(&referencedModel); + ZEPHIR_CPY_WRT(¶ms, parameters); } - if (!options_param) { - ZEPHIR_INIT_VAR(&options); - array_init(&options); + ZEPHIR_OBS_VAR(&id); + if (!(zephir_array_isset_long_fetch(&id, ¶ms, 0, 0))) { + zephir_array_fetch_string(&_0$$5, ¶ms, SL("id"), PH_NOISY | PH_READONLY, "phalcon/Tag/Select.zep", 50); + zephir_array_update_long(¶ms, 0, &_0$$5, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); + } + if (!(zephir_memnstr_str(&id, SL("["), "phalcon/Tag/Select.zep", 56))) { + if (!(zephir_array_isset_string(¶ms, SL("id")))) { + zephir_array_update_string(¶ms, SL("id"), &id, PH_COPY | PH_SEPARATE); + } + } + ZEPHIR_OBS_VAR(&name); + if (!(zephir_array_isset_string_fetch(&name, ¶ms, SL("name"), 0))) { + zephir_array_update_string(¶ms, SL("name"), &id, PH_COPY | PH_SEPARATE); } else { - zephir_get_arrval(&options, options_param); + if (!(zephir_is_true(&name))) { + zephir_array_update_string(¶ms, SL("name"), &id, PH_COPY | PH_SEPARATE); + } } - - - ZEPHIR_INIT_ZVAL_NREF(_0); - ZVAL_LONG(&_0, type); - zephir_update_property_zval(this_ptr, ZEND_STRL("type"), &_0); - zephir_update_property_zval(this_ptr, ZEND_STRL("referencedModel"), &referencedModel); - zephir_update_property_zval(this_ptr, ZEND_STRL("fields"), fields); - zephir_update_property_zval(this_ptr, ZEND_STRL("referencedFields"), referencedFields); - zephir_update_property_zval(this_ptr, ZEND_STRL("options"), &options); - ZEPHIR_MM_RESTORE(); + ZEPHIR_OBS_VAR(&value); + if (!(zephir_array_isset_string_fetch(&value, ¶ms, SL("value"), 0))) { + ZEPHIR_CALL_CE_STATIC(&value, phalcon_tag_ce, "getvalue", &_1, 0, &id, ¶ms); + zephir_check_call_status(); + } else { + zephir_array_unset_string(¶ms, SL("value"), PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&useEmpty); + if (zephir_array_isset_string_fetch(&useEmpty, ¶ms, SL("useEmpty"), 0)) { + ZEPHIR_OBS_VAR(&emptyValue); + if (!(zephir_array_isset_string_fetch(&emptyValue, ¶ms, SL("emptyValue"), 0))) { + ZEPHIR_INIT_NVAR(&emptyValue); + ZVAL_STRING(&emptyValue, ""); + } else { + zephir_array_unset_string(¶ms, SL("emptyValue"), PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&emptyText); + if (!(zephir_array_isset_string_fetch(&emptyText, ¶ms, SL("emptyText"), 0))) { + ZEPHIR_INIT_NVAR(&emptyText); + ZVAL_STRING(&emptyText, "Choose..."); + } else { + zephir_array_unset_string(¶ms, SL("emptyText"), PH_SEPARATE); + } + zephir_array_unset_string(¶ms, SL("useEmpty"), PH_SEPARATE); + } + ZEPHIR_OBS_VAR(&options); + if (!(zephir_array_isset_long_fetch(&options, ¶ms, 1, 0))) { + ZEPHIR_CPY_WRT(&options, data); + } + if (Z_TYPE_P(&options) == IS_OBJECT) { + ZEPHIR_OBS_VAR(&using); + if (UNEXPECTED(!(zephir_array_isset_string_fetch(&using, ¶ms, SL("using"), 0)))) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_tag_exception_ce, "The 'using' parameter is required", "phalcon/Tag/Select.zep", 101); + return; + } + _2$$19 = Z_TYPE_P(&using) != IS_ARRAY; + if (_2$$19) { + _2$$19 = Z_TYPE_P(&using) != IS_OBJECT; + } + if (UNEXPECTED(_2$$19)) { + ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_tag_exception_ce, "The 'using' parameter should be an array", "phalcon/Tag/Select.zep", 107); + return; + } + } + zephir_array_unset_string(¶ms, SL("using"), PH_SEPARATE); + ZEPHIR_INIT_VAR(&_5); + ZVAL_STRING(&_5, "", &_5); + if (zephir_is_true(&useEmpty)) { + ZEPHIR_INIT_VAR(&_6$$22); + ZEPHIR_GET_CONSTANT(&_6$$22, "PHP_EOL"); + ZEPHIR_INIT_VAR(&_7$$22); + ZEPHIR_CONCAT_SVSVSV(&_7$$22, "\t", &_6$$22); + zephir_concat_self(&code, &_7$$22); + } + if (Z_TYPE_P(&options) == IS_OBJECT) { + ZEPHIR_INIT_VAR(&_10$$23); + ZEPHIR_GET_CONSTANT(&_10$$23, "PHP_EOL"); + ZEPHIR_INIT_VAR(&_11$$23); + ZEPHIR_CONCAT_SV(&_11$$23, "", &_10$$23); + ZEPHIR_CALL_SELF(&_8$$23, "optionsfromresultset", &_9, 0, &options, &using, &value, &_11$$23); + zephir_check_call_status(); + zephir_concat_self(&code, &_8$$23); + } else { + if (Z_TYPE_P(&options) == IS_ARRAY) { + ZEPHIR_INIT_VAR(&_14$$25); + ZEPHIR_GET_CONSTANT(&_14$$25, "PHP_EOL"); + ZEPHIR_INIT_VAR(&_15$$25); + ZEPHIR_CONCAT_SV(&_15$$25, "", &_14$$25); + ZEPHIR_CALL_SELF(&_12$$25, "optionsfromarray", &_13, 0, &options, &value, &_15$$25); + zephir_check_call_status(); + zephir_concat_self(&code, &_12$$25); + } + } + zephir_concat_self_str(&code, SL("")); + RETURN_CCTOR(&code); } -static PHP_METHOD(Phalcon_Mvc_Model_Relation, getFields) +static PHP_METHOD(Phalcon_Tag_Select, optionsFromArray) { + zend_string *_3; + zend_ulong _2; + zephir_method_globals *ZEPHIR_METHOD_GLOBALS_PTR = NULL; + zephir_fcall_cache_entry *_4 = NULL, *_7 = NULL; + zend_long ZEPHIR_LAST_CALL_STATUS; + zval closeOption, _12$$8, _13$$8, _22$$16, _23$$16; + zval *data_param = NULL, *value, value_sub, *closeOption_param = NULL, strValue, strOptionValue, code, optionValue, optionText, escaped, *_0, _1, _5$$4, _6$$4, _8$$4, _9$$4, _10$$6, _11$$7, _14$$9, _15$$10, _16$$12, _17$$12, _18$$12, _19$$12, _20$$14, _21$$15, _24$$17, _25$$18; + zval data; zval *this_ptr = getThis(); + ZVAL_UNDEF(&data); + ZVAL_UNDEF(&value_sub); + ZVAL_UNDEF(&strValue); + ZVAL_UNDEF(&strOptionValue); + ZVAL_UNDEF(&code); + ZVAL_UNDEF(&optionValue); + ZVAL_UNDEF(&optionText); + ZVAL_UNDEF(&escaped); + ZVAL_UNDEF(&_1); + ZVAL_UNDEF(&_5$$4); + ZVAL_UNDEF(&_6$$4); + ZVAL_UNDEF(&_8$$4); + ZVAL_UNDEF(&_9$$4); + ZVAL_UNDEF(&_10$$6); + ZVAL_UNDEF(&_11$$7); + ZVAL_UNDEF(&_14$$9); + ZVAL_UNDEF(&_15$$10); + ZVAL_UNDEF(&_16$$12); + ZVAL_UNDEF(&_17$$12); + ZVAL_UNDEF(&_18$$12); + ZVAL_UNDEF(&_19$$12); + ZVAL_UNDEF(&_20$$14); + ZVAL_UNDEF(&_21$$15); + ZVAL_UNDEF(&_24$$17); + ZVAL_UNDEF(&_25$$18); + ZVAL_UNDEF(&closeOption); + ZVAL_UNDEF(&_12$$8); + ZVAL_UNDEF(&_13$$8); + ZVAL_UNDEF(&_22$$16); + ZVAL_UNDEF(&_23$$16); +#if PHP_VERSION_ID >= 80000 + bool is_null_true = 1; + ZEND_PARSE_PARAMETERS_START(3, 3) + Z_PARAM_ARRAY(data) + Z_PARAM_ZVAL(value) + Z_PARAM_STR(closeOption) + ZEND_PARSE_PARAMETERS_END(); +#endif + + + ZEPHIR_MM_GROW(); + zephir_fetch_params(1, 3, 0, &data_param, &value, &closeOption_param); + zephir_get_arrval(&data, data_param); + zephir_get_strval(&closeOption, closeOption_param); - RETURN_MEMBER(getThis(), "fields"); + ZEPHIR_INIT_VAR(&code); + ZVAL_STRING(&code, ""); + zephir_is_iterable(&data, 0, "phalcon/Tag/Select.zep", 186); + if (Z_TYPE_P(&data) == IS_ARRAY) { + ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(&data), _2, _3, _0) + { + ZEPHIR_INIT_NVAR(&optionValue); + if (_3 != NULL) { + ZVAL_STR_COPY(&optionValue, _3); + } else { + ZVAL_LONG(&optionValue, _2); + } + ZEPHIR_INIT_NVAR(&optionText); + ZVAL_COPY(&optionText, _0); + ZEPHIR_CALL_FUNCTION(&escaped, "htmlspecialchars", &_4, 284, &optionValue); + zephir_check_call_status(); + if (Z_TYPE_P(&optionText) == IS_ARRAY) { + ZEPHIR_INIT_NVAR(&_5$$4); + ZEPHIR_GET_CONSTANT(&_5$$4, "PHP_EOL"); + ZEPHIR_CALL_SELF(&_6$$4, "optionsfromarray", &_7, 0, &optionText, value, &closeOption); + zephir_check_call_status(); + ZEPHIR_INIT_NVAR(&_8$$4); + ZEPHIR_GET_CONSTANT(&_8$$4, "PHP_EOL"); + ZEPHIR_INIT_NVAR(&_9$$4); + ZEPHIR_CONCAT_SVSVVSV(&_9$$4, "\t", &_5$$4, &_6$$4, "\t", &_8$$4); + zephir_concat_self(&code, &_9$$4); + continue; + } + if (Z_TYPE_P(value) == IS_ARRAY) { + if (zephir_fast_in_array(&optionValue, value)) { + ZEPHIR_INIT_NVAR(&_10$$6); + ZEPHIR_CONCAT_SVSVV(&_10$$6, "\t", &_16$$12, &_17$$12, "\t", &_18$$12); + zephir_concat_self(&code, &_19$$12); + continue; + } + if (Z_TYPE_P(value) == IS_ARRAY) { + if (zephir_fast_in_array(&optionValue, value)) { + ZEPHIR_INIT_NVAR(&_20$$14); + ZEPHIR_CONCAT_SVSVV(&_20$$14, "\t