/** * Decrypt a text that is coded as a base64 string * * @param string $text * @param string $key * @return string */ PHP_METHOD(Phalcon_Crypt, decryptBase64){ zval *text, *key = NULL, *safe = NULL, decrypt_text = {}, decrypt_value = {}; phalcon_fetch_params(0, 1, 2, &text, &key, &safe); PHALCON_ENSURE_IS_STRING(text); if (!key) { key = &PHALCON_GLOBAL(z_null); } if (!safe) { safe = &PHALCON_GLOBAL(z_false); } if (zend_is_true(safe)) { ZVAL_NEW_STR(&decrypt_text, zend_string_dup(Z_STR_P(text), 0)); php_strtr(Z_STRVAL(decrypt_text), Z_STRLEN(decrypt_text), "-_", "+/", 2); } else { PHALCON_CPY_WRT_CTOR(&decrypt_text, text); } phalcon_base64_decode(&decrypt_value, &decrypt_text); PHALCON_RETURN_CALL_METHODW(getThis(), "decrypt", &decrypt_value, key); }
/** * Adds a javascript resource to the 'js' collection * *<code> * $assets->addJs('scripts/jquery.js'); * $assets->addJs('http://jquery.my-cdn.com/jquery.js', true); *</code> * * @param string $path * @param boolean $local * @param boolean $filter * @param array $attributes * @return Phalcon\Assets\Manager */ PHP_METHOD(Phalcon_Assets_Manager, addJs){ zval *path, *local = NULL, *filter = NULL, *attributes = NULL, *type, *resource; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 3, &path, &local, &filter, &attributes); if (!local) { local = PHALCON_GLOBAL(z_true); } if (!filter) { filter = PHALCON_GLOBAL(z_true); } if (!attributes) { attributes = PHALCON_GLOBAL(z_null); } PHALCON_INIT_VAR(type); ZVAL_STRING(type, "js", 1); PHALCON_INIT_VAR(resource); object_init_ex(resource, phalcon_assets_resource_js_ce); PHALCON_CALL_METHOD(NULL, resource, "__construct", path, local, filter, attributes); PHALCON_CALL_METHOD(NULL, this_ptr, "addresourcebytype", type, resource); RETURN_THIS(); }
/** * Phalcon\Forms\Element\Email constructor * * @param string $name * @param array $attributes * @param array $options * @param array $optionsValues */ PHP_METHOD(Phalcon_Forms_Element_Email, __construct){ zval *name, *attributes = NULL, *options = NULL, *options_values = NULL, *_type = NULL, type = {}; phalcon_fetch_params(0, 1, 4, &name, &attributes, &options, &options_values, &_type); if (!attributes) { attributes = &PHALCON_GLOBAL(z_null); } if (!options) { options = &PHALCON_GLOBAL(z_null); } if (!options_values) { options_values = &PHALCON_GLOBAL(z_null); } if (!_type || PHALCON_IS_EMPTY(_type)) { PHALCON_STR(&type, "email"); } else { PHALCON_CPY_WRT(&type, _type); } PHALCON_CALL_PARENTW(NULL, phalcon_forms_element_email_ce, getThis(), "__construct", name, attributes, options, options_values, &type); }
/** * Gets variable from $_GET superglobal applying filters if needed * If no parameters are given the $_GET superglobal is returned * *<code> * //Returns value from $_GET["id"] without sanitizing * $id = $request->getQuery("id"); * * //Returns value from $_GET["id"] with sanitizing * $id = $request->getQuery("id", "int"); * * //Returns value from $_GET["id"] with a default value * $id = $request->getQuery("id", null, 150); *</code> * * @param string $name * @param string|array $filters * @param mixed $defaultValue * @param boolean $notAllowEmpty * @param boolean $noRecursive * @return mixed */ PHP_METHOD(Phalcon_Http_Request, getQuery){ zval *name = NULL, *filters = NULL, *default_value = NULL, *not_allow_empty = NULL, *norecursive = NULL, *get; phalcon_fetch_params(0, 0, 5, &name, &filters, &default_value, ¬_allow_empty, &norecursive); if (!name) { name = &PHALCON_GLOBAL(z_null); } if (!filters) { filters = &PHALCON_GLOBAL(z_null); } if (!default_value) { default_value = &PHALCON_GLOBAL(z_null); } if (!not_allow_empty) { not_allow_empty = &PHALCON_GLOBAL(z_false); } if (!norecursive) { norecursive = &PHALCON_GLOBAL(z_false); } get = phalcon_get_global_str(SL("_GET")); PHALCON_RETURN_CALL_SELFW("_get", get, name, filters, default_value, not_allow_empty, norecursive); }
/** * Escapes a column/table/schema name * * @param string $identifier * @return string */ PHP_METHOD(Phalcon_Db_Adapter_Pdo_Mysql, escapeIdentifier){ zval *identifier, *domain, *name; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 0, &identifier); if (Z_TYPE_P(identifier) == IS_ARRAY) { PHALCON_OBS_VAR(domain); phalcon_array_fetch_long(&domain, identifier, 0, PH_NOISY); PHALCON_OBS_VAR(name); phalcon_array_fetch_long(&name, identifier, 1, PH_NOISY); if (PHALCON_GLOBAL(db).escape_identifiers) { PHALCON_CONCAT_SVSVS(return_value, "`", domain, "`.`", name, "`"); RETURN_MM(); } PHALCON_CONCAT_VSV(return_value, domain, ".", name); RETURN_MM(); } if (PHALCON_GLOBAL(db).escape_identifiers) { PHALCON_CONCAT_SVS(return_value, "`", identifier, "`"); RETURN_MM(); } RETURN_CCTOR(identifier); }
/** * Gets a param by its name or numeric index * * @param mixed $param * @param string|array $filters * @param mixed $defaultValue * @return mixed */ PHP_METHOD(Phalcon_Http_Request, getParam){ zval *param, *filters = NULL, *default_value = NULL, dependency_injector = {}, service = {}, dispatcher = {}; phalcon_fetch_params(0, 1, 2, ¶m, &filters, &default_value); if (!filters) { filters = &PHALCON_GLOBAL(z_null); } if (!default_value) { default_value = &PHALCON_GLOBAL(z_null); } PHALCON_CALL_METHODW(&dependency_injector, getThis(), "getdi"); if (Z_TYPE(dependency_injector) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STRW(phalcon_http_request_exception_ce, "A dependency injection object is required to access the 'filter' service"); return; } PHALCON_STR(&service, ISV(dispatcher)); PHALCON_CALL_METHODW(&dispatcher, &dependency_injector, "getshared", &service); PHALCON_CALL_METHODW(NULL, &dispatcher, "getparam", param, filters, default_value); }
/** * Gets a variable from the $_REQUEST superglobal applying filters if needed. * If no parameters are given the $_REQUEST superglobal is returned * *<code> * //Returns value from $_REQUEST["user_email"] without sanitizing * $userEmail = $request->get("user_email"); * * //Returns value from $_REQUEST["user_email"] with sanitizing * $userEmail = $request->get("user_email", "email"); *</code> * * @param string $name * @param string|array $filters * @param mixed $defaultValue * @param boolean $notAllowEmpty * @param boolean $noRecursive * @return mixed */ PHP_METHOD(Phalcon_Http_Request, get) { zval *name = NULL, *filters = NULL, *default_value = NULL, *not_allow_empty = NULL, *norecursive = NULL, *request; zval put = {}, merged = {}; phalcon_fetch_params(0, 0, 5, &name, &filters, &default_value, ¬_allow_empty, &norecursive); if (!name) { name = &PHALCON_GLOBAL(z_null); } if (!filters) { filters = &PHALCON_GLOBAL(z_null); } if (!default_value) { default_value = &PHALCON_GLOBAL(z_null); } if (!not_allow_empty) { not_allow_empty = &PHALCON_GLOBAL(z_false); } if (!norecursive) { norecursive = &PHALCON_GLOBAL(z_false); } request = phalcon_get_global_str(SL("_REQUEST")); PHALCON_CALL_METHODW(&put, getThis(), "getput"); phalcon_fast_array_merge(&merged, request, &put); PHALCON_RETURN_CALL_SELFW("_get", &merged, name, filters, default_value, not_allow_empty, norecursive); }
/** * Adds a resource to the annotations handler * A resource is a class that contains routing annotations * The class is located in a module * * @param string $module * @param string $handler * @param string $prefix * @return Phalcon\Mvc\Router\Annotations */ PHP_METHOD(Phalcon_Mvc_Router_Annotations, addModuleResource){ zval *module, *handler, *prefix = NULL, *scope; phalcon_fetch_params(0, 2, 1, &module, &handler, &prefix); if (!prefix) { prefix = PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(module) != IS_STRING) { PHALCON_THROW_EXCEPTION_STRW(phalcon_mvc_router_exception_ce, "The module is not a valid string"); return; } if (Z_TYPE_P(handler) != IS_STRING) { PHALCON_THROW_EXCEPTION_STRW(phalcon_mvc_router_exception_ce, "The handler must be a class name"); return; } MAKE_STD_ZVAL(scope); array_init_size(scope, 3); phalcon_array_append(&scope, prefix, 0); phalcon_array_append(&scope, handler, 0); phalcon_array_append(&scope, module, 0); phalcon_update_property_array_append(this_ptr, SL("_handlers"), scope TSRMLS_CC); zval_ptr_dtor(&scope); phalcon_update_property_this(this_ptr, SL("_processed"), PHALCON_GLOBAL(z_false) TSRMLS_CC); RETURN_THISW(); }
/** * This method scales the images using liquid rescaling method. Only support Imagick * * @param int $width new width * @param int $height new height * @param int $delta_x How much the seam can traverse on x-axis. Passing 0 causes the seams to be straight. * @param int $rigidity Introduces a bias for non-straight seams. This parameter is typically 0. * @return Phalcon\Image\Adapter */ PHP_METHOD(Phalcon_Image_Adapter, liquidRescale) { zval **width, **height, **delta_x = NULL, **rigidity = NULL; phalcon_fetch_params_ex(2, 2, &width, &height, &delta_x, &rigidity); PHALCON_ENSURE_IS_LONG(width); PHALCON_ENSURE_IS_LONG(height); PHALCON_MM_GROW(); if (!delta_x) { delta_x = &PHALCON_GLOBAL(z_zero); } else { PHALCON_ENSURE_IS_LONG(delta_x); } if (!rigidity) { rigidity = &PHALCON_GLOBAL(z_zero); } else { PHALCON_ENSURE_IS_LONG(rigidity); } PHALCON_CALL_METHOD(NULL, this_ptr, "_liquidrescale", *width, *height, *delta_x, *rigidity); RETURN_THIS(); }
/** * Creates a form registering it in the forms manager * * @param string $name * @param object $entity * @return Phalcon\Forms\Form */ PHP_METHOD(Phalcon_Forms_Manager, create){ zval *name = NULL, *entity = NULL, form = {}; phalcon_fetch_params(0, 0, 2, &name, &entity); if (!name) { name = &PHALCON_GLOBAL(z_null); } if (!entity) { entity = &PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(name) != IS_STRING) { PHALCON_THROW_EXCEPTION_STRW(phalcon_forms_exception_ce, "The form name must be string"); return; } object_init_ex(&form, phalcon_forms_form_ce); PHALCON_CALL_METHODW(NULL, &form, "__construct", entity); phalcon_update_property_array(getThis(), SL("_forms"), name, &form); RETURN_CTORW(&form); }
/** * Phalcon\Assets\Resource constructor * * @param string $type * @param string $path * @param boolean $local * @param boolean $filter * @param array $attributes */ PHP_METHOD(Phalcon_Assets_Resource, __construct){ zval *type, *path, *local = NULL, *filter = NULL, *attributes = NULL; phalcon_fetch_params(0, 2, 3, &type, &path, &local, &filter, &attributes); if (!local) { local = PHALCON_GLOBAL(z_true); } if (!filter) { filter = PHALCON_GLOBAL(z_true); } if (!attributes) { attributes = PHALCON_GLOBAL(z_null); } phalcon_update_property_this(this_ptr, SL("_type"), type TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_path"), path TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_local"), local TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_filter"), filter TSRMLS_CC); if (Z_TYPE_P(attributes) == IS_ARRAY) { phalcon_update_property_this(this_ptr, SL("_attributes"), attributes TSRMLS_CC); } }
/** * Create a new Query Builder for Delete * * * @return Phalcon\Mvc\Model\Query\Builder\Delete */ PHP_METHOD(Phalcon_Mvc_Model_Query_Builder, createDeleteBuilder){ zval *params = NULL, *_di = NULL, di = {}, service_name = {}; phalcon_fetch_params(0, 0, 2, ¶ms, &_di); if (!params) { params = &PHALCON_GLOBAL(z_null); } if (!_di) { _di = &PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(_di) == IS_OBJECT) { PHALCON_VERIFY_INTERFACEW(_di, phalcon_diinterface_ce); PHALCON_CPY_WRT(&di, _di); } else { PHALCON_CALL_CE_STATICW(&di, phalcon_di_ce, "getdefault", _di); } PHALCON_STR(&service_name, ISV(modelsQueryBuilderForDelete)); PHALCON_CALL_METHODW(return_value, &di, "get", &service_name, &PHALCON_GLOBAL(z_null), &PHALCON_GLOBAL(z_true)); if (Z_TYPE_P(return_value) != IS_OBJECT) { object_init_ex(return_value, phalcon_mvc_model_query_builder_delete_ce); PHALCON_CALL_METHODW(NULL, return_value, "__construct", params); } PHALCON_VERIFY_INTERFACEW(return_value, phalcon_mvc_model_query_builderinterface_ce); }
/** * Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance * * @param string $name * @param array $parameters * @return mixed */ PHP_METHOD(Phalcon_DI, getShared){ zval *name, *parameters = NULL, *noerror = NULL, instance = {}; phalcon_fetch_params(0, 1, 2, &name, ¶meters, &noerror); PHALCON_ENSURE_IS_STRING(name); if (!parameters) { parameters = &PHALCON_GLOBAL(z_null); } if (!noerror) { noerror = &PHALCON_GLOBAL(z_null); } if (phalcon_isset_property_array(getThis(), SL("_sharedInstances"), name)) { phalcon_return_property_array(&instance, getThis(), SL("_sharedInstances"), name); phalcon_update_property_bool(getThis(), SL("_freshInstance"), 0); } else { PHALCON_CALL_SELFW(&instance, "get", name, parameters, noerror); if (zend_is_true(&instance)) { phalcon_update_property_bool(getThis(), SL("_freshInstance"), 1); phalcon_update_property_array(getThis(), SL("_sharedInstances"), name, &instance); } } RETURN_CTORW(&instance); }
/** * Reads the ordered/reversed column map for certain model * *<code> * print_r($metaData->readColumnMap(new Robots())); *</code> * * @param Phalcon\Mvc\ModelInterface $model * @return array */ PHP_METHOD(Phalcon_Mvc_Model_MetaData, readColumnMap){ zval *model, *key_name, *column_map = NULL, *null_value; zval *data; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 0, &model); PHALCON_VERIFY_INTERFACE_EX(model, phalcon_mvc_modelinterface_ce, phalcon_mvc_model_exception_ce, 1); if (!PHALCON_GLOBAL(orm).column_renaming) { RETURN_MM(); } PHALCON_INIT_VAR(key_name); phalcon_get_class(key_name, model, 1 TSRMLS_CC); PHALCON_OBS_VAR(column_map); phalcon_read_property_this(&column_map, this_ptr, SL("_columnMap"), PH_NOISY TSRMLS_CC); if (!phalcon_array_isset(column_map, key_name)) { null_value = PHALCON_GLOBAL(z_null); PHALCON_CALL_METHOD(NULL, this_ptr, "_initialize", model, null_value, null_value, null_value); PHALCON_OBS_NVAR(column_map); phalcon_read_property_this(&column_map, this_ptr, SL("_columnMap"), PH_NOISY TSRMLS_CC); } PHALCON_OBS_VAR(data); phalcon_array_fetch(&data, column_map, key_name, PH_NOISY); RETURN_CTOR(data); }
/** * Adds a resource to the annotations handler * A resource is a class that contains routing annotations * * @param string $handler * @param string $prefix * @return Phalcon\Mvc\Router\Annotations */ PHP_METHOD(Phalcon_Mvc_Router_Annotations, addResource){ zval *handler, *prefix = NULL, *scope; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 1, &handler, &prefix); if (!prefix) { prefix = PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(handler) != IS_STRING) { PHALCON_THROW_EXCEPTION_STR(phalcon_mvc_router_exception_ce, "The handler must be a class name"); return; } PHALCON_INIT_VAR(scope); array_init_size(scope, 2); phalcon_array_append(&scope, prefix, 0); phalcon_array_append(&scope, handler, 0); phalcon_update_property_array_append(this_ptr, SL("_handlers"), scope TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_processed"), PHALCON_GLOBAL(z_false) TSRMLS_CC); RETURN_THIS(); }
/** * Phalcon\Mvc\Collection\Message constructor * * @param string $message * @param string $field * @param string $type * @param Phalcon\Mvc\CollectionInterface $collection */ PHP_METHOD(Phalcon_Mvc_Collection_Message, __construct){ zval *message, *field = NULL, *type = NULL, *collection = NULL, *code = NULL; phalcon_fetch_params(0, 1, 4, &message, &field, &type, &code, &collection); if (!field) { field = PHALCON_GLOBAL(z_null); } if (!type) { type = PHALCON_GLOBAL(z_null); } if (!collection) { collection = PHALCON_GLOBAL(z_null); } if (!code) { code = PHALCON_GLOBAL(z_zero); } phalcon_update_property_this(this_ptr, SL("_message"), message TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_field"), field TSRMLS_CC); phalcon_update_property_this(this_ptr, SL("_type"), type TSRMLS_CC); if (Z_TYPE_P(collection) == IS_OBJECT) { phalcon_update_property_this(this_ptr, SL("_collection"), collection TSRMLS_CC); } phalcon_update_property_this(this_ptr, SL("_code"), code TSRMLS_CC); }
/** * Prints the HTML for JS resources * * @param string $collectionName * @param array $args */ PHP_METHOD(Phalcon_Assets_Manager, outputJs){ zval *collection_name = NULL, *args = NULL, *collection = NULL, *callback, *type = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 2, &collection_name, &args); if (!collection_name) { collection_name = PHALCON_GLOBAL(z_null); } if (!args) { args = PHALCON_GLOBAL(z_null); } if (PHALCON_IS_EMPTY(collection_name)) { PHALCON_CALL_METHOD(&collection, this_ptr, "getjs"); } else { PHALCON_CALL_METHOD(&collection, this_ptr, "get", collection_name); } PHALCON_INIT_VAR(callback); array_init_size(callback, 2); add_next_index_stringl(callback, SL("Phalcon\\Tag"), 1); add_next_index_stringl(callback, SL("javascriptInclude"), 1); PHALCON_INIT_VAR(type); ZVAL_STRING(type, "js", 1); PHALCON_RETURN_CALL_METHOD(this_ptr, "output", collection, callback, type, args); PHALCON_MM_RESTORE(); }
/** * Creates a form registering it in the forms manager * * @param string $name * @param object $entity * @return Phalcon\Forms\Form */ PHP_METHOD(Phalcon_Forms_Manager, create){ zval *name = NULL, *entity = NULL, *form; PHALCON_MM_GROW(); phalcon_fetch_params(1, 0, 2, &name, &entity); if (!name) { name = PHALCON_GLOBAL(z_null); } if (!entity) { entity = PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(name) != IS_STRING) { PHALCON_THROW_EXCEPTION_STR(phalcon_forms_exception_ce, "The form name must be string"); return; } PHALCON_INIT_VAR(form); object_init_ex(form, phalcon_forms_form_ce); PHALCON_CALL_METHOD(NULL, form, "__construct", entity); phalcon_update_property_array(this_ptr, SL("_forms"), name, form TSRMLS_CC); RETURN_CTOR(form); }
/** * Adds a resource to the ACL list * * Access names can be a particular action, by example * search, update, delete, etc or a list of them * * Example: * <code> * //Add a resource to the the list allowing access to an action * $acl->addResource(new Phalcon\Acl\Resource('customers'), 'search'); * $acl->addResource('customers', 'search'); * * //Add a resource with an access list * $acl->addResource(new Phalcon\Acl\Resource('customers'), array('create', 'search')); * $acl->addResource('customers', array('create', 'search')); * </code> * * @param Phalcon\Acl\Resource|string $resource * @param array $accessList * @return boolean */ PHP_METHOD(Phalcon_Acl_Adapter_Memory, addResource){ zval *resource, *access_list = NULL, *resource_name = NULL; zval *object = NULL, *resources_names; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 1, &resource, &access_list); if (!access_list) { access_list = PHALCON_GLOBAL(z_null); } if (Z_TYPE_P(resource) == IS_OBJECT) { PHALCON_CALL_METHOD(&resource_name, resource, "getname"); PHALCON_CPY_WRT(object, resource); } else { PHALCON_CPY_WRT(resource_name, resource); PHALCON_INIT_NVAR(object); object_init_ex(object, phalcon_acl_resource_ce); PHALCON_CALL_METHOD(NULL, object, "__construct", resource_name); } PHALCON_OBS_VAR(resources_names); phalcon_read_property_this(&resources_names, this_ptr, SL("_resourcesNames"), PH_NOISY TSRMLS_CC); if (!phalcon_array_isset(resources_names, resource_name)) { phalcon_update_property_array_append(this_ptr, SL("_resources"), object TSRMLS_CC); phalcon_update_property_array(this_ptr, SL("_resourcesNames"), resource_name, PHALCON_GLOBAL(z_true) TSRMLS_CC); } PHALCON_RETURN_CALL_METHOD(this_ptr, "addresourceaccess", resource_name, access_list); RETURN_MM(); }
/** * Encrypts a text returning the result as a base64 string * * @param string $text * @param string $key * @return string */ PHP_METHOD(Phalcon_Crypt, encryptBase64){ zval *text, *key = NULL, *safe = NULL, *encrypted = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 2, &text, &key, &safe); if (!key) { key = PHALCON_GLOBAL(z_null); } if (!safe) { safe = PHALCON_GLOBAL(z_false); } PHALCON_CALL_METHOD(&encrypted, this_ptr, "encrypt", text, key); phalcon_base64_encode(return_value, encrypted); if (zend_is_true(safe)) { php_strtr(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value), "+/", "-_", 2); } RETURN_MM(); }
/** * Phalcon\Mvc\Model\Message constructor * * @param string $message * @param string $field * @param string $type * @param int $code * @param Phalcon\Mvc\ModelInterface $model */ PHP_METHOD(Phalcon_Mvc_Model_Message, __construct){ zval *message, *field = NULL, *type = NULL, *model = NULL, *code = NULL; phalcon_fetch_params(0, 1, 4, &message, &field, &type, &code, &model); if (!field) { field = &PHALCON_GLOBAL(z_null); } if (!type) { type = &PHALCON_GLOBAL(z_null); } if (!model) { model = &PHALCON_GLOBAL(z_null); } if (!code) { code = &PHALCON_GLOBAL(z_zero); } phalcon_update_property_this(getThis(), SL("_message"), message); phalcon_update_property_this(getThis(), SL("_field"), field); phalcon_update_property_this(getThis(), SL("_type"), type); if (Z_TYPE_P(model) == IS_OBJECT) { phalcon_update_property_this(getThis(), SL("_model"), model); } phalcon_update_property_this(getThis(), SL("_code"), code); }
/** * Execute a render. * * @param string $type * @param int $quality * @return string */ PHP_METHOD(Phalcon_Image_Adapter_GD, _render) { zval *extension, *quality = NULL, *interlacing = NULL, ret = {}, type = {}, mime = {}, image = {}, tmp = {}; const char *func_name = "imagegif"; char *ext; phalcon_fetch_params(0, 1, 2, &extension, &quality, &interlacing); phalcon_fast_strtolower(&ret, extension); ext = Z_STRVAL(ret); if (strcmp(ext, "gif") == 0) { ZVAL_LONG(&type, 1); func_name = "imagegif"; } else if (strcmp(ext, "jpg") == 0 || strcmp(ext, "jpeg") == 0) { ZVAL_LONG(&type, 2); func_name = "imagejpeg"; } else if (strcmp(ext, "png") == 0) { ZVAL_LONG(&type, 3); func_name = "imagepng"; } else { zend_throw_exception_ex(phalcon_image_exception_ce, 0, "Installed GD does not support '%s' images", Z_STRVAL_P(extension)); return; } phalcon_return_property(&image, getThis(), SL("_image")); if (interlacing && Z_TYPE_P(interlacing) >= IS_NULL && Z_LVAL(type) > 1) { if (zend_is_true(interlacing)) { PHALCON_CALL_FUNCTIONW(NULL, "imageinterlace", &image, &PHALCON_GLOBAL(z_one)); } else { PHALCON_CALL_FUNCTIONW(NULL, "imageinterlace", &image, &PHALCON_GLOBAL(z_zero)); } } phalcon_ob_start(); if (Z_LVAL(type) == 1 || !quality || Z_TYPE_P(quality) == IS_NULL) { PHALCON_CALL_FUNCTIONW(&ret, func_name, &image); } else { if (Z_LVAL(type) == 3) { ZVAL_LONG(&tmp, ceil(Z_LVAL_P(quality)/100*9)); PHALCON_CALL_FUNCTIONW(&ret, func_name, &image, &PHALCON_GLOBAL(z_null), &tmp); } else { PHALCON_CALL_FUNCTIONW(&ret, func_name, &image, &PHALCON_GLOBAL(z_null), quality); } } phalcon_ob_get_contents(return_value); phalcon_ob_end_clean(); if (zend_is_true(&ret)) { phalcon_update_property_zval(getThis(), SL("_type"), &type); PHALCON_CALL_FUNCTIONW(&mime, "image_type_to_mime_type", &type); phalcon_update_property_zval(getThis(), SL("_mime"), &mime); } return; }
static PHP_MSHUTDOWN_FUNCTION(phalcon){ assert(PHALCON_GLOBAL(orm).parser_cache == NULL); assert(PHALCON_GLOBAL(orm).ast_cache == NULL); UNREGISTER_INI_ENTRIES(); zend_execute_internal = orig_execute_internal; return SUCCESS; }
static PHP_MSHUTDOWN_FUNCTION(phalcon){ zend_error_cb = old_error_cb; assert(PHALCON_GLOBAL(function_cache) == NULL); assert(PHALCON_GLOBAL(orm).parser_cache == NULL); assert(PHALCON_GLOBAL(orm).ast_cache == NULL); return SUCCESS; }
/** * Adds a join to the query * *<code> * $criteria->join('Robots'); * $criteria->join('Robots', 'r.id = RobotsParts.robots_id'); * $criteria->join('Robots', 'r.id = RobotsParts.robots_id', 'r'); * $criteria->join('Robots', 'r.id = RobotsParts.robots_id', 'r', 'LEFT'); *</code> * * @param string $model * @param string $conditions * @param string $alias * @param string $type * @return Phalcon\Mvc\Model\CriteriaInterface */ PHP_METHOD(Phalcon_Mvc_Model_Criteria, join){ zval *model, *conditions = NULL, *alias = NULL, *type = NULL, *new_join, *params; zval *current_joins, *merged_joins = NULL, *new_join_array = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 3, &model, &conditions, &alias, &type); if (!conditions) { conditions = PHALCON_GLOBAL(z_null); } if (!alias) { alias = PHALCON_GLOBAL(z_null); } if (!type) { type = PHALCON_GLOBAL(z_null); } PHALCON_INIT_VAR(new_join); array_init_size(new_join, 4); phalcon_array_append(&new_join, model, 0); phalcon_array_append(&new_join, conditions, 0); phalcon_array_append(&new_join, alias, 0); phalcon_array_append(&new_join, type, 0); PHALCON_OBS_VAR(params); phalcon_read_property_this(¶ms, this_ptr, SL("_params"), PH_NOISY TSRMLS_CC); if (phalcon_array_isset_string(params, SS("joins"))) { PHALCON_INIT_VAR(new_join_array); array_init_size(new_join_array, 1); phalcon_array_append(&new_join_array, new_join, 0); PHALCON_OBS_VAR(current_joins); phalcon_array_fetch_string(¤t_joins, params, SL("joins"), PH_NOISY); if (Z_TYPE_P(current_joins) == IS_ARRAY) { PHALCON_INIT_VAR(merged_joins); phalcon_fast_array_merge(merged_joins, ¤t_joins, &new_join_array TSRMLS_CC); } else { PHALCON_CPY_WRT(merged_joins, new_join_array); } } else { PHALCON_INIT_NVAR(merged_joins); array_init_size(merged_joins, 1); phalcon_array_append(&merged_joins, new_join, 0); } phalcon_update_property_array_string(this_ptr, SL("_params"), SS("joins"), merged_joins TSRMLS_CC); RETURN_THIS(); }
/** * Executes the validation * * @param string $value * @param int $minimum * @param int $maximum * @return boolean */ PHP_METHOD(Phalcon_Validation_Validator_StringLength, valid){ zval *value, *minimum = NULL, *maximum = NULL; zval *length = NULL, *valid = NULL; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 2, &value, &minimum, &maximum); if (!minimum) { minimum = &PHALCON_GLOBAL(z_null); } if (!maximum) { maximum = &PHALCON_GLOBAL(z_null); } /* At least one of 'min' or 'max' must be set */ if (Z_TYPE_P(minimum) == IS_NULL && Z_TYPE_P(maximum) == IS_NULL) { PHALCON_THROW_EXCEPTION_STR(phalcon_validation_exception_ce, "A minimum or maximum must be set"); return; } /* Check if mbstring is available to calculate the correct length */ if (phalcon_function_exists_ex(SL("mb_strlen")) == SUCCESS) { PHALCON_CALL_FUNCTION(&length, "mb_strlen", value); } else { convert_to_string(value); PHALCON_INIT_VAR(length); ZVAL_LONG(length, Z_STRLEN_P(value)); } /* Maximum length */ if (Z_TYPE_P(maximum) != IS_NULL) { PHALCON_INIT_NVAR(valid); is_smaller_function(valid, maximum, length); if (PHALCON_IS_TRUE(valid)) { phalcon_update_property_str(getThis(), SL("_type"), SL("TooLong")); RETURN_MM_FALSE; } } /* Minimum length */ if (Z_TYPE_P(minimum) != IS_NULL) { PHALCON_INIT_NVAR(valid); is_smaller_function(valid, length, minimum); if (PHALCON_IS_TRUE(valid)) { phalcon_update_property_str(getThis(), SL("_type"), SL("TooShort")); RETURN_MM_FALSE; } } RETURN_MM_TRUE; }
/** * Adds access to resources * * @param string $resourceName * @param mixed $accessList */ PHP_METHOD(Phalcon_Acl_Adapter_Memory, addResourceAccess){ zval *resource_name, *access_list, *resources_names; zval *exception_message, *internal_access_list; zval *access_name = NULL, *access_key = NULL; HashTable *ah0; HashPosition hp0; zval **hd; PHALCON_MM_GROW(); phalcon_fetch_params(1, 2, 0, &resource_name, &access_list); PHALCON_OBS_VAR(resources_names); phalcon_read_property_this(&resources_names, this_ptr, SL("_resourcesNames"), PH_NOISY TSRMLS_CC); if (!phalcon_array_isset(resources_names, resource_name)) { PHALCON_INIT_VAR(exception_message); PHALCON_CONCAT_SVS(exception_message, "Resource '", resource_name, "' does not exist in ACL"); PHALCON_THROW_EXCEPTION_ZVAL(phalcon_acl_exception_ce, exception_message); return; } PHALCON_OBS_VAR(internal_access_list); phalcon_read_property_this(&internal_access_list, this_ptr, SL("_accessList"), PH_NOISY TSRMLS_CC); if (Z_TYPE_P(access_list) == IS_ARRAY) { phalcon_is_iterable(access_list, &ah0, &hp0, 0, 0); while (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) == SUCCESS) { PHALCON_GET_HVALUE(access_name); PHALCON_INIT_NVAR(access_key); PHALCON_CONCAT_VSV(access_key, resource_name, "!", access_name); if (!phalcon_array_isset(internal_access_list, access_key)) { phalcon_update_property_array(this_ptr, SL("_accessList"), access_key, PHALCON_GLOBAL(z_true) TSRMLS_CC); } zend_hash_move_forward_ex(ah0, &hp0); } } else { if (Z_TYPE_P(access_list) == IS_STRING) { PHALCON_INIT_NVAR(access_key); PHALCON_CONCAT_VSV(access_key, resource_name, "!", access_list); if (!phalcon_array_isset(internal_access_list, access_key)) { phalcon_update_property_array(this_ptr, SL("_accessList"), access_key, PHALCON_GLOBAL(z_true) TSRMLS_CC); } } } RETURN_MM_TRUE; }
/** * Phalcon\Mvc\Router\Route constructor * * @param string $pattern * @param array $paths * @param array|string $httpMethods */ PHP_METHOD(Phalcon_Mvc_Router_Route, __construct){ zval *pattern, *paths = NULL, *http_methods = NULL, *unique_id = NULL; zval *route_id = NULL; int separate = 0; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 2, &pattern, &paths, &http_methods); if (!paths) { paths = PHALCON_GLOBAL(z_null); } if (!http_methods) { http_methods = PHALCON_GLOBAL(z_null); } /** * Configure the route (extract parameters, paths, etc) */ PHALCON_CALL_METHOD(NULL, this_ptr, "reconfigure", pattern, paths); /** * Update the HTTP method constraints */ phalcon_update_property_this(this_ptr, SL("_methods"), http_methods TSRMLS_CC); /** * Get the unique Id from the static member _uniqueId */ unique_id = phalcon_fetch_static_property_ce(phalcon_mvc_router_route_ce, SL("_uniqueId") TSRMLS_CC); if (Z_REFCOUNT_P(unique_id) > 1) { PHALCON_INIT_VAR(unique_id); separate = 1; } if (Z_TYPE_P(unique_id) == IS_NULL) { ZVAL_LONG(unique_id, 0); } PHALCON_CPY_WRT_CTOR(route_id, unique_id); /* route_id is now separated from unique_id */ phalcon_update_property_this(this_ptr, SL("_id"), route_id TSRMLS_CC); /* increment_function() will increment the value of the static property as well */ increment_function(unique_id); if (separate) { phalcon_update_static_property_ce(phalcon_mvc_router_route_ce, SL("_uniqueId"), unique_id TSRMLS_CC); } PHALCON_MM_RESTORE(); }
/** * Gets a variable from put request * *<code> * $userEmail = $request->getPut("user_email"); * * $userEmail = $request->getPut("user_email", "email"); *</code> * * @param string $name * @param string|array $filters * @param mixed $defaultValue * @param boolean $notAllowEmpty * @param boolean $noRecursive * @return mixed */ PHP_METHOD(Phalcon_Http_Request, getPut) { zval *name = NULL, *filters = NULL, *default_value = NULL, *not_allow_empty = NULL, *norecursive = NULL, is_put = {}, put = {}, raw = {}, new_put = {}; char *tmp; phalcon_fetch_params(0, 0, 5, &name, &filters, &default_value, ¬_allow_empty, &norecursive); if (!name) { name = &PHALCON_GLOBAL(z_null); } if (!filters) { filters = &PHALCON_GLOBAL(z_null); } if (!default_value) { default_value = &PHALCON_GLOBAL(z_null); } if (!not_allow_empty) { not_allow_empty = &PHALCON_GLOBAL(z_false); } if (!norecursive) { norecursive = &PHALCON_GLOBAL(z_false); } PHALCON_CALL_METHODW(&is_put, getThis(), "isput"); if (!zend_is_true(&is_put)) { RETURN_EMPTY_ARRAY(); } else { phalcon_read_property(&put, getThis(), SL("_put"), PH_NOISY); if (Z_TYPE(put) != IS_ARRAY) { PHALCON_CALL_METHODW(&raw, getThis(), "getrawbody"); array_init(&new_put); PHALCON_ENSURE_IS_STRING(&raw); tmp = estrndup(Z_STRVAL(raw), Z_STRLEN(raw)); sapi_module.treat_data(PARSE_STRING, tmp, &new_put); phalcon_update_property_zval(getThis(), SL("_put"), &new_put); } else { PHALCON_CPY_WRT(&new_put, &put); } } PHALCON_RETURN_CALL_SELFW("_get", &new_put, name, filters, default_value, not_allow_empty, norecursive); }
/** * Phalcon\Assets\Resource\Js * * @param string $path * @param boolean $local * @param boolean $filter * @param array $attributes */ PHP_METHOD(Phalcon_Assets_Resource_Js, __construct){ zval *path, *local = NULL, *filter = NULL, *attributes = NULL, type = {}; phalcon_fetch_params(0, 1, 3, &path, &local, &filter, &attributes); ZVAL_STRING(&type, "js"); PHALCON_CALL_PARENTW(NULL, phalcon_assets_resource_js_ce, getThis(), "__construct", &type, path, (local ? local : &PHALCON_GLOBAL(z_true)), (filter ? filter : &PHALCON_GLOBAL(z_true)), (attributes ? attributes : &PHALCON_GLOBAL(z_null)) ); }