@@ -70,6 +70,7 @@ static xmlNodePtr to_xml_duration(encodeTypePtr type, zval *data, int style, xml
7070
7171static zval * to_zval_object (zval * ret , encodeTypePtr type , xmlNodePtr data );
7272static zval * to_zval_array (zval * ret , encodeTypePtr type , xmlNodePtr data );
73+ static zval * to_zval_datetime (zval * ret , encodeTypePtr type , xmlNodePtr data );
7374
7475static xmlNodePtr to_xml_object (encodeTypePtr type , zval * data , int style , xmlNodePtr parent );
7576static xmlNodePtr to_xml_array (encodeTypePtr type , zval * data , int style , xmlNodePtr parent );
@@ -140,9 +141,9 @@ encode defaultEncoding[] = {
140141 {{XSD_FLOAT , XSD_FLOAT_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_double , to_xml_double },
141142 {{XSD_DOUBLE , XSD_DOUBLE_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_double , to_xml_double },
142143
143- {{XSD_DATETIME , XSD_DATETIME_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_datetime },
144- {{XSD_TIME , XSD_TIME_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_time },
145- {{XSD_DATE , XSD_DATE_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_date },
144+ {{XSD_DATETIME , XSD_DATETIME_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_datetime , to_xml_datetime },
145+ {{XSD_TIME , XSD_TIME_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_datetime , to_xml_time },
146+ {{XSD_DATE , XSD_DATE_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_datetime , to_xml_date },
146147 {{XSD_GYEARMONTH , XSD_GYEARMONTH_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_gyearmonth },
147148 {{XSD_GYEAR , XSD_GYEAR_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_gyear },
148149 {{XSD_GMONTHDAY , XSD_GMONTHDAY_STRING , XSD_NAMESPACE , NULL , NULL , NULL }, to_zval_stringc , to_xml_gmonthday },
@@ -1616,6 +1617,32 @@ static zval *to_zval_object(zval *ret, encodeTypePtr type, xmlNodePtr data)
16161617 return to_zval_object_ex (ret , type , data , NULL );
16171618}
16181619
1620+ static zval * to_zval_datetime (zval * ret , encodeTypePtr type , xmlNodePtr data )
1621+ {
1622+ if (!(SOAP_GLOBAL (features ) & SOAP_USE_DATETIME_OBJECT )) {
1623+ return to_zval_stringc (ret , type , data );
1624+ }
1625+
1626+ zval str_zv ;
1627+ ZVAL_NULL (& str_zv );
1628+ to_zval_stringc (& str_zv , type , data );
1629+
1630+ if (Z_TYPE (str_zv ) != IS_STRING ) {
1631+ ZVAL_COPY_VALUE (ret , & str_zv );
1632+ return ret ;
1633+ }
1634+
1635+ php_date_instantiate (php_date_get_immutable_ce (), ret );
1636+ if (!php_date_initialize (Z_PHPDATE_P (ret ), Z_STRVAL (str_zv ), Z_STRLEN (str_zv ), NULL , NULL , 0 )) {
1637+ zval_ptr_dtor (ret );
1638+ ZVAL_COPY_VALUE (ret , & str_zv );
1639+ return ret ;
1640+ }
1641+
1642+ zval_ptr_dtor_str (& str_zv );
1643+ return ret ;
1644+ }
1645+
16191646
16201647static int model_to_xml_object (xmlNodePtr node , sdlContentModelPtr model , zval * object , int style , int strict )
16211648{
0 commit comments