/** * Escapes a HTML string. Internally uses htmlspecialchars * * @param string $text * @return string */ PHP_METHOD(Phalcon_Escaper, escapeHtml){ zval *text, html_quote_type = {}, encoding = {}; phalcon_fetch_params(0, 1, 0, &text); if (Z_TYPE_P(text) == IS_STRING) { phalcon_read_property(&html_quote_type, getThis(), SL("_htmlQuoteType"), PH_NOISY); phalcon_read_property(&encoding, getThis(), SL("_encoding"), PH_NOISY); phalcon_htmlspecialchars(return_value, text, &html_quote_type, &encoding); return; } RETURN_CTORW(text); }
/** * Escapes a HTML attribute string * * @param string $attribute * @return string */ PHP_METHOD(Phalcon_Escaper, escapeHtmlAttr){ zval *attribute, quoting = {}, encoding = {}; phalcon_fetch_params(0, 1, 0, &attribute); if (Z_TYPE_P(attribute) == IS_STRING && zend_is_true(attribute)) { ZVAL_LONG("ing, ENT_QUOTES); phalcon_read_property(&encoding, getThis(), SL("_encoding"), PH_NOISY); phalcon_htmlspecialchars(return_value, attribute, "ing, &encoding); return; } RETURN_CTORW(attribute); }
/** * Escapes a HTML string. Internally uses htmlspecialchars * * @param string $text * @return string */ PHP_METHOD(Phalcon_Escaper, escapeHtml){ zval *text; zval *html_quote_type, *encoding; phalcon_fetch_params(0, 1, 0, &text); if (Z_TYPE_P(text) == IS_STRING) { html_quote_type = phalcon_fetch_nproperty_this(this_ptr, SL("_htmlQuoteType"), PH_NOISY TSRMLS_CC); encoding = phalcon_fetch_nproperty_this(this_ptr, SL("_encoding"), PH_NOISY TSRMLS_CC); phalcon_htmlspecialchars(return_value, text, html_quote_type, encoding TSRMLS_CC); return; } RETURN_ZVAL(text, 1, 0); }
/** * Escapes a HTML attribute string * * @param string $attribute * @return string */ PHP_METHOD(Phalcon_Escaper, escapeHtmlAttr){ zval *attribute, *encoding; phalcon_fetch_params(0, 1, 0, &attribute); if (Z_TYPE_P(attribute) == IS_STRING && zend_is_true(attribute)) { zval quoting; INIT_ZVAL(quoting); ZVAL_LONG("ing, ENT_QUOTES); encoding = phalcon_fetch_nproperty_this(this_ptr, SL("_encoding"), PH_NOISY TSRMLS_CC); phalcon_htmlspecialchars(return_value, attribute, "ing, encoding TSRMLS_CC); return; } RETURN_ZVAL(attribute, 1, 0); }
/** * Generates a SELECT tag * * @param array $parameters * @param array $data */ PHP_METHOD(Phalcon_Tag_Select, selectField){ zval *parameters, *data = NULL, *params = NULL, *eol, *id = NULL, *name, *value = NULL; zval *use_empty = NULL, *empty_value = NULL, *empty_text = NULL, *code; zval *avalue = NULL, *key = NULL, *close_option, *options = NULL, *using; zval *resultset_options, *array_options, *escaped; HashTable *ah0; HashPosition hp0; zval **hd; PHALCON_MM_GROW(); phalcon_fetch_params(1, 1, 1, ¶meters, &data); if (!data) { PHALCON_INIT_VAR(data); } if (Z_TYPE_P(parameters) != IS_ARRAY) { PHALCON_INIT_VAR(params); array_init_size(params, 2); phalcon_array_append(¶ms, parameters, PH_SEPARATE); phalcon_array_append(¶ms, data, PH_SEPARATE); } else { PHALCON_CPY_WRT(params, parameters); } PHALCON_INIT_VAR(eol); ZVAL_STRING(eol, PHP_EOL, 1); if (!phalcon_array_isset_long(params, 0)) { PHALCON_OBS_VAR(id); phalcon_array_fetch_string(&id, params, SL("id"), PH_NOISY); phalcon_array_update_long(¶ms, 0, &id, PH_COPY | PH_SEPARATE); } PHALCON_OBS_NVAR(id); phalcon_array_fetch_long(&id, params, 0, PH_NOISY); if (!phalcon_array_isset_string(params, SS("name"))) { phalcon_array_update_string(¶ms, SL("name"), &id, PH_COPY | PH_SEPARATE); } else { PHALCON_OBS_VAR(name); phalcon_array_fetch_string(&name, params, SL("name"), PH_NOISY); if (!zend_is_true(name)) { phalcon_array_update_string(¶ms, SL("name"), &id, PH_COPY | PH_SEPARATE); } } /** * Automatically assign the id if the name is not an array */ if (!phalcon_memnstr_str(id, SL("["))) { if (!phalcon_array_isset_string(params, SS("id"))) { phalcon_array_update_string(¶ms, SL("id"), &id, PH_COPY | PH_SEPARATE); } } if (!phalcon_array_isset_string(params, SS("value"))) { PHALCON_INIT_VAR(value); PHALCON_CALL_STATIC_PARAMS_2(value, "phalcon\\tag", "getvalue", id, params); } else { PHALCON_OBS_NVAR(value); phalcon_array_fetch_string(&value, params, SL("value"), PH_NOISY); phalcon_array_unset_string(¶ms, SS("value"), PH_SEPARATE); } PHALCON_INIT_VAR(use_empty); ZVAL_BOOL(use_empty, 0); if (phalcon_array_isset_string(params, SS("useEmpty"))) { if (!phalcon_array_isset_string(params, SS("emptyValue"))) { PHALCON_INIT_VAR(empty_value); ZVAL_STRING(empty_value, "", 1); } else { PHALCON_OBS_NVAR(empty_value); phalcon_array_fetch_string(&empty_value, params, SL("emptyValue"), PH_NOISY); phalcon_array_unset_string(¶ms, SS("emptyValue"), PH_SEPARATE); } if (!phalcon_array_isset_string(params, SS("emptyText"))) { PHALCON_INIT_VAR(empty_text); ZVAL_STRING(empty_text, "Choose...", 1); } else { PHALCON_OBS_NVAR(empty_text); phalcon_array_fetch_string(&empty_text, params, SL("emptyText"), PH_NOISY); phalcon_array_unset_string(¶ms, SS("emptyText"), PH_SEPARATE); } PHALCON_OBS_NVAR(use_empty); phalcon_array_fetch_string(&use_empty, params, SL("useEmpty"), PH_NOISY); phalcon_array_unset_string(¶ms, SS("useEmpty"), PH_SEPARATE); } PHALCON_INIT_VAR(code); ZVAL_STRING(code, "<select", 1); if (Z_TYPE_P(params) == IS_ARRAY) { phalcon_is_iterable(params, &ah0, &hp0, 0, 0); PHALCON_INIT_VAR(escaped); while (zend_hash_get_current_data_ex(ah0, (void**) &hd, &hp0) == SUCCESS) { PHALCON_GET_HKEY(key, ah0, hp0); PHALCON_GET_HVALUE(avalue); if (Z_TYPE_P(key) != IS_LONG) { if (Z_TYPE_P(avalue) != IS_ARRAY) { phalcon_htmlspecialchars(escaped, avalue, NULL, NULL TSRMLS_CC); PHALCON_SCONCAT_SVSVS(code, " ", key, "=\"", escaped, "\""); zval_dtor(escaped); ZVAL_NULL(escaped); } } zend_hash_move_forward_ex(ah0, &hp0); } } PHALCON_SCONCAT_SV(code, ">", eol); PHALCON_INIT_VAR(close_option); PHALCON_CONCAT_SV(close_option, "</option>", eol); if (zend_is_true(use_empty)) { /** * Create an empty value */ PHALCON_SCONCAT_SVSVV(code, "\t<option value=\"", empty_value, "\">", empty_text, close_option); phalcon_array_unset_string(¶ms, SS("useEmpty"), PH_SEPARATE); } if (phalcon_array_isset_long(params, 1)) { PHALCON_OBS_VAR(options); phalcon_array_fetch_long(&options, params, 1, PH_NOISY); } else { PHALCON_CPY_WRT(options, data); } if (Z_TYPE_P(options) == IS_OBJECT) { /** * The options is a resultset */ if (!phalcon_array_isset_string(params, SS("using"))) { PHALCON_THROW_EXCEPTION_STR(phalcon_tag_exception_ce, "The 'using' parameter is required"); return; } else { PHALCON_OBS_VAR(using); phalcon_array_fetch_string(&using, params, SL("using"), PH_NOISY); if (Z_TYPE_P(using) != IS_ARRAY) { if (Z_TYPE_P(using) != IS_OBJECT) { PHALCON_THROW_EXCEPTION_STR(phalcon_tag_exception_ce, "The 'using' parameter should be an Array"); return; } } } /** * Create the SELECT's option from a resultset */ PHALCON_INIT_VAR(resultset_options); PHALCON_CALL_SELF_PARAMS_4(resultset_options, this_ptr, "_optionsfromresultset", options, using, value, close_option); phalcon_concat_self(&code, resultset_options TSRMLS_CC); } else { if (Z_TYPE_P(options) == IS_ARRAY) {