dom_object *intern;
int name_len;
-
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_element_class_entry, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
value = xmlGetProp(nodep, name);
if (value == NULL) {
RETURN_EMPTY_STRING();
char *name, *value;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &value, &value_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_element_class_entry, &name, &name_len, &value, &value_len) == FAILURE) {
return;
}
+ if (name_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attribute Name is required");
+ RETURN_FALSE;
+ }
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_FALSE;
int name_len;
char *name;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_element_class_entry, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_FALSE;
dom_object *intern;
char *name;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_element_class_entry, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
attrp = xmlHasProp(nodep,name);
if (attrp == NULL) {
RETURN_FALSE;
dom_object *intern, *attrobj, *oldobj;
int ret;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_element_class_entry, &node, dom_attr_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_FALSE;
dom_object *intern, *attrobj;
int ret;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_element_class_entry, &node, dom_attr_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_FALSE;
char *name;
xmlChar *local;
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_element_class_entry, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
local = xmlCharStrndup(name, name_len);
int uri_len = 0, name_len = 0;
char *uri, *name, *strattr;
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!s", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len) == FAILURE) {
return;
}
+
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
strattr = xmlGetNsProp(elemp, name, uri);
if (strattr != NULL) {
dom_object *intern;
int errorcode = 0, stricterror, is_xmlns = 0;
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!ss", &uri, &uri_len, &name, &name_len, &value, &value_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!ss", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len, &value, &value_len) == FAILURE) {
return;
}
+ if (name_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Attribute Name is required");
+ RETURN_FALSE;
+ }
+
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
stricterror = dom_get_strict_error(intern->document);
if (dom_node_is_read_only(elemp) == SUCCESS) {
int name_len, uri_len;
char *name, *uri;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!s", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_NULL();
int uri_len, name_len, ret;
char *uri, *name;
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
attrp = xmlHasNsProp(elemp, name, uri);
if (attrp == NULL) {
dom_object *intern, *attrobj, *oldobj;
int ret;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_element_class_entry, &node, dom_attr_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_is_read_only(nodep) == SUCCESS) {
php_dom_throw_error(NO_MODIFICATION_ALLOWED_ERR, dom_get_strict_error(intern->document) TSRMLS_CC);
RETURN_FALSE;
dom_object *intern, *namednode;
char *uri, *name;
xmlChar *local, *nsuri;
-// xmlHashTable *ht;
-
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC);
namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC);
local = xmlCharStrndup(name, name_len);
char *name, *value;
int name_len;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_element_class_entry, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
value = xmlGetProp(nodep, name);
if (value == NULL) {
RETURN_FALSE;
int uri_len, name_len;
char *uri, *name, *value;
- DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!s", &id, dom_element_class_entry, &uri, &uri_len, &name, &name_len) == FAILURE) {
return;
}
+ DOM_GET_OBJ(elemp, id, xmlNodePtr, intern);
+
value = xmlGetNsProp(elemp, name, uri);
if (value != NULL) {
int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC)
{
xmlNode *nodep;
+ zval value_copy;
nodep = dom_object_get_node(obj);
case XML_COMMENT_NODE:
case XML_CDATA_SECTION_NODE:
case XML_PI_NODE:
- convert_to_string(newval);
+ if (newval->type != IS_STRING) {
+ if(newval->refcount > 1) {
+ value_copy = *newval;
+ zval_copy_ctor(&value_copy);
+ newval = &value_copy;
+ }
+ convert_to_string(newval);
+ }
xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1);
+ if (newval == &value_copy) {
+ zval_dtor(newval);
+ }
break;
default:
break;
int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC)
{
+ zval value_copy;
xmlNode *nodep;
xmlDocPtr doc;
xmlNsPtr ns, curns = NULL;
switch (nodep->type) {
case XML_ELEMENT_NODE:
case XML_ATTRIBUTE_NODE:
+ if (newval->type != IS_STRING) {
+ if(newval->refcount > 1) {
+ value_copy = *newval;
+ zval_copy_ctor(&value_copy);
+ newval = &value_copy;
+ }
+ convert_to_string(newval);
+ }
prefix = Z_STRVAL_P(newval);
if (nodep->ns != NULL && !xmlStrEqual(nodep->ns->prefix, (xmlChar *)prefix)) {
strURI = (char *) nodep->ns->href;
(nodep->type == XML_ATTRIBUTE_NODE && !strcmp (prefix, "xmlns") &&
strcmp (strURI, DOM_XMLNS_NAMESPACE)) ||
(nodep->type == XML_ATTRIBUTE_NODE && !strcmp (nodep->name, "xmlns"))) {
-
+ if (newval == &value_copy) {
+ zval_dtor(newval);
+ }
php_dom_throw_error(NAMESPACE_ERR, dom_get_strict_error(obj->document) TSRMLS_CC);
return FAILURE;
}
nodep->ns = curns;
}
+ if (newval == &value_copy) {
+ zval_dtor(newval);
+ }
break;
default:
break;
*/
PHP_FUNCTION(dom_node_insert_before)
{
- zval *id, *node, *ref, *rv = NULL;
+ zval *id, *node, *ref = NULL, *rv = NULL;
xmlNodePtr child, new_child, parentp, refp;
dom_object *intern, *childobj, *refpobj;
int ret, stricterror;
- DOM_GET_THIS_OBJ(parentp, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "oo!", &node, &ref) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO|O!", &id, dom_node_class_entry, &node, dom_node_class_entry, &ref, dom_node_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(parentp, id, xmlNodePtr, intern);
DOM_GET_OBJ(child, node, xmlNodePtr, childobj);
new_child = NULL;
int ret;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OOO", &id, dom_node_class_entry, &newnode, dom_node_class_entry, &oldnode, dom_node_class_entry) == FAILURE) {
+ return;
+ }
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
if (dom_node_children_valid(nodep) == FAILURE) {
RETURN_FALSE;
}
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "oo", &newnode, &oldnode) == FAILURE) {
- return;
- }
-
DOM_GET_OBJ(newchild, newnode, xmlNodePtr, newchildobj);
DOM_GET_OBJ(oldchild, oldnode, xmlNodePtr, oldchildobj);
dom_object *intern, *childobj;
int ret, stricterror;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_node_class_entry, &node, dom_node_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_children_valid(nodep) == FAILURE) {
RETURN_FALSE;
}
dom_object *intern, *childobj;
int ret, stricterror;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_node_class_entry, &node, dom_node_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (dom_node_children_valid(nodep) == FAILURE) {
RETURN_FALSE;
}
xmlNode *nodep;
dom_object *intern;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &id, dom_node_class_entry) == FAILURE) {
+ return;
+ }
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
- DOM_NO_ARGS();
-
if (dom_node_children_valid(nodep) == FAILURE) {
RETURN_FALSE;
}
dom_object *intern;
long recursive = 0;
- DOM_GET_THIS_OBJ(n, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &recursive) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &id, dom_node_class_entry, &recursive) == FAILURE) {
return;
}
+ DOM_GET_OBJ(n, id, xmlNodePtr, intern);
+
node = xmlDocCopyNode(n, n->doc, recursive);
/* When deep is false Element nodes still require the attributes
xmlNode *nodep;
dom_object *intern;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &id, dom_node_class_entry) == FAILURE) {
+ return;
+ }
- DOM_NO_ARGS();
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
dom_normalize(nodep TSRMLS_CC);
*/
PHP_FUNCTION(dom_node_is_supported)
{
+ zval *id;
int feature_len, version_len;
char *feature, *version;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &feature, &feature_len, &version, &version_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", &id, dom_node_class_entry, &feature, &feature_len, &version, &version_len) == FAILURE) {
return;
}
xmlNode *nodep;
dom_object *intern;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &id, dom_node_class_entry) == FAILURE) {
+ return;
+ }
- DOM_NO_ARGS();
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
if (nodep->type != XML_ELEMENT_NODE)
RETURN_FALSE;
xmlNodePtr nodeotherp, nodep;
dom_object *intern, *nodeotherobj;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "o", &node) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OO", &id, dom_node_class_entry, &node, dom_node_class_entry) == FAILURE) {
return;
}
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
DOM_GET_OBJ(nodeotherp, node, xmlNodePtr, nodeotherobj);
if (nodep == nodeotherp) {
int uri_len = 0;
char *uri;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &uri, &uri_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_node_class_entry, &uri, &uri_len) == FAILURE) {
return;
}
-
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (uri_len > 0) {
switch (nodep->type) {
case XML_ELEMENT_NODE:
int uri_len = 0;
char *uri;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &uri, &uri_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_node_class_entry, &uri, &uri_len) == FAILURE) {
return;
}
-
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (uri_len > 0) {
nsptr = xmlSearchNs(nodep->doc, nodep, NULL);
if (nsptr && xmlStrEqual(nsptr->href, uri)) {
int prefix_len = 0;
char *prefix;
- DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern);
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &prefix, &prefix_len) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &id, dom_node_class_entry, &prefix, &prefix_len) == FAILURE) {
return;
}
-
+
+ DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
+
if (prefix_len > 0) {
nsptr = xmlSearchNs(nodep->doc, nodep, prefix);
if (nsptr && nsptr->href != NULL) {