2011-11-02 23:49:36 +00:00
< ? php
2011-11-07 21:19:32 +00:00
$db = new PDO ( 'sqlite:./stats.db' );
2011-11-10 08:16:29 +00:00
$db -> query ( 'CREATE TABLE IF NOT EXISTS stats (id INTEGER, agent TEXT, agent_version Text, agent_full TEXT, point TEXT, value REAL, time TIMESTAMP, pathname TEXT, PRIMARY KEY (id))' );
2011-11-02 23:49:36 +00:00
// making a sad attempt here to provide a clean REST-respecting url scheme.
// stats with a GET returns - wait for it - the stats, and a post with the
// the right params will create a new entry
if ( $_SERVER [ 'REQUEST_METHOD' ] == " GET " ) {
2011-11-10 18:55:14 +00:00
$agent = ( empty ( $_GET [ 'agent' ])) ? '' : urldecode ( $_GET [ 'agent' ]);
$data_point = ( empty ( $_GET [ 'data_point' ])) ? '' : urldecode ( $_GET [ 'data_point' ]);
2011-11-10 17:00:14 +00:00
2011-11-10 17:04:00 +00:00
$st = $db -> prepare ( '
SELECT agent , agent_version , point , avg ( value ) as avg_value ,
pathname , strftime ( \ ' % Y -% m -% d\ ' , time ) as day
2011-11-14 19:05:50 +00:00
FROM (
SELECT agent , agent_version , agent_full , pathname , point , value , time FROM stats WHERE agent <> \ ' Android\ '
UNION
SELECT agent , substr ( agent_version , 1 , 3 ) as agent_version , agent_full , pathname , point , value , time
FROM stats
WHERE agent LIKE \ ' Android\ '
)
2011-11-14 19:27:26 +00:00
WHERE ( agent_full like \ ' % Mobile % \ ' or agent_full like \ ' % mobile % \ ' or agent_full like \ ' % Android % \ ' )
2011-11-10 17:04:00 +00:00
and agent like : agent and point like : data_point
2011-11-14 17:33:16 +00:00
GROUP BY agent , agent_version , pathname , point , time
ORDER BY agent , agent_version , time ;
2011-11-10 17:04:00 +00:00
' );
2011-11-10 17:00:14 +00:00
$st -> execute ( array (
':agent' => '%' . $agent . '%' ,
':data_point' => '%' . $data_point . '%'
));
2011-11-07 21:19:32 +00:00
$result = $st -> fetchAll ( PDO :: FETCH_ASSOC );
2011-11-02 23:49:36 +00:00
header ( " Content-Type: application/json " );
2011-11-07 21:19:32 +00:00
echo json_encode ( $result );
2011-11-10 17:04:00 +00:00
} elseif ( $_POST [ 'datapoint' ] &&
$_POST [ 'value' ] &&
$_POST [ 'agent' ] &&
$_POST [ 'pathname' ] &&
$_POST [ 'agentVersion' ] ) {
$st = $db -> prepare ( '
INSERT INTO stats ( agent , agent_full , agent_version , point , value , pathname , time )
VALUES ( : agent , : agent_full , : agent_version , : data_point , : value , : pathname , DATETIME ( \ ' now\ ' ))
' );
2011-11-07 21:19:32 +00:00
$st -> execute ( array (
':agent' => $_POST [ 'agent' ],
2011-11-10 08:16:29 +00:00
':agent_full' => $_POST [ 'agentFull' ],
':agent_version' => $_POST [ 'agentVersion' ],
2011-11-07 21:19:32 +00:00
':data_point' => $_POST [ 'datapoint' ],
2011-11-07 23:48:55 +00:00
':value' => $_POST [ 'value' ],
':pathname' => $_POST [ 'pathname' ]
2011-11-07 21:19:32 +00:00
));
2011-11-02 23:49:36 +00:00
echo " success " ;
}
?>