/** * Phalcon\Http\Uri constructor * * @param mixed $uri */ PHP_METHOD(Phalcon_Http_Uri, __construct) { zval *uri = NULL, parts = {}, query = {}, params = {}; phalcon_fetch_params(0, 0, 1, &uri); if (!uri || PHALCON_IS_EMPTY(uri)) { phalcon_update_property_empty_array(getThis(), SL("_parts")); } else if (Z_TYPE_P(uri) == IS_STRING) { PHALCON_CALL_FUNCTIONW(&parts, "parse_url", uri); if (phalcon_array_isset_fetch_str(&query, &parts, SL("query"))) { ZVAL_MAKE_REF(¶ms); PHALCON_CALL_FUNCTIONW(NULL, "parse_str", &query, ¶ms); ZVAL_UNREF(¶ms); phalcon_array_update_str(&parts, SL("query"), ¶ms, PH_COPY); } phalcon_update_property_zval(getThis(), SL("_parts"), &parts); } else if (Z_TYPE_P(uri) == IS_ARRAY) { phalcon_update_property_zval(getThis(), SL("_parts"), uri); } else if (Z_TYPE_P(uri) == IS_OBJECT && Z_OBJCE_P(uri) == phalcon_http_uri_ce) { phalcon_return_property(&parts, uri, SL("_parts")); phalcon_update_property_zval(getThis(), SL("_parts"), &parts); } else { phalcon_update_property_empty_array(getThis(), SL("_parts")); } }
/** * Phalcon\Http\Uri constructor * * @param mixed $uri */ PHP_METHOD(Phalcon_Http_Uri, __construct){ zval *uri = NULL, *parts = NULL, *query, *params; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 1, &uri); if (!uri || PHALCON_IS_EMPTY(uri)) { phalcon_update_property_empty_array(getThis(), SL("_parts")); } else if (Z_TYPE_P(uri) == IS_STRING) { PHALCON_CALL_FUNCTION(&parts, "parse_url", uri); if (phalcon_array_isset_str_fetch(&query, parts, SL("query"))) { PHALCON_INIT_VAR(params); ZVAL_MAKE_REF(params); PHALCON_CALL_FUNCTION(NULL, "parse_str", query, params); ZVAL_UNREF(params); phalcon_array_update_str(parts, SL("query"), params, PH_COPY); } phalcon_update_property_this(getThis(), SL("_parts"), parts); } else if (Z_TYPE_P(uri) == IS_ARRAY) { phalcon_update_property_this(getThis(), SL("_parts"), uri); } else if (Z_TYPE_P(uri) == IS_OBJECT && Z_OBJCE_P(uri) == phalcon_http_uri_ce) { parts = phalcon_read_property(uri, SL("_parts"), PH_NOISY); phalcon_update_property_this(getThis(), SL("_parts"), parts); } else { phalcon_update_property_empty_array(getThis(), SL("_parts")); } PHALCON_MM_RESTORE(); }
/** * Checks if GD is enabled * * @return boolean */ PHP_METHOD(Phalcon_Image_Adapter_GD, check){ zval gd_version = {}, ret = {}, gd_info = {}, version = {}, exception_message = {}, pattern = {}, matches = {}; if (phalcon_function_exists_ex(SL("gd_info")) == FAILURE) { PHALCON_THROW_EXCEPTION_STRW(phalcon_image_exception_ce, "GD is either not installed or not enabled, check your configuration"); return; } if (!phalcon_get_constant(&gd_version, SL("GD_VERSION"))) { PHALCON_CALL_FUNCTIONW(&gd_info, "gd_info"); if (phalcon_array_isset_fetch_str(&gd_version, &gd_info, SL("GD Version"))) { ZVAL_STRING(&pattern, "#\\d+\\.\\d+(?:\\.\\d+)?#"); ZVAL_NULL(&matches); ZVAL_MAKE_REF(&matches); RETURN_ON_FAILURE(phalcon_preg_match(&ret, &pattern, &gd_version, &matches)); ZVAL_UNREF(&matches); if (zend_is_true(&ret)) { if (!phalcon_array_isset_fetch_long(&version, &matches, 0)) { ZVAL_EMPTY_STRING(&version); } } else { ZVAL_EMPTY_STRING(&version); } } else { PHALCON_CPY_WRT_CTOR(&version, &gd_version); } } if (-1 == php_version_compare(Z_STRVAL_P(&gd_version), "2.0.1")) { PHALCON_CONCAT_SV(&exception_message, "Phalcon\\Image\\Adapter\\GD requires GD version '2.0.1' or greater, you have '", &gd_version); PHALCON_THROW_EXCEPTION_ZVALW(phalcon_image_exception_ce, &exception_message); return; } phalcon_update_static_property_ce(phalcon_image_adapter_gd_ce, SL("_checked"), &PHALCON_GLOBAL(z_true)); RETURN_TRUE; }
/** * Executes the validation * * @param string $value * @return boolean */ PHP_METHOD(Phalcon_Validation_Validator_Regex, valid){ zval *value, *pattern, matches = {}, match_pattern = {}, match_zero = {}, valid = {}; phalcon_fetch_params(0, 2, 0, &value, &pattern); /* Check if the value match using preg_match in the PHP userland */ ZVAL_NULL(&matches); ZVAL_MAKE_REF(&matches); RETURN_ON_FAILURE(phalcon_preg_match(&match_pattern, pattern, value, &matches)); ZVAL_UNREF(&matches); if (zend_is_true(&match_pattern)) { phalcon_array_fetch_long(&match_zero, &matches, 0, PH_NOISY); is_not_equal_function(&valid, &match_zero, value); if (PHALCON_IS_FALSE(&valid)) { RETURN_TRUE; } } RETURN_FALSE; }