Roxen.git / server / modules / tags / sqltag.pike

version» Context lines:

Roxen.git/server/modules/tags/sqltag.pike:1:   // This is a roxen module. Copyright © 1997-2000, Roxen IS.   //   // A module for Roxen, which gives the tags   // <sqltable>, <sqlquery> and <sqloutput>.   //   // Henrik Grubbström 1997-01-12    - constant cvs_version="$Id: sqltag.pike,v 1.52 2000/03/30 00:50:44 per Exp $"; + constant cvs_version="$Id: sqltag.pike,v 1.53 2000/03/30 18:22:26 nilsson Exp $";   constant thread_safe=1;   #include <module.h> -  + #include <config.h>      inherit "module";   inherit "roxenlib";      Configuration conf;         // Module interface functions      constant module_type=MODULE_PARSER|MODULE_PROVIDER;
Roxen.git/server/modules/tags/sqltag.pike:89:    args->host="CENSORED";    }       if (!args->query)    RXML.parse_error("No query.");       if (args->parse)    args->query = parse_rxml(args->query, id);       Sql.sql con; -  array(mapping(string:mixed)) result; +  array(mapping(string:mixed))|object result;    function sql_connect = id->conf->sql_connect;    mixed error;       if(sql_connect)    error = catch(con = sql_connect(host));    else    error = catch(con = Sql.sql(lower_case(host)=="localhost"?"":host));       if (error)    RXML.run_error("Couldn't connect to SQL server. "+html_encode_string(error[0]));       if (error = catch(result = (tag=="sqltable"?con->big_query(args->query):con->query(args->query)))) {    error = html_encode_string(sprintf("Query %O failed. %s", args->query,    con->error()||""));    RXML.run_error(error);    }       if(tag=="sqlquery") args["dbobj"]=con; -  +  if(result && args->rowinfo) { +  int rows; +  if(arrayp(result)) rows=sizeof(result); +  if(objectp(result)) rows=result->num_rows(); +  RXML.user_set_var(args->rowinfo, rows); +  } +     return result;   }         // -------------------------------- Tag handlers ------------------------------------    -  + #ifdef OLD_RXML_COMPAT   string simpletag_sqloutput(string tag, mapping args, string contents,    RequestID id)   {    NOCACHE();       array res=do_sql_query(tag, args, id);       if (res && sizeof(res)) {    string ret = do_output_tag(args, res, contents, id);    id->misc->defines[" _ok"] = 1; // The effect of <true>, since res isn't parsed.    -  if( args["rowinfo"] ) -  id->variables[args->rowinfo]=sizeof(res); -  +     return ret;    }       if (args["do-once"])    return do_output_tag( args, ({([])}), contents, id )+ "<true>";       id->misc->defines[" _ok"] = 0;   } -  + #endif      class TagSqlplugin {    inherit RXML.Tag;    constant name = "emit";    constant plugin_name = "sql";       array get_dataset(mapping m, RequestID id) {    array|string res=do_sql_query("sqloutput", m, id); -  if(m->rowinfo) id->variables[m->rowinfo] = sizeof(res); +     return res;    }   }      string tag_sqlquery(string tag, mapping args, RequestID id)   {    NOCACHE();       array res=do_sql_query(tag, args, id);   
Roxen.git/server/modules/tags/sqltag.pike:187:       if (!ascii) {    ret="<tr>";    foreach(map(res->fetch_fields(), lambda (mapping m) {    return m->name;    } ), string name)    ret += "<th>"+name+"</th>";    ret += "</tr>\n";    }    -  if( args["rowinfo"] ) -  id->variables[args->rowinfo]=res->num_rows(); -  +     while(arrayp(row=res->fetch_row())) {    if (ascii)    ret += row * "\t" + "\n";    else {    ret += "<tr>";    foreach(row, mixed value)    ret += "<td>"+(value==""?nullvalue:value)+"</td>";    ret += "</tr>\n";    }    }