-
- if (Z_TYPE_P(qarray) == IS_ARRAY) {
- if (Z_TYPE_P(params) == IS_ARRAY) {
- HashPosition pos;
- zval **name;
-
- FOREACH_VAL(pos, params, name) {
- ZVAL_ADDREF(*name);
- convert_to_string_ex(name);
- zend_hash_del(Z_ARRVAL_P(qarray), Z_STRVAL_PP(name), Z_STRLEN_PP(name) + 1);
- zval_ptr_dtor(name);
- }
-
- http_querystring_update(qarray, GET_PROP(queryString));
- } else {
- ZVAL_ADDREF(params);
- convert_to_string_ex(¶ms);
- if (SUCCESS == zend_hash_del(Z_ARRVAL_P(qarray), Z_STRVAL_P(params), Z_STRLEN_P(params) + 1)) {
- http_querystring_update(qarray, GET_PROP(queryString));
- }
- zval_ptr_dtor(¶ms);
- }
- }
- }
- IF_RETVAL_USED {
- RETURN_PROP(queryString);
- }
-}
-/* }}} */
-
-/* {{{ proto string HttpQueryString::mod(array params)
- *
- * Modifies the query string according to params. NULL values will unset the variable.
- */
-PHP_METHOD(HttpQueryString, mod)
-{
- zval *params;
-
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|b", ¶ms)) {
- zval **value, *qarray = GET_PROP(queryArray);
- HashPosition pos;
- char *key = NULL;
- uint keylen = 0;
- ulong idx = 0;
-
- FOREACH_KEYLENVAL(pos, params, key, keylen, idx, value) {
- if (key) {
- http_querystring_modify_array(qarray, key, keylen, *value);
- } else {
- keylen = spprintf(&key, 0, "%lu", idx);
- http_querystring_modify_array(qarray, key, keylen, *value);
- efree(key);
- }
- key = NULL;