iliaa Sat Jun 28 02:59:31 2003 EDT
Added files: (Branch: PHP_4_3)
/php-src/ext/wddx/tests .cvsignore 001.phpt wddx.xml
Modified files:
/php-src/ext/wddx wddx.c
Log:
MFH: Added missing handling of dateTime
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.96.2.3 php-src/ext/wddx/wddx.c:1.96.2.4
--- php-src/ext/wddx/wddx.c:1.96.2.3 Sat Jan 4 14:51:46 2003
+++ php-src/ext/wddx/wddx.c Sat Jun 28 02:59:31 2003
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.96.2.3 2003/01/04 19:51:46 helly Exp $ */
+/* $Id: wddx.c,v 1.96.2.4 2003/06/28 06:59:31 iliaa Exp $ */
#include "php.h"
#include "php_wddx.h"
@@ -32,6 +32,7 @@
#include "ext/standard/php_smart_str.h"
#include "ext/standard/html.h"
#include "ext/standard/php_string.h"
+#include "ext/standard/php_parsedate.h"
#define WDDX_BUF_LEN 256
#define PHP_CLASS_NAME_VAR "php_class_name"
@@ -52,6 +53,7 @@
#define EL_VERSION "version"
#define EL_RECORDSET "recordset"
#define EL_FIELD "field"
+#define EL_DATETIME "dateTime"
#define php_wddx_deserialize(a,b) \
php_wddx_deserialize_ex((a)->value.str.val, (a)->value.str.len, (b))
@@ -77,7 +79,8 @@
ST_BINARY,
ST_STRUCT,
ST_RECORDSET,
- ST_FIELD
+ ST_FIELD,
+ ST_DATETIME
} type;
char *varname;
} st_entry;
@@ -867,6 +870,14 @@
}
wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry));
+ } else if (!strcmp(name, EL_DATETIME)) {
+ ent.type = ST_DATETIME;
+ SET_STACK_VARNAME;
+
+ ALLOC_ZVAL(ent.data);
+ INIT_PZVAL(ent.data);
+ Z_TYPE_P(ent.data) = IS_LONG;
+ wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry));
}
}
/* }}} */
@@ -890,7 +901,8 @@
if (!strcmp(name, EL_STRING) || !strcmp(name, EL_NUMBER) ||
!strcmp(name, EL_BOOLEAN) || !strcmp(name, EL_NULL) ||
!strcmp(name, EL_ARRAY) || !strcmp(name, EL_STRUCT) ||
- !strcmp(name, EL_RECORDSET) || !strcmp(name, EL_BINARY)) {
+ !strcmp(name, EL_RECORDSET) || !strcmp(name, EL_BINARY) ||
+ !strcmp(name, EL_DATETIME)) {
wddx_stack_top(stack, (void**)&ent1);
if (!strcmp(name, EL_BINARY)) {
@@ -1054,6 +1066,22 @@
}
break;
+ case ST_DATETIME: {
+ char *tmp;
+
+ tmp = do_alloca(len + 1);
+ memcpy(tmp, s, len);
+ tmp[len] = '\0';
+
+ Z_LVAL_P(ent->data) = php_parse_date(tmp, NULL);
+ /* date out of range < 1969 or > 2038 */
+ if (Z_LVAL_P(ent->data) == -1) {
+ Z_TYPE_P(ent->data) = IS_STRING;
+ Z_STRLEN_P(ent->data) = len;
+ Z_STRVAL_P(ent->data) = estrndup(s, len);
+ }
+ free_alloca(tmp);
+ }
default:
break;
}
Index: php-src/ext/wddx/tests/.cvsignore
+++ php-src/ext/wddx/tests/.cvsignore
phpt.*
*.diff
*.log
*.exp
*.out
*.php
Index: php-src/ext/wddx/tests/001.phpt
+++ php-src/ext/wddx/tests/001.phpt
--TEST--
wddz deserialization test
--FILE--
<?php
$path = dirname(__FILE__);
var_dump(wddx_deserialize(file_get_contents("{$path}/wddx.xml")));
?>
--EXPECT--
array(11) {
["aNull"]=>
NULL
["aString"]=>
string(8) "a string"
["aNumber"]=>
float(-12.456)
["aDateTime"]=>
int(897600732)
["aDateTime2"]=>
string(19) "1930-06-12T04:32:12"
["aDateTime3"]=>
string(19) "2040-06-12T04:32:12"
["aBoolean"]=>
bool(true)
["anArray"]=>
array(2) {
[0]=>
int(10)
[1]=>
string(14) "second element"
}
["aBinary"]=>
string(11) "binary data"
["anObject"]=>
array(2) {
["s"]=>
string(8) "a string"
["n"]=>
float(-12.456)
}
["aRecordset"]=>
array(2) {
["NAME"]=>
array(2) {
[0]=>
string(8) "John Doe"
[1]=>
string(8) "Jane Doe"
}
["AGE"]=>
array(2) {
[0]=>
int(34)
[1]=>
int(31)
}
}
}
Index: php-src/ext/wddx/tests/wddx.xml
+++ php-src/ext/wddx/tests/wddx.xml
<?xml version='1.0'?>
<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
<wddxPacket version='1.0'>
<header/>
<data>
<struct>
<var name='aNull'>
<null/>
</var>
<var name='aString'>
<string>a string</string>
</var>
<var name='aNumber'>
<number>-12.456</number>
</var>
<var name='aDateTime'>
<dateTime>1998-06-12T04:32:12</dateTime>
</var>
<var name='aDateTime2'>
<dateTime>1930-06-12T04:32:12</dateTime>
</var>
<var name='aDateTime3'>
<dateTime>2040-06-12T04:32:12</dateTime>
</var>
<var name='aBoolean'>
<boolean value='true'/>
</var>
<var name='anArray'>
<array length='2'>
<number>10</number>
<string>second element</string>
</array>
</var>
<var name='aBinary'>
<binary length='11'>YmluYXJ5IGRhdGE=</binary>
</var>
<var name='anObject'>
<struct>
<var name='s'>
<string>a string</string>
</var>
<var name='n'>
<number>-12.456</number>
</var>
</struct>
</var>
<var name='aRecordset'>
<recordset rowCount='2' fieldNames='NAME,AGE'>
<field name='NAME'>
<string>John Doe</string>
<string>Jane Doe</string>
</field>
<field name='AGE'>
<number>34</number>
<number>31</number>
</field>
</recordset>
</struct>
</data>
</wddxPacket>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php