/** * Delete rows where $column = $key in $table * return the number of affected rows */ PHP_METHOD(Lynx_DBAL_Connection, deleteByColumn) { int ZEPHIR_LAST_CALL_STATUS; zval *table_param = NULL, *column_param = NULL, *value, *type_param = NULL, *_0, *_1, *_2 = NULL, *_3; zval *table = NULL, *column = NULL, *type = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 3, 1, &table_param, &column_param, &value, &type_param); if (unlikely(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 a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(table_param) == IS_STRING)) { zephir_get_strval(table, table_param); } else { ZEPHIR_INIT_VAR(table); ZVAL_EMPTY_STRING(table); } if (unlikely(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 a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(column_param) == IS_STRING)) { zephir_get_strval(column, column_param); } else { ZEPHIR_INIT_VAR(column); ZVAL_EMPTY_STRING(column); } if (!type_param) { ZEPHIR_INIT_VAR(type); ZVAL_EMPTY_STRING(type); } else { if (unlikely(Z_TYPE_P(type_param) != IS_STRING && Z_TYPE_P(type_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'type' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(type_param) == IS_STRING)) { zephir_get_strval(type, type_param); } else { ZEPHIR_INIT_VAR(type); ZVAL_EMPTY_STRING(type); } } _0 = zephir_fetch_nproperty_this(this_ptr, SL("driver"), PH_NOISY_CC); _1 = zephir_fetch_nproperty_this(this_ptr, SL("platform"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(&_2, _1, "wrap", NULL, table); zephir_check_call_status(); ZEPHIR_INIT_VAR(_3); ZEPHIR_CONCAT_SVSVSV(_3, "DELETE FROM ", _2, " WHERE ", column, " = ", value); ZEPHIR_RETURN_CALL_METHOD(_0, "execute", NULL, _3); zephir_check_call_status(); RETURN_MM(); }
/** * Creates a password hash using bcrypt with a pseudo random salt */ PHP_METHOD(Phalcon_Security, hash) { zephir_nts_static zephir_fcall_cache_entry *_6 = NULL, *_8 = NULL; zephir_fcall_cache_entry *_2 = NULL; int workFactor, hash, ZEPHIR_LAST_CALL_STATUS; zval *password_param = NULL, *workFactor_param = NULL, *saltBytes = NULL, *_0 = NULL, *_1 = NULL, _3, _4, *_5 = NULL, *_7; zval *password = NULL, *variant = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 1, &password_param, &workFactor_param); zephir_get_strval(password, password_param); if (!workFactor_param) { workFactor = 0; } else { workFactor = zephir_get_intval(workFactor_param); } if (!(workFactor)) { ZEPHIR_OBS_VAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_workFactor"), PH_NOISY_CC); workFactor = zephir_get_intval(_0); } ZEPHIR_OBS_NVAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_defaultHash"), PH_NOISY_CC); hash = zephir_get_intval(_0); do { if (hash == 5) { ZEPHIR_INIT_VAR(variant); ZVAL_STRING(variant, "x", 1); break; } if (hash == 6) { ZEPHIR_INIT_NVAR(variant); ZVAL_STRING(variant, "y", 1); break; } if (hash == 7) { ZEPHIR_INIT_NVAR(variant); ZVAL_STRING(variant, "5", 1); break; } if (hash == 8) { ZEPHIR_INIT_NVAR(variant); ZVAL_STRING(variant, "6", 1); break; } ZEPHIR_INIT_NVAR(variant); ZVAL_STRING(variant, "a", 1); break; } while(0); do { if (hash == 1) { ZEPHIR_INIT_VAR(_1); ZVAL_LONG(_1, 2); ZEPHIR_CALL_METHOD(&saltBytes, this_ptr, "getsaltbytes", &_2, _1); zephir_check_call_status(); if (Z_TYPE_P(saltBytes) != IS_STRING) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_security_exception_ce, "Unable to get random bytes for the salt", "phalcon/security.zep", 195); return; } break; } ZEPHIR_INIT_NVAR(_1); ZVAL_LONG(_1, 22); ZEPHIR_CALL_METHOD(&saltBytes, this_ptr, "getsaltbytes", &_2, _1); zephir_check_call_status(); if (Z_TYPE_P(saltBytes) != IS_STRING) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_security_exception_ce, "Unable to get random bytes for the salt", "phalcon/security.zep", 218); return; } if (workFactor < 4) { workFactor = 4; } else { if (workFactor > 31) { workFactor = 31; } } ZEPHIR_SINIT_VAR(_3); ZVAL_STRING(&_3, "%02s", 0); ZEPHIR_SINIT_VAR(_4); ZVAL_LONG(&_4, workFactor); ZEPHIR_CALL_FUNCTION(&_5, "sprintf", &_6, &_3, &_4); zephir_check_call_status(); ZEPHIR_INIT_VAR(_7); ZEPHIR_CONCAT_SVSVSV(_7, "$2", variant, "$", _5, "$", saltBytes); ZEPHIR_RETURN_CALL_FUNCTION("crypt", &_8, password, _7); zephir_check_call_status(); RETURN_MM(); } while(0); RETURN_MM_STRING("", 1); }
/** * Outputs a message formatting it with HTML * *<code> * $flash->outputMessage('error', message); *</code> * * @param string|array message * @return string|void */ PHP_METHOD(Phalcon_Flash, outputMessage) { HashTable *_3$$8; HashPosition _2$$8; zend_bool automaticHtml = 0, implicitFlush = 0; zval *type_param = NULL, *message, *content = NULL, *cssClasses = NULL, *classes = NULL, *typeClasses = NULL, *eol = NULL, *msg = NULL, *htmlMessage = NULL, *_0 = NULL, *_1$$5, **_4$$8; zval *type = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 2, 0, &type_param, &message); zephir_get_strval(type, type_param); ZEPHIR_OBS_VAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_automaticHtml"), PH_NOISY_CC); automaticHtml = zephir_get_boolval(_0); if (automaticHtml == 1) { ZEPHIR_OBS_VAR(classes); zephir_read_property_this(&classes, this_ptr, SL("_cssClasses"), PH_NOISY_CC); ZEPHIR_OBS_VAR(typeClasses); if (zephir_array_isset_fetch(&typeClasses, classes, type, 0 TSRMLS_CC)) { ZEPHIR_INIT_VAR(cssClasses); if (Z_TYPE_P(typeClasses) == IS_ARRAY) { ZEPHIR_INIT_VAR(_1$$5); zephir_fast_join_str(_1$$5, SL(" "), typeClasses TSRMLS_CC); ZEPHIR_CONCAT_SVS(cssClasses, " class=\"", _1$$5, "\""); } else { ZEPHIR_CONCAT_SVS(cssClasses, " class=\"", typeClasses, "\""); } } else { ZEPHIR_INIT_NVAR(cssClasses); ZVAL_STRING(cssClasses, "", 1); } ZEPHIR_INIT_VAR(eol); ZEPHIR_GET_CONSTANT(eol, "PHP_EOL"); } ZEPHIR_OBS_NVAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_implicitFlush"), PH_NOISY_CC); implicitFlush = zephir_get_boolval(_0); if (Z_TYPE_P(message) == IS_ARRAY) { if (implicitFlush == 0) { ZEPHIR_INIT_VAR(content); ZVAL_STRING(content, "", 1); } zephir_is_iterable(message, &_3$$8, &_2$$8, 0, 0, "phalcon/flash.zep", 204); for ( ; zephir_hash_get_current_data_ex(_3$$8, (void**) &_4$$8, &_2$$8) == SUCCESS ; zephir_hash_move_forward_ex(_3$$8, &_2$$8) ) { ZEPHIR_GET_HVALUE(msg, _4$$8); if (automaticHtml == 1) { ZEPHIR_INIT_NVAR(htmlMessage); ZEPHIR_CONCAT_SVSVSV(htmlMessage, "<div", cssClasses, ">", msg, "</div>", eol); } else { ZEPHIR_CPY_WRT(htmlMessage, msg); } if (implicitFlush == 1) { zend_print_zval(htmlMessage, 0); } else { zephir_concat_self(&content, htmlMessage TSRMLS_CC); zephir_update_property_array_append(this_ptr, SL("_messages"), htmlMessage TSRMLS_CC); } } if (implicitFlush == 0) { RETURN_CCTOR(content); } } else { if (automaticHtml == 1) { ZEPHIR_INIT_NVAR(htmlMessage); ZEPHIR_CONCAT_SVSVSV(htmlMessage, "<div", cssClasses, ">", message, "</div>", eol); } else { ZEPHIR_CPY_WRT(htmlMessage, message); } if (implicitFlush == 1) { zend_print_zval(htmlMessage, 0); } else { zephir_update_property_array_append(this_ptr, SL("_messages"), htmlMessage TSRMLS_CC); RETURN_CCTOR(htmlMessage); } } ZEPHIR_MM_RESTORE(); }
PHP_METHOD(PhalconPlus_RPC_Server_AbstractServer, callByParams) { zend_class_entry *_10, *_17; zephir_nts_static zephir_fcall_cache_entry *_5 = NULL, *_7 = NULL, *_13 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *_3 = NULL, *_18, *_19; zend_bool _2; zval *service_param = NULL, *method_param = NULL, *request = NULL, *rawData, *serviceClass = NULL, *_0 = NULL, *_1, *tmp = NULL, *param, *paramClass = NULL, *_4 = NULL, *_6 = NULL, *_8 = NULL, *_9 = NULL, *_11 = NULL, *_12 = NULL, *_14, *_15, *serviceObj, *response = NULL, *e = NULL, *_16 = NULL, *_20; zval *service = NULL, *method = NULL, *_21; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 4, 0, &service_param, &method_param, &request, &rawData); if (unlikely(Z_TYPE_P(service_param) != IS_STRING && Z_TYPE_P(service_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'service' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(service_param) == IS_STRING)) { zephir_get_strval(service, service_param); } else { ZEPHIR_INIT_VAR(service); ZVAL_EMPTY_STRING(service); } if (unlikely(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 a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(method_param) == IS_STRING)) { zephir_get_strval(method, method_param); } else { ZEPHIR_INIT_VAR(method); ZVAL_EMPTY_STRING(method); } ZEPHIR_INIT_VAR(serviceClass); ZVAL_STRING(serviceClass, "", 1); ZEPHIR_INIT_VAR(tmp); array_init(tmp); ZEPHIR_INIT_VAR(_1); zephir_ucfirst(_1, service); ZEPHIR_INIT_NVAR(serviceClass); ZEPHIR_CONCAT_VS(serviceClass, _1, "Service"); _2 = Z_TYPE_P(request) == IS_OBJECT; if (_2) { _2 = zephir_instance_of_ev(request, phalconplus_base_protobuffer_ce TSRMLS_CC); } if (_2) { zephir_update_property_this(this_ptr, SL("phpOnly"), (1) ? ZEPHIR_GLOBAL(global_true) : ZEPHIR_GLOBAL(global_false) TSRMLS_CC); } else if (Z_TYPE_P(request) == IS_ARRAY) { ZEPHIR_CPY_WRT(tmp, request); ZEPHIR_INIT_VAR(param); object_init_ex(param, zephir_get_internal_ce(SS("reflectionparameter") TSRMLS_CC)); ZEPHIR_INIT_VAR(_3); zephir_create_array(_3, 2, 0 TSRMLS_CC); zephir_array_fast_append(_3, serviceClass); zephir_array_fast_append(_3, method); ZEPHIR_INIT_VAR(_4); ZVAL_LONG(_4, 0); ZEPHIR_CALL_METHOD(NULL, param, "__construct", &_5, _3, _4); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&_6, param, "getclass", &_7); zephir_check_call_status(); if (zephir_is_true(_6)) { ZEPHIR_CALL_METHOD(&_8, param, "getclass", &_7); zephir_check_call_status(); ZEPHIR_CALL_METHOD(¶mClass, _8, "getname", NULL); zephir_check_call_status(); ZEPHIR_INIT_NVAR(request); zephir_fetch_safe_class(_9, paramClass); _10 = zend_fetch_class(Z_STRVAL_P(_9), Z_STRLEN_P(_9), ZEND_FETCH_CLASS_AUTO TSRMLS_CC); object_init_ex(request, _10); if (zephir_has_constructor(request TSRMLS_CC)) { ZEPHIR_CALL_METHOD(NULL, request, "__construct", NULL); zephir_check_call_status(); } ZEPHIR_CALL_METHOD(NULL, request, "softclone", NULL, tmp); zephir_check_call_status(); } else { ZEPHIR_INIT_NVAR(_4); object_init_ex(_4, zend_exception_get_default(TSRMLS_C)); ZEPHIR_INIT_VAR(_11); zephir_json_encode(_11, &(_11), request, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_12); ZEPHIR_CONCAT_SVSVSV(_12, "Service class:method definition is invalid. Detail: ", service, " : ", method, ". Request: ", _11); ZEPHIR_CALL_METHOD(NULL, _4, "__construct", &_13, _12); zephir_check_call_status(); zephir_throw_exception_debug(_4, "phalconplus/RPC/Server/AbstractServer.zep", 36 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } else { ZEPHIR_INIT_NVAR(_4); object_init_ex(_4, zend_exception_get_default(TSRMLS_C)); ZEPHIR_INIT_NVAR(_11); zephir_json_encode(_11, &(_11), request, 0 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_12); ZEPHIR_CONCAT_SV(_12, "Your input is not allowed. Request: ", _11); ZEPHIR_CALL_METHOD(NULL, _4, "__construct", &_13, _12); zephir_check_call_status(); zephir_throw_exception_debug(_4, "phalconplus/RPC/Server/AbstractServer.zep", 39 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } _14 = zephir_fetch_nproperty_this(this_ptr, SL("di"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(_4); ZVAL_STRING(_4, "requestCheck", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_6, _14, "has", NULL, _4); zephir_check_temp_parameter(_4); zephir_check_call_status(); if (zephir_is_true(_6)) { _15 = zephir_fetch_nproperty_this(this_ptr, SL("di"), PH_NOISY_CC); ZEPHIR_INIT_NVAR(_3); zephir_create_array(_3, 3, 0 TSRMLS_CC); zephir_array_fast_append(_3, serviceClass); zephir_array_fast_append(_3, method); zephir_array_fast_append(_3, rawData); ZEPHIR_INIT_NVAR(_4); ZVAL_STRING(_4, "requestCheck", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, _15, "get", NULL, _4, _3); zephir_check_temp_parameter(_4); zephir_check_call_status(); } else { ZEPHIR_CALL_METHOD(NULL, this_ptr, "requestcheck", NULL, serviceClass, method, request); zephir_check_call_status(); } ZEPHIR_INIT_VAR(serviceObj); zephir_fetch_safe_class(_16, serviceClass); _17 = zend_fetch_class(Z_STRVAL_P(_16), Z_STRLEN_P(_16), ZEND_FETCH_CLASS_AUTO TSRMLS_CC); object_init_ex(serviceObj, _17); if (zephir_has_constructor(serviceObj TSRMLS_CC)) { _15 = zephir_fetch_nproperty_this(this_ptr, SL("di"), PH_NOISY_CC); ZEPHIR_CALL_METHOD(NULL, serviceObj, "__construct", NULL, _15); zephir_check_call_status(); } ZEPHIR_INIT_NVAR(_3); zephir_create_array(_3, 2, 0 TSRMLS_CC); zephir_array_fast_append(_3, serviceObj); zephir_array_fast_append(_3, method); if (zephir_is_callable(_3 TSRMLS_CC)) { /* try_start_1: */ ZEPHIR_INIT_NVAR(_4); ZEPHIR_INIT_VAR(_18); zephir_create_array(_18, 2, 0 TSRMLS_CC); zephir_array_fast_append(_18, serviceObj); zephir_array_fast_append(_18, method); ZEPHIR_INIT_VAR(_19); zephir_create_array(_19, 1, 0 TSRMLS_CC); zephir_array_fast_append(_19, request); ZEPHIR_CALL_USER_FUNC_ARRAY(_4, _18, _19); zephir_check_call_status_or_jump(try_end_1); ZEPHIR_CPY_WRT(response, _4); try_end_1: if (EG(exception)) { ZEPHIR_CPY_WRT(e, EG(exception)); if (zephir_instance_of_ev(e, zend_exception_get_default(TSRMLS_C) TSRMLS_CC)) { zend_clear_exception(TSRMLS_C); zephir_throw_exception_debug(e, "phalconplus/RPC/Server/AbstractServer.zep", 55 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } ZEPHIR_INIT_NVAR(_4); _20 = zephir_fetch_nproperty_this(this_ptr, SL("phpOnly"), PH_NOISY_CC); if (ZEPHIR_IS_TRUE(_20)) { ZEPHIR_CPY_WRT(_4, response); } else { ZEPHIR_CALL_METHOD(&_4, response, "toarray", NULL); zephir_check_call_status(); } RETURN_CCTOR(_4); } else { object_init_ex(_4, zend_exception_get_default(TSRMLS_C)); ZEPHIR_INIT_VAR(_21); ZEPHIR_CONCAT_SVSV(_21, "Service:method not found. Detail: ", service, " : ", method); ZEPHIR_CALL_METHOD(NULL, _4, "__construct", &_13, _21); zephir_check_call_status(); zephir_throw_exception_debug(_4, "phalconplus/RPC/Server/AbstractServer.zep", 59 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } }
/** * Check whether a role is allowed to access an action from a resource * * <code> * //Does andres have access to the customers resource to create? * $acl->isAllowed("andres", "Products", "create"); * * //Do guests have access to any resource to edit? * $acl->isAllowed("guests", "*", "edit"); * </code> */ PHP_METHOD(Phalcon_Acl_Adapter_Memory, isAllowed) { zend_bool _15$$31, _20$$33, _22$$33, _24$$33, _26$$33, _40$$40, _42$$39, _44$$41; HashTable *_5$$13, *_8$$19, *_11$$25, *_18$$30; HashPosition _4$$13, _7$$19, _10$$25, _17$$30; zephir_fcall_cache_entry *_34 = NULL, *_38 = NULL; int ZEPHIR_LAST_CALL_STATUS; zval *parameters = NULL; zval *access = NULL; zval *roleName = NULL, *resourceName = NULL, *access_param = NULL, *parameters_param = NULL, *eventsManager = NULL, *accessList = NULL, *accessKey = NULL, *haveAccess = NULL, *roleInherits = NULL, *inheritedRole = NULL, *rolesNames = NULL, *inheritedRoles = NULL, *funcAccess = NULL, *resourceObject = NULL, *roleObject = NULL, *funcList = NULL, *reflectionFunction = NULL, *reflectionParameters = NULL, *parameterNumber = NULL, *parametersForFunction = NULL, *numberOfRequiredParameters = NULL, *userParametersSizeShouldBe = NULL, *reflectionClass = NULL, *parameterToCheck = NULL, *reflectionParameter = NULL, *_0, *_1$$7 = NULL, *_2$$7, *_3$$9, **_6$$13, **_9$$19, **_12$$25, *_13$$28, *_14$$29, *_16$$31, **_19$$30, *_46$$30, *_47$$30, *_21$$33 = NULL, *_23$$33 = NULL, *_25$$33 = NULL, *_27$$33 = NULL, *_28$$33, *_29$$36 = NULL, *_30$$36 = NULL, *_31$$36, *_32$$36 = NULL, *_33$$36 = NULL, *_35$$37, *_36$$38, _37$$38, *_39$$40, *_41$$40, *_43$$39, *_45$$41; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 3, 1, &roleName, &resourceName, &access_param, ¶meters_param); ZEPHIR_SEPARATE_PARAM(roleName); ZEPHIR_SEPARATE_PARAM(resourceName); zephir_get_strval(access, access_param); if (!parameters_param) { ZEPHIR_INIT_VAR(parameters); array_init(parameters); } else { zephir_get_arrval(parameters, parameters_param); } ZEPHIR_INIT_VAR(haveAccess); ZVAL_NULL(haveAccess); ZEPHIR_INIT_VAR(funcAccess); ZVAL_NULL(funcAccess); ZEPHIR_INIT_VAR(resourceObject); ZVAL_NULL(resourceObject); ZEPHIR_INIT_VAR(roleObject); ZVAL_NULL(roleObject); if (Z_TYPE_P(roleName) == IS_OBJECT) { if (!(zephir_instance_of_ev(roleName, phalcon_acl_roleaware_ce TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_acl_exception_ce, "Object passed as roleName must implement RoleAware", "phalcon/acl/adapter/memory.zep", 545); return; } ZEPHIR_CPY_WRT(roleObject, roleName); ZEPHIR_CALL_METHOD(&roleName, roleObject, "getrolename", NULL, 0); zephir_check_call_status(); } if (Z_TYPE_P(resourceName) == IS_OBJECT) { if (!(zephir_instance_of_ev(resourceName, phalcon_acl_resourceaware_ce TSRMLS_CC))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_acl_exception_ce, "Object passed as resourceName must implement ResourceAware", "phalcon/acl/adapter/memory.zep", 553); return; } ZEPHIR_CPY_WRT(resourceObject, resourceName); ZEPHIR_CALL_METHOD(&resourceName, resourceObject, "getresourcename", NULL, 0); zephir_check_call_status(); } zephir_update_property_this(this_ptr, SL("_activeRole"), roleName TSRMLS_CC); zephir_update_property_this(this_ptr, SL("_activeResource"), resourceName TSRMLS_CC); zephir_update_property_this(this_ptr, SL("_activeAccess"), access TSRMLS_CC); ZEPHIR_OBS_VAR(accessList); zephir_read_property_this(&accessList, this_ptr, SL("_access"), PH_NOISY_CC); _0 = zephir_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY_CC); ZEPHIR_CPY_WRT(eventsManager, _0); ZEPHIR_OBS_VAR(funcList); zephir_read_property_this(&funcList, this_ptr, SL("_func"), PH_NOISY_CC); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_2$$7); ZVAL_STRING(_2$$7, "acl:beforeCheckAccess", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(&_1$$7, eventsManager, "fire", NULL, 0, _2$$7, this_ptr); zephir_check_temp_parameter(_2$$7); zephir_check_call_status(); if (ZEPHIR_IS_FALSE_IDENTICAL(_1$$7)) { RETURN_MM_BOOL(0); } } ZEPHIR_OBS_VAR(rolesNames); zephir_read_property_this(&rolesNames, this_ptr, SL("_rolesNames"), PH_NOISY_CC); if (!(zephir_array_isset(rolesNames, roleName))) { _3$$9 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAccess"), PH_NOISY_CC); RETURN_MM_BOOL((ZEPHIR_IS_LONG(_3$$9, 1))); } ZEPHIR_INIT_VAR(accessKey); ZEPHIR_CONCAT_VSVSV(accessKey, roleName, "!", resourceName, "!", access); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 586 TSRMLS_CC); } ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); if (Z_TYPE_P(haveAccess) == IS_NULL) { ZEPHIR_OBS_VAR(roleInherits); zephir_read_property_this(&roleInherits, this_ptr, SL("_roleInherits"), PH_NOISY_CC); ZEPHIR_OBS_VAR(inheritedRoles); if (zephir_array_isset_fetch(&inheritedRoles, roleInherits, roleName, 0 TSRMLS_CC)) { if (Z_TYPE_P(inheritedRoles) == IS_ARRAY) { zephir_is_iterable(inheritedRoles, &_5$$13, &_4$$13, 0, 0, "phalcon/acl/adapter/memory.zep", 610); for ( ; zephir_hash_get_current_data_ex(_5$$13, (void**) &_6$$13, &_4$$13) == SUCCESS ; zephir_hash_move_forward_ex(_5$$13, &_4$$13) ) { ZEPHIR_GET_HVALUE(inheritedRole, _6$$13); ZEPHIR_INIT_NVAR(accessKey); ZEPHIR_CONCAT_VSVSV(accessKey, inheritedRole, "!", resourceName, "!", access); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 606 TSRMLS_CC); } ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); } } } } if (Z_TYPE_P(haveAccess) == IS_NULL) { ZEPHIR_INIT_NVAR(accessKey); ZEPHIR_CONCAT_VSVS(accessKey, roleName, "!", resourceName, "!*"); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 625 TSRMLS_CC); ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); } else { if (Z_TYPE_P(inheritedRoles) == IS_ARRAY) { zephir_is_iterable(inheritedRoles, &_8$$19, &_7$$19, 0, 0, "phalcon/acl/adapter/memory.zep", 641); for ( ; zephir_hash_get_current_data_ex(_8$$19, (void**) &_9$$19, &_7$$19) == SUCCESS ; zephir_hash_move_forward_ex(_8$$19, &_7$$19) ) { ZEPHIR_GET_HVALUE(inheritedRole, _9$$19); ZEPHIR_INIT_NVAR(accessKey); ZEPHIR_CONCAT_VSVS(accessKey, inheritedRole, "!", resourceName, "!*"); ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 637 TSRMLS_CC); break; } } } } } if (Z_TYPE_P(haveAccess) == IS_NULL) { ZEPHIR_INIT_NVAR(accessKey); ZEPHIR_CONCAT_VS(accessKey, roleName, "!*!*"); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 656 TSRMLS_CC); ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); } else { if (Z_TYPE_P(inheritedRoles) == IS_ARRAY) { zephir_is_iterable(inheritedRoles, &_11$$25, &_10$$25, 0, 0, "phalcon/acl/adapter/memory.zep", 672); for ( ; zephir_hash_get_current_data_ex(_11$$25, (void**) &_12$$25, &_10$$25) == SUCCESS ; zephir_hash_move_forward_ex(_11$$25, &_10$$25) ) { ZEPHIR_GET_HVALUE(inheritedRole, _12$$25); ZEPHIR_INIT_NVAR(accessKey); ZEPHIR_CONCAT_VS(accessKey, inheritedRole, "!*!*"); ZEPHIR_OBS_NVAR(funcAccess); zephir_array_isset_fetch(&funcAccess, funcList, accessKey, 0 TSRMLS_CC); if (zephir_array_isset(accessList, accessKey)) { ZEPHIR_OBS_NVAR(haveAccess); zephir_array_fetch(&haveAccess, accessList, accessKey, PH_NOISY, "phalcon/acl/adapter/memory.zep", 668 TSRMLS_CC); break; } } } } } zephir_update_property_this(this_ptr, SL("_accessGranted"), haveAccess TSRMLS_CC); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_13$$28); ZVAL_STRING(_13$$28, "acl:afterCheckAccess", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _13$$28, this_ptr); zephir_check_temp_parameter(_13$$28); zephir_check_call_status(); } if (Z_TYPE_P(haveAccess) == IS_NULL) { _14$$29 = zephir_fetch_nproperty_this(this_ptr, SL("_defaultAccess"), PH_NOISY_CC); RETURN_MM_BOOL(ZEPHIR_IS_LONG(_14$$29, 1)); } if (Z_TYPE_P(funcAccess) != IS_NULL) { ZEPHIR_INIT_VAR(reflectionFunction); object_init_ex(reflectionFunction, zephir_get_internal_ce(SS("reflectionfunction") TSRMLS_CC)); ZEPHIR_CALL_METHOD(NULL, reflectionFunction, "__construct", NULL, 85, funcAccess); zephir_check_call_status(); ZEPHIR_CALL_METHOD(&reflectionParameters, reflectionFunction, "getparameters", NULL, 86); zephir_check_call_status(); ZEPHIR_INIT_VAR(parameterNumber); ZVAL_LONG(parameterNumber, zephir_fast_count_int(reflectionParameters TSRMLS_CC)); if (ZEPHIR_IS_LONG_IDENTICAL(parameterNumber, 0)) { _15$$31 = ZEPHIR_IS_LONG(haveAccess, 1); if (_15$$31) { ZEPHIR_INIT_VAR(_16$$31); ZEPHIR_CALL_USER_FUNC(_16$$31, funcAccess); zephir_check_call_status(); _15$$31 = zephir_is_true(_16$$31); } RETURN_MM_BOOL(_15$$31); } ZEPHIR_INIT_VAR(parametersForFunction); array_init(parametersForFunction); ZEPHIR_CALL_METHOD(&numberOfRequiredParameters, reflectionFunction, "getnumberofrequiredparameters", NULL, 87); zephir_check_call_status(); ZEPHIR_CPY_WRT(userParametersSizeShouldBe, parameterNumber); zephir_is_iterable(reflectionParameters, &_18$$30, &_17$$30, 0, 0, "phalcon/acl/adapter/memory.zep", 737); for ( ; zephir_hash_get_current_data_ex(_18$$30, (void**) &_19$$30, &_17$$30) == SUCCESS ; zephir_hash_move_forward_ex(_18$$30, &_17$$30) ) { ZEPHIR_GET_HVALUE(reflectionParameter, _19$$30); ZEPHIR_CALL_METHOD(&reflectionClass, reflectionParameter, "getclass", NULL, 0); zephir_check_call_status(); ZEPHIR_CALL_METHOD(¶meterToCheck, reflectionParameter, "getname", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(reflectionClass) != IS_NULL) { _20$$33 = Z_TYPE_P(roleObject) != IS_NULL; if (_20$$33) { ZEPHIR_CALL_METHOD(&_21$$33, reflectionClass, "isinstance", NULL, 0, roleObject); zephir_check_call_status(); _20$$33 = zephir_is_true(_21$$33); } if (_20$$33) { zephir_array_append(¶metersForFunction, roleObject, PH_SEPARATE, "phalcon/acl/adapter/memory.zep", 709); ZEPHIR_SEPARATE(userParametersSizeShouldBe); zephir_decrement(userParametersSizeShouldBe); continue; } _22$$33 = Z_TYPE_P(resourceObject) != IS_NULL; if (_22$$33) { ZEPHIR_CALL_METHOD(&_23$$33, reflectionClass, "isinstance", NULL, 0, resourceObject); zephir_check_call_status(); _22$$33 = zephir_is_true(_23$$33); } if (_22$$33) { zephir_array_append(¶metersForFunction, resourceObject, PH_SEPARATE, "phalcon/acl/adapter/memory.zep", 717); ZEPHIR_SEPARATE(userParametersSizeShouldBe); zephir_decrement(userParametersSizeShouldBe); continue; } _24$$33 = zephir_array_isset(parameters, parameterToCheck); if (_24$$33) { ZEPHIR_OBS_NVAR(_25$$33); zephir_array_fetch(&_25$$33, parameters, parameterToCheck, PH_NOISY, "phalcon/acl/adapter/memory.zep", 724 TSRMLS_CC); _24$$33 = Z_TYPE_P(_25$$33) == IS_OBJECT; } _26$$33 = _24$$33; if (_26$$33) { zephir_array_fetch(&_28$$33, parameters, parameterToCheck, PH_NOISY | PH_READONLY, "phalcon/acl/adapter/memory.zep", 724 TSRMLS_CC); ZEPHIR_CALL_METHOD(&_27$$33, reflectionClass, "isinstance", NULL, 0, _28$$33); zephir_check_call_status(); _26$$33 = !zephir_is_true(_27$$33); } if (_26$$33) { ZEPHIR_INIT_NVAR(_29$$36); object_init_ex(_29$$36, phalcon_acl_exception_ce); ZEPHIR_INIT_NVAR(_30$$36); zephir_array_fetch(&_31$$36, parameters, parameterToCheck, PH_NOISY | PH_READONLY, "phalcon/acl/adapter/memory.zep", 726 TSRMLS_CC); zephir_get_class(_30$$36, _31$$36, 0 TSRMLS_CC); ZEPHIR_CALL_METHOD(&_32$$36, reflectionClass, "getname", NULL, 0); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_33$$36); ZEPHIR_CONCAT_SVSVSVSVSVS(_33$$36, "Your passed parameter doesn't have the same class as the parameter in defined function when check ", roleName, " can ", access, " ", resourceName, ". Class passed: ", _30$$36, " , Class in defined function: ", _32$$36, "."); ZEPHIR_CALL_METHOD(NULL, _29$$36, "__construct", &_34, 9, _33$$36); zephir_check_call_status(); zephir_throw_exception_debug(_29$$36, "phalcon/acl/adapter/memory.zep", 727 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } } if (zephir_array_isset(parameters, parameterToCheck)) { zephir_array_fetch(&_35$$37, parameters, parameterToCheck, PH_NOISY | PH_READONLY, "phalcon/acl/adapter/memory.zep", 733 TSRMLS_CC); zephir_array_append(¶metersForFunction, _35$$37, PH_SEPARATE, "phalcon/acl/adapter/memory.zep", 733); } } if (ZEPHIR_LT_LONG(userParametersSizeShouldBe, zephir_fast_count_int(parameters TSRMLS_CC))) { ZEPHIR_INIT_VAR(_36$$38); ZEPHIR_CONCAT_SVSVSVS(_36$$38, "Number of parameters in array is higher than the number of parameters in defined function when check ", roleName, " can ", access, " ", resourceName, ". Remember that more parameters than defined in function will be ignored."); ZEPHIR_SINIT_VAR(_37$$38); ZVAL_LONG(&_37$$38, 512); ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", &_38, 2, _36$$38, &_37$$38); zephir_check_call_status(); } if (zephir_fast_count_int(parametersForFunction TSRMLS_CC) == 0) { if (ZEPHIR_GT_LONG(numberOfRequiredParameters, 0)) { ZEPHIR_INIT_VAR(_39$$40); ZEPHIR_CONCAT_SVSVSVS(_39$$40, "You didn't provide any parameters when check ", roleName, " can ", access, " ", resourceName, ". We will use default action when no arguments."); ZEPHIR_CALL_FUNCTION(NULL, "trigger_error", &_38, 2, _39$$40); zephir_check_call_status(); _40$$40 = ZEPHIR_IS_LONG(haveAccess, 1); if (_40$$40) { _41$$40 = zephir_fetch_nproperty_this(this_ptr, SL("_noArgumentsDefaultAction"), PH_NOISY_CC); _40$$40 = ZEPHIR_IS_LONG(_41$$40, 1); } RETURN_MM_BOOL(_40$$40); } _42$$39 = ZEPHIR_IS_LONG(haveAccess, 1); if (_42$$39) { ZEPHIR_INIT_VAR(_43$$39); ZEPHIR_CALL_USER_FUNC(_43$$39, funcAccess); zephir_check_call_status(); _42$$39 = zephir_is_true(_43$$39); } RETURN_MM_BOOL(_42$$39); } if (ZEPHIR_LE_LONG(numberOfRequiredParameters, zephir_fast_count_int(parametersForFunction TSRMLS_CC))) { _44$$41 = ZEPHIR_IS_LONG(haveAccess, 1); if (_44$$41) { ZEPHIR_INIT_VAR(_45$$41); ZEPHIR_CALL_USER_FUNC_ARRAY(_45$$41, funcAccess, parametersForFunction); zephir_check_call_status(); _44$$41 = zephir_is_true(_45$$41); } RETURN_MM_BOOL(_44$$41); } ZEPHIR_INIT_VAR(_46$$30); object_init_ex(_46$$30, phalcon_acl_exception_ce); ZEPHIR_INIT_VAR(_47$$30); ZEPHIR_CONCAT_SVSVSV(_47$$30, "You didn't provide all necessary parameters for defined function when check ", roleName, " can ", access, " ", resourceName); ZEPHIR_CALL_METHOD(NULL, _46$$30, "__construct", &_34, 9, _47$$30); zephir_check_call_status(); zephir_throw_exception_debug(_46$$30, "phalcon/acl/adapter/memory.zep", 766 TSRMLS_CC); ZEPHIR_MM_RESTORE(); return; } RETURN_MM_BOOL(ZEPHIR_IS_LONG(haveAccess, 1)); }