--- Aaron Shafovaloff <[EMAIL PROTECTED]> wrote:
Any idea when SODA will be ported to PHP?
Well, I don't know when, but I it's currently been worked on.
Any word on the PHP verion of IOelement or SODA?
-- Raymond Irving
I'm currently involved in a different project which is really urgent so I have slowed down the porting. I hope to return to dynapi & SODA in a couple of weeks. Until now, I'd like to hear about any new contribution.
Attached you'll find my porting so far.
Grig
<?php
/* IOElement Server Library - For PHP Servers For use with DynAPI IOElement client-side javascript The DynAPI Distribution is distributed under the terms of the GNU LGPL license. Returned Data type: integer, float, string, date, array, object (associative array) */ $wso_vars = array[]; // stores javascript variables to be returned to client $wso_endDocWrite = ""; // Prevent ws__docWrite from sending data to client $wso_IOResponse = ""; // Returned Content Format: text/html (default) or text/xml $wso_reqMethod = ""; /* Add Variables - javascript variables to be sent to client - should only used with html RTC format */ function wsAddVariable($name, $value){ if(!$name) return; $wso_vars[$name] = $value; // add variable to be sent to client }; /* Dispatch Variables - should only be used text/html RC format when working with SODA */ function wsDispatchVariables() { global $wso_vars, $wso_IOResponse; $arr = ""; foreach ($wso_vars as $varname => $value) $arr .= "var $varname=" . ws__Var2Text($value) . ";\n"; $wso_IOResponse = wsGetRequest("IOResponse"); ws__docWrite($arr); }; /* End Response */ function wsEndResponse(){ $wso_endDocWrite = true; }; /* Get Request */ function wsGetRequest($name){ // Get requested data sent by client via GET or POST // Note: ASP Request Object returned a very strange object type. // This is my only workaround // PHP: import_request_variables() could be used as well global $wso_reqMethod; $wso_reqMethod = strtolower($_SERVER("REQUEST_METHOD")); switch ($wso_reqMethod) { case "post" : return $_POST($name); case "get" : return $_GET($name); } } // [Private] Functions ---------------------------------------- /* Doc Write */ function ws__docWrite($h){ if ($wso_endDocWrite) return; if($wso_IOResponse == "text/xml") $html = $h; else{ $html = '<html><script language="javascript">\nvar ioObj,dynapi=parent.dynapi;\n'; $html .= 'if (dynapi) ioObj=parent.IOElement.notify(this);\n'; $html .= 'else alert(\'Error: Missing or invalid DynAPI library\');\n'; $html .= $h . '\n</script></html>'; } print $html; }; // Var2Text function ws__Var2Text($v) { if (!isset($v)) return "null"; //doesn't make much sense. I wonder how is this working in the .js version if (is_string($v)) return "\'$v\'"; if (is_array($v)) { $arr = "["; foreach ($v as $value) $arr .= ws_Var2Text($value) . "'"; return substr($arr, 0, -1) . "]"); } } // Var2Text Encode - converts multiline text into single line $repltable = array("\\" => "\\\\", "\'" => "\\'", "\r\n" => "\\n", "\n" => "\\n", "\r" => "\\r"); function ws__Var2TextEncode($str) { global $repltable; if (is_null($str)) return; foreach ($repltable as $search => $replace) $str = str_replace($search, $replace, $str); return $str; } ?>