@@ -137,11 +137,7 @@ int dom_element_tag_name_read(dom_object *obj, zval *retval)
137
137
138
138
/* }}} */
139
139
140
- /* {{{ className string
141
- URL: https://dom.spec.whatwg.org/#dom-element-classname
142
- Since:
143
- */
144
- int dom_element_class_name_read (dom_object * obj , zval * retval )
140
+ static int dom_element_reflected_attribute_read (dom_object * obj , zval * retval , const char * name )
145
141
{
146
142
xmlNodePtr nodep = dom_object_get_node (obj );
147
143
@@ -150,7 +146,7 @@ int dom_element_class_name_read(dom_object *obj, zval *retval)
150
146
return FAILURE ;
151
147
}
152
148
153
- xmlChar * content = xmlGetNoNsProp (nodep , (const xmlChar * ) "class" );
149
+ xmlChar * content = xmlGetNoNsProp (nodep , (const xmlChar * ) name );
154
150
if (content == NULL ) {
155
151
ZVAL_EMPTY_STRING (retval );
156
152
return SUCCESS ;
@@ -162,26 +158,61 @@ int dom_element_class_name_read(dom_object *obj, zval *retval)
162
158
return SUCCESS ;
163
159
}
164
160
165
- int dom_element_class_name_write (dom_object * obj , zval * newval )
161
+ static xmlAttrPtr dom_element_reflected_attribute_write (dom_object * obj , zval * newval , const char * name )
166
162
{
167
163
xmlNode * nodep = dom_object_get_node (obj );
168
164
169
165
if (nodep == NULL ) {
170
166
php_dom_throw_error (INVALID_STATE_ERR , 1 );
171
- return FAILURE ;
167
+ return NULL ;
172
168
}
173
169
174
170
if (dom_node_is_read_only (nodep ) == SUCCESS ) {
175
171
php_dom_throw_error (NO_MODIFICATION_ALLOWED_ERR , dom_get_strict_error (obj -> document ));
176
- return FAILURE ;
172
+ return NULL ;
177
173
}
178
174
179
175
/* Typed property, so it is a string already */
180
176
ZEND_ASSERT (Z_TYPE_P (newval ) == IS_STRING );
181
- xmlSetProp (nodep , (const xmlChar * ) "class" , (const xmlChar * ) Z_STRVAL_P (newval ));
177
+ return xmlSetProp (nodep , (const xmlChar * ) name , (const xmlChar * ) Z_STRVAL_P (newval ));
178
+ }
182
179
183
- php_libxml_invalidate_node_list_cache_from_doc (nodep -> doc );
180
+ /* {{{ className string
181
+ URL: https://dom.spec.whatwg.org/#dom-element-classname
182
+ Since:
183
+ */
184
+ int dom_element_class_name_read (dom_object * obj , zval * retval )
185
+ {
186
+ return dom_element_reflected_attribute_read (obj , retval , "class" );
187
+ }
184
188
189
+ int dom_element_class_name_write (dom_object * obj , zval * newval )
190
+ {
191
+ if (dom_element_reflected_attribute_write (obj , newval , "class" )) {
192
+ return SUCCESS ;
193
+ }
194
+ return FAILURE ;
195
+ }
196
+ /* }}} */
197
+
198
+ /* {{{ id string
199
+ URL: https://dom.spec.whatwg.org/#dom-element-id
200
+ Since:
201
+ */
202
+ int dom_element_id_read (dom_object * obj , zval * retval )
203
+ {
204
+ return dom_element_reflected_attribute_read (obj , retval , "id" );
205
+ }
206
+
207
+ static void php_set_attribute_id (xmlAttrPtr attrp , bool is_id );
208
+
209
+ int dom_element_id_write (dom_object * obj , zval * newval )
210
+ {
211
+ xmlAttrPtr attr = dom_element_reflected_attribute_write (obj , newval , "id" );
212
+ if (!attr ) {
213
+ return FAILURE ;
214
+ }
215
+ php_set_attribute_id (attr , true);
185
216
return SUCCESS ;
186
217
}
187
218
/* }}} */
0 commit comments