Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

<?php
/*

        benchReceive.php - example way to handle incoming benchmark data,
        or how to use JSON php class to mangle data.  No benchmark data
        is stored currently.

-- 
-- Table structure for table `benchmarks`
-- 

CREATE TABLE `benchmarks` (
  `id` int(11) NOT NULL auto_increment,
  `useragent` varchar(242) NOT NULL default '',
  `dojover` varchar(96) NOT NULL default '',
  `testNum` int(11) NOT NULL default '0',
  `dijit` varchar(64) NOT NULL default '',
  `testCount` int(11) NOT NULL default '0',
  `testAverage` float NOT NULL default '0',
  `testMethod` varchar(10) NOT NULL default '',
  `testTime` bigint(20) NOT NULL default '0',
  `dataSet` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `dijit` (`dijit`,`testAverage`),
  KEY `dataSet` (`dataSet`)
) TYPE=MyISAM;

--
-- [end table struct] --

*/

if (is_array($_POST)) {

        $username = '';
        $password = '';
        $dataBase = '';
        $table    = '';

        mysql_connect("localhost",$username,$password);
        mysql_select_db($dataBase); 

        require("../../dojo/tests/resources/JSON.php");
        $json = new Services_JSON();

        // see "escape()" call in benchTest.html
        $string = $json->decode(urldecode($_POST['key']));
        // $string = $json->decode($_POST['key']);

        print "<h1>Thank YOU!</h1>";
        print "
                <p>Your results have been added to our database. No 
                personal information outside of what you see here 
                has been stored.
                </p>

                <p>You can <a href= \"javascript:history.back()\">go back</a> 
                and run more tests, or even better, load up another browser 
                and the submit your tests again!
                </p>

                <p>again ... thanks for your time.</p>

                ";

        print "<h3>Results Submitted:</h3>"; 
        print "<pre style=\"font:6pt Terminal,sans-serif; border:1px solid #cecece; background-color:#ededed; padding:20px; \">";

                $ua = $string->clientNavigator;
                $dojov = $string->dojoVersion;

                print "Client: ".$ua."\n";
                print "Dojo v".$dojov."\n"; 

                if (is_array($string->dataSet)) {
                        print "\nTest Results:";
                        // should client serialize a key, or is this safer?
                        $dataSet = md5(serialize($string)); 
                        foreach ($string->dataSet as $test) {
                                $data = array(
                                        'dataSet' => $dataSet,
                                        'useragent' => $ua,
                                        'dojover' => $dojov,
                                        'testNum' => $test->testNum,
                                        'testMethod' => $test->testMethod,      
                                        'testTime' => $test->testTime,
                                        'testAverage' => $test->testAverage,
                                        'testCount' => $test->testCount,
                                        'dijit' => $test->dijit
                                );
                                print_r($data); 
                                add_rec($table,$data); 
                        }
                }

                if (is_array($string->errors)) {
                        // not saving errors at this point
                        print "\nErrors:";
                        foreach ($string->errors as $error) {
                                print_r($error); 
                        }
                }
        print "</pre>"; 
}

function add_rec($table, $data) {

        if (!is_array($data)) { return FALSE; } 

        $keys = array_keys($data);
        $values = array_values($data);
        $field=0;

        for ($field;$field<sizeof($data);$field++) {
                if (!ereg("^[0-9].*$",$keys[$field])) {
                        $sqlfields = $sqlfields.$keys[$field]."=\"".$values[$field]."\", ";
                }
        }
        $sqlfields = (substr($sqlfields,0,(strlen($sqlfields)-2)));

        if ($query = mysql_query("insert into $table set $sqlfields")) {
                $id = mysql_insert_id();
                return ($id); } else { return FALSE; }
        }
}

?>