/** * Finishes the render process by stopping the output buffering */ PHP_METHOD(Phalcon_View, finish){ PHALCON_MM_GROW(); PHALCON_CALL_FUNC_NORETURN("ob_end_clean", 0x016); PHALCON_MM_RESTORE(); }
/** * Renders a view using the template engine * * @param string $path * @param array $params * @param bool $mustClean */ PHP_METHOD(Phalcon_Mvc_View_Engine_Php, render){ zval *path = NULL, *params = NULL, *must_clean = NULL, *value = NULL, *key = NULL, *contents = NULL; zval *view = NULL; HashTable *ah0; HashPosition hp0; zval **hd; char *hash_index; uint hash_index_len; ulong hash_num; int hash_type; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zzz", &path, ¶ms, &must_clean) == FAILURE) { PHALCON_MM_RESTORE(); RETURN_NULL(); } if (Z_TYPE_P(must_clean) == IS_BOOL && Z_BVAL_P(must_clean)) { PHALCON_CALL_FUNC_NORETURN("ob_clean"); } if (!phalcon_valid_foreach(params TSRMLS_CC)) { return; } ah0 = Z_ARRVAL_P(params); zend_hash_internal_pointer_reset_ex(ah0, &hp0); fes_1897_0: if(zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) != SUCCESS){ goto fee_1897_0; } PHALCON_INIT_VAR(key); PHALCON_GET_FOREACH_KEY(key, ah0, hp0); PHALCON_INIT_VAR(value); ZVAL_ZVAL(value, *hd, 1, 0); if (phalcon_set_symbol(key, value TSRMLS_CC) == FAILURE){ return; } zend_hash_move_forward_ex(ah0, &hp0); goto fes_1897_0; fee_1897_0: if (phalcon_require(path TSRMLS_CC) == FAILURE) { return; } if (Z_TYPE_P(must_clean) == IS_BOOL && Z_BVAL_P(must_clean)) { PHALCON_INIT_VAR(contents); PHALCON_CALL_FUNC(contents, "ob_get_contents"); PHALCON_INIT_VAR(view); phalcon_read_property(&view, this_ptr, SL("_view"), PH_NOISY_CC); PHALCON_CALL_METHOD_PARAMS_1_NORETURN(view, "setcontent", contents, PH_NO_CHECK); } PHALCON_MM_RESTORE(); }
/** * Starts rendering process enabling the output buffering */ PHP_METHOD(Phalcon_View, start){ PHALCON_MM_GROW(); phalcon_update_property_null(this_ptr, "_content", strlen("_content") TSRMLS_CC); PHALCON_CALL_FUNC_NORETURN("ob_start", 0x014); PHALCON_MM_RESTORE(); }
/** * Renders a view using the template engine * * @param string $path * @param array $params * @param boolean $mustClean */ PHP_METHOD(Phalcon_Mvc_View_Engine_Php, render){ zval *path, *params, *must_clean = NULL, *value = NULL, *key = NULL, *contents; zval *view; HashTable *ah0; HashPosition hp0; zval **hd; PHALCON_MM_GROW(); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|z", &path, ¶ms, &must_clean) == FAILURE) { RETURN_MM_NULL(); } if (!must_clean) { PHALCON_INIT_VAR(must_clean); ZVAL_BOOL(must_clean, 0); } if (PHALCON_IS_TRUE(must_clean)) { PHALCON_CALL_FUNC_NORETURN("ob_clean"); } if (Z_TYPE_P(params) == IS_ARRAY) { if (!phalcon_is_iterable(params, &ah0, &hp0, 0, 0 TSRMLS_CC)) { return; } while (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) == SUCCESS) { PHALCON_GET_FOREACH_KEY(key, ah0, hp0); PHALCON_GET_FOREACH_VALUE(value); if (phalcon_set_symbol(key, value TSRMLS_CC) == FAILURE){ return; } zend_hash_move_forward_ex(ah0, &hp0); } } if (phalcon_require(path TSRMLS_CC) == FAILURE) { return; } if (PHALCON_IS_TRUE(must_clean)) { PHALCON_INIT_VAR(contents); PHALCON_CALL_FUNC(contents, "ob_get_contents"); PHALCON_OBS_VAR(view); phalcon_read_property(&view, this_ptr, SL("_view"), PH_NOISY_CC); PHALCON_CALL_METHOD_PARAMS_1_NORETURN(view, "setcontent", contents); } PHALCON_MM_RESTORE(); }
/** * Starts the session (if headers are already sent the session will not started) * * @return boolean */ PHP_METHOD(Phalcon_Session_Adapter, start){ zval *headers_sent; PHALCON_MM_GROW(); PHALCON_INIT_VAR(headers_sent); PHALCON_CALL_FUNC(headers_sent, "headers_sent"); if (PHALCON_IS_FALSE(headers_sent)) { PHALCON_CALL_FUNC_NORETURN("session_start"); phalcon_update_property_bool(this_ptr, SL("_started"), 1 TSRMLS_CC); RETURN_MM_TRUE; } RETURN_MM_FALSE; }
/** * Starts session, optionally using an adapter * * @param array $options */ PHP_METHOD(Phalcon_Session, start){ zval *headers_sent = NULL; PHALCON_MM_GROW(); PHALCON_INIT_VAR(headers_sent); PHALCON_CALL_FUNC(headers_sent, "headers_sent"); if (Z_TYPE_P(headers_sent) == IS_BOOL && !Z_BVAL_P(headers_sent)) { PHALCON_CALL_FUNC_NORETURN("session_start"); phalcon_update_property_bool(this_ptr, SL("_started"), 1 TSRMLS_CC); PHALCON_MM_RESTORE(); RETURN_TRUE; } PHALCON_MM_RESTORE(); RETURN_FALSE; }
/** * Perform the automatic rendering returning the output as a string * * <code> * $template = $this->view->getRender('products', 'show', array('products' => $products)); * </code> * * @param string $controllerName * @param string $actionName * @param array $params * @param mixed $configCallback * @return string */ PHP_METHOD(Phalcon_Mvc_View, getRender){ zval *controller_name, *action_name, *params = NULL; zval *config_callback = NULL, *view, *status, *content; PHALCON_MM_GROW(); phalcon_fetch_params(1, 2, 2, &controller_name, &action_name, ¶ms, &config_callback); if (!params) { PHALCON_INIT_VAR(params); } else { PHALCON_SEPARATE_PARAM(params); } if (!config_callback) { PHALCON_INIT_VAR(config_callback); } /** * We must to clone the current view to keep the old state */ PHALCON_INIT_VAR(view); if (phalcon_clone(view, this_ptr TSRMLS_CC) == FAILURE) { return; } /** * The component must be reset to its defaults */ PHALCON_CALL_METHOD_NORETURN(view, "reset"); /** * Set the render variables */ if (Z_TYPE_P(params) == IS_ARRAY) { PHALCON_CALL_METHOD_PARAMS_1_NORETURN(view, "setvars", params); } /** * Perform extra configurations over the cloned object */ if (Z_TYPE_P(config_callback) == IS_OBJECT) { PHALCON_INIT_NVAR(params); array_init_size(params, 1); phalcon_array_append(¶ms, view, PH_SEPARATE TSRMLS_CC); PHALCON_INIT_VAR(status); PHALCON_CALL_USER_FUNC_ARRAY(status, config_callback, params); } /** * Start the output buffering */ PHALCON_CALL_METHOD_NORETURN(view, "start"); /** * Perform the render passing only the controller and action */ PHALCON_CALL_METHOD_PARAMS_2_NORETURN(view, "render", controller_name, action_name); /** * Stop the output buffering */ PHALCON_CALL_FUNC_NORETURN("ob_end_clean"); /** * Get the processed content */ PHALCON_INIT_VAR(content); PHALCON_CALL_METHOD(content, view, "getcontent"); RETURN_CCTOR(content); }