[PHP-DEV] WDDX Recordsets

2002-04-21 Thread Jordan S. Jones

Yeah, I am curious as to when the code for parsing Recordsets in WDDX from
CVS is going to be rolled over into a release version?



-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] WDDX Recordsets

2002-04-21 Thread Stig S. Bakken

On Sun, 2002-04-21 at 09:27, Jordan S. Jones wrote:
 Yeah, I am curious as to when the code for parsing Recordsets in WDDX from
 CVS is going to be rolled over into a release version?

If it's in HEAD only today it will be part of 4.3.0, which is not
scheduled yet (but I think the 4.3.0 release process should start fairly
soonish after 4.2.0 is out).

 - Stig


-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] WDDX recordset deserialize

2001-11-08 Thread phillip

I have attatched a patch to do recordset, datetime, and field tags processing
during deserialization.

On Thu, 8 Nov 2001, Andrei Zmievski wrote:

 On Thu, 08 Nov 2001, [EMAIL PROTECTED] wrote:
  Hi all:
  
  I am thinking of a way to transform WDDX recordset element into PHP varialbles
  when deserializing the packet.
  
  It seems that all recordset will look like:
  
  var name=querynamerecordset rowcount=? fieldname=f1,f2,...fnfield
  name=f1.../field.../recordset/var
  
  The above can be transformed into:
  
  var name=querynamestringf1,f2,...fn/string/varvar
  name=f1array.../array/varvar name=f2array.../array/var...
  
  If we parse as this transformation, in PHP script:
  
  $values = wddx_deserialize($packet);
  $values[queryname] = f1,f2,...,fn;
  $values[f1] = values in array for f1 field;
  
  $values[fn] = values in array for fn field;
  
  
  Should this solve the recordset problem?
 
 Deserializing the recordset is not a problem, but creating one out of
 PHP values is since there is no exact mapping. It would be better to
 have it work both ways, but maybe deserialization only support at this
 point is fine.
 
 -Andrei

Phillip Pan
---


Index: wddx.c
===
RCS file: /home/phillip/CVS/php/ext/wddx/wddx.c,v
retrieving revision 1.1.1.1
diff -u -w -r1.1.1.1 wddx.c
--- wddx.c  2001/11/08 23:31:11 1.1.1.1
+++ wddx.c  2001/11/09 00:45:05
@@ -59,6 +59,9 @@
 #define EL_VAR var
 #define EL_VAR_NAMEname
 #define EL_VERSION version
+#define EL_RECORDSET   recordset
+#define EL_FIELD   field
+#define EL_DATETIMEdatetime
 
 #define php_wddx_deserialize(a,b) \
php_wddx_deserialize_ex((a)-value.str.val, (a)-value.str.len, (b))
@@ -95,6 +98,7 @@
 
 
 static void php_wddx_process_data(void *user_data, const char *s, int len);
+static void php_wddx_pop_element(void *user_data, const char *name);
 
 
 function_entry wddx_functions[] = {
@@ -561,7 +565,7 @@
/* nothing for now */
}
}
-   } else if (!strcmp(name, EL_STRING)) {
+   } else if (!strcmp(name, EL_STRING) || !strcmp(name, EL_DATETIME)) {
ent.type = ST_STRING;
SET_STACK_VARNAME;

@@ -650,12 +654,43 @@
stack-varname = decoded_value;
}
}
+   } else if (!strcmp(name, EL_RECORDSET)) {
+   int i;
+   ent.type = ST_STRING;
+   SET_STACK_VARNAME;
+
+   ALLOC_ZVAL(ent.data);
+   INIT_PZVAL(ent.data);
+   Z_TYPE_P(ent.data) = IS_STRING;
+   Z_STRVAL_P(ent.data) = empty_string;
+   Z_STRLEN_P(ent.data) = 0;
+   wddx_stack_push((wddx_stack *)stack, ent, sizeof(st_entry));
+   for ( i = 0; atts[i]; i++ ) {
+   if (!strcmp(atts[i], fieldNames)) {
+   break;
}
-   /*
-   else if (!strcmp(name, EL_RECORDSET)) {
-   ent.type = ST_RECORDSET;
}
-   */
+   php_wddx_process_data(user_data, atts[i++], strlen(atts[i++]));
+   php_wddx_pop_element(user_data, EL_STRING);
+   } else if (!strcmp(name, EL_FIELD)) {
+   int i;
+
+   for (i=0; atts[i]; i++) {
+   if (!strcmp(atts[i], EL_VAR_NAME)  atts[i+1]) {
+   char *decoded_value;
+   int decoded_len;
+   decoded_value = 
+xml_utf8_decode(atts[i+1],strlen(atts[i+1]),decoded_len,ISO-8859-1);
+   stack-varname = decoded_value;
+   }
+   }
+   ent.type = ST_ARRAY;
+   SET_STACK_VARNAME;
+
+   ALLOC_ZVAL(ent.data);
+   array_init(ent.data);
+   INIT_PZVAL(ent.data);
+   wddx_stack_push((wddx_stack *)stack, ent, sizeof(st_entry));
+   }
 }
 
 
@@ -675,7 +710,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_BINARY)) {
+   !strcmp(name, EL_BINARY) || !strcmp(name, EL_FIELD) ||
+   !strcmp(name, EL_DATETIME)) {
wddx_stack_top(stack, (void**)ent1);
 
if (!strcmp(name, EL_BINARY)) {


-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list 

[PHP-DEV] WDDX

2001-05-22 Thread Stanislav Malyshev

Recently, WDDX stopped compiling for me, with error:

In file included from internal_functions.c:47:
.../php4/ext/wddx/php_wddx.h:37: expat.h: No such file or
directory

I guess something have changed there. Could anyone say what?
Also I guess configure should say me if I was missing something.
-- 
Stanislav Malyshev, Zend Products Engineer
[EMAIL PROTECTED]  http://www.zend.com/ +972-3-6139665 ext.115



-- 
PHP Development Mailing List http://www.php.net/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]