Raymond Irving wrote:
--- 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;
}

?>

Reply via email to