<?php
/*
* phpMyVisites : website statistics and audience measurements
* Copyright (C) 2002 - 2006
* http://www.phpmyvisites.net/
* phpMyVisites is free software (license GNU/GPL)
* Authors : phpMyVisites team
*/
// $Id: ViewReferers.class.php 29 2006-08-18 07:35:21Z matthieu_ $
require_once INCLUDE_PATH."/core/include/ViewModule.class.php";
require_once INCLUDE_PATH."/libs/Xml/Serializer.php";
require_once INCLUDE_PATH."/plugins/xmlapi/include/CallFunction.class.php";
require_once INCLUDE_PATH."/plugins/xmlapi/include/CallFunctionParameter.class.php";
class ViewXmlapi extends ViewModule
{
var $viewTemplate = "xmlapi/viewxmlapi.tpl";
/**
* Constructor
*/
function ViewXmlapi()
{
parent::ViewModule( "pages");
}
function returnQueryXML ($p_query, $p_query2 = "") {
$r = query($p_query);
$allElem = array();
while($l = mysql_fetch_assoc($r))
{
$l['idcategory'] = "c".$l['idcategory'];
$allElem[] = $l;
}
if ($p_query2 != "") {
$r = query($p_query2);
while($l = mysql_fetch_assoc($r))
{
if (isPrefixTag($l['name'])) {
$l['idpage'] = "f".$l['idpage'];
}
else {
$l['idpage'] = "p".$l['idpage'];
}
$allElem[] = $l;
}
}
return $allElem;
}
function returnAllElemXML ($allElem, $p_request) {
// An array of serializer options
$serializer_options = array (
'addDecl' => TRUE,
'encoding' => 'UTF-8',
'indent' => ' ',
'rootName' => 'XmlApi',
'defaultTagName' => 'item',
'rootAttributes' => array ( 'version' => '1.0', 'request' => $p_request),
);
$Serializer = &new XML_Serializer($serializer_options);
// Serialize the data structure
$Serializer->setOption("keyAttribute", "rdf:about");
$status = $Serializer->serialize($allElem);
$allData = $Serializer->getSerializedData();
// Display the XML document
header('Content-type: text/xml');
print($allData);
exit;
}
function initFunctionTab () {
$tmpTab = array();
$tmp = new CallFunction("getViewPage", "Get visit to pages", "getPagesZoom", "sum.1");
$tmp->addParameter("cat", "Categorie id (sample : c1697 or c1697>c1701)", "");//sample : c1697 => c_id_zoom in url
$tmpTab[$tmp->fctApiName] = $tmp;
$tmp = new CallFunction("getTimePages", "Get time by pages", "getPagesZoom", "sumtime");
$tmp->addParameter("cat", "Categorie id (sample : c1697 or c1697>c1701)", "");//sample : c1697 => c_id_zoom in url
$tmpTab[$tmp->fctApiName] = $tmp;
$tmp = new CallFunction("getVisitsStatistics", "Get visit statisitics", "getVisitsStatistics", ""); //one_page_rate
$tmpTab[$tmp->fctApiName] = $tmp;
return $tmpTab;
}
/**
* Data processing method
* only called if template is not cached
*/
function process()
{
$request = getRequestVar ('request', "", 'string');
$tab = $this->initFunctionTab ();
if ($request == "") {
$this->tpl->assign("XmlapiFunctionTab", $tab);
$this->tpl->assign("PHPMV_URL", PHPMV_URL);
}
else {
// Get function element
$fct = $tab[$request];
// Get parameter from url
$tabParam = array();
foreach ($fct->fctParameters as $key => $elem) {
$tabParam[$elem->fctParamName] = html_entity_decode(getRequestVar ($elem->fctParamName,
$elem->fctParamDefaultValue, 'string'));
//echo "test : " . $tabParam[$elem->fctParamName] . "<br>";
}
// Call function with parameters
//$data = $this->data->{$fct->fctCodeName}();
$data = call_user_func_array(array(& $this->data, $fct->fctCodeName), $tabParam);
// Get anly specific detail
if ($fct->fctResultDetail != "") {
$resultTab = split("[/.-]", $fct->fctResultDetail);
foreach ($resultTab as $key => $elem) {
$data = $data[$elem];
}
}
// Return xml
$this->returnAllElemXML($data, $fct->fctApiName);
}
}
}
?>