mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
Commit acutal code only, will do ws on another pass.
This commit is contained in:
parent
00418457d3
commit
f8d7307270
1 changed files with 39 additions and 9 deletions
|
@ -102,13 +102,13 @@ static zend_function_entry domxml_functions[] = {
|
|||
PHP_FE(domxml_new_xmldoc, NULL)
|
||||
PHP_FALIAS(new_xmldoc, domxml_new_xmldoc, NULL)
|
||||
#if defined(LIBXML_XPATH_ENABLED)
|
||||
/* PHP_FE(xpath_new_context, NULL)
|
||||
PHP_FE(xpath_new_context, NULL)
|
||||
PHP_FE(xpath_eval, NULL)
|
||||
PHP_FE(xpath_eval_expression, NULL) */
|
||||
PHP_FE(xpath_eval_expression, NULL)
|
||||
#endif
|
||||
#if defined(LIBXML_XPTR_ENABLED)
|
||||
/* PHP_FE(xptr_new_context, NULL)
|
||||
PHP_FE(xptr_eval, NULL) */
|
||||
PHP_FE(xptr_new_context, NULL)
|
||||
PHP_FE(xptr_eval, NULL)
|
||||
#endif
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
|
@ -2477,21 +2477,50 @@ PHP_FUNCTION(xptr_new_context)
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
/* {{{ */
|
||||
static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr)
|
||||
{
|
||||
zval *id, *str, *rv;
|
||||
zval *id, *str, *rv, *contextnode;
|
||||
xmlXPathContextPtr ctxp;
|
||||
xmlXPathObjectPtr xpathobjp;
|
||||
xmlNode *contextnodep;
|
||||
int ret;
|
||||
|
||||
if (ZEND_NUM_ARGS() != 1 || getParameters(ht, 1, &str) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
contextnode = NULL;
|
||||
contextnodep = NULL;
|
||||
|
||||
id = getThis();
|
||||
|
||||
if (! id) {
|
||||
switch(ZEND_NUM_ARGS()) {
|
||||
case 2:
|
||||
if ((getParameters(ht, 2, &id, &str)) == FAILURE)
|
||||
{
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if ((getParameters(ht, 3, &id, &str, &contextnode)) == FAILURE)
|
||||
{
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ctxp = php_xpath_get_context(id, le_xpathctxp, 0 TSRMLS_CC);
|
||||
convert_to_string(str);
|
||||
|
||||
if (contextnode) {
|
||||
contextnodep = php_dom_get_object(contextnode, le_domxmlnodep, 0);
|
||||
}
|
||||
ctxp->node = contextnodep;
|
||||
|
||||
#if defined(LIBXML_XPTR_ENABLED)
|
||||
if(mode == PHP_XPTR) {
|
||||
xpathobjp = xmlXPtrEval(BAD_CAST str->value.str.val, ctxp);
|
||||
|
@ -2505,6 +2534,7 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr)
|
|||
}
|
||||
#endif
|
||||
|
||||
ctxp->node = NULL;
|
||||
if (!xpathobjp) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue