Statistics Plugin (English Version)
StephenTaylor
Member
After installing this amazing stats plugin from here on my blog. I decided to post the English translation i had to make for the plugin. So here is the full English version of the plugin!.
Installation
1) Create a plugins folder in the root of Pluxml (If you do not already have a plugin folder.)
2) In the plugins folder create a folder stats
3) Then in the stats folder. Create a stats.php file and paste in the code below:
4,Now edit the header.php of the theme you are using.And below the line:
Add:
5,To view statistics paste the following code in the sidebar.php theme file:
Installation
1) Create a plugins folder in the root of Pluxml (If you do not already have a plugin folder.)
2) In the plugins folder create a folder stats
3) Then in the stats folder. Create a stats.php file and paste in the code below:
[== PHP ==]
<?php
/**
* Classe plxStats
*
* @version 1.0
* @package PLX
* @author Stephane F
**/
class plxStats {
var $filename = null; # nom du fichier contenant les statistiques
var $aStats = array(); # données statistiques
var $sessionTime = 15; # durée d'une visite en minute vant expiration
/**
* Constructeur qui initialise certaines variables de classe
* et qui lance les traitements de prise en compte des statistiques
*
* @param null
* @return null
* @author Stephane F
**/
function plxStats() {
$this->filename = PLX_ROOT.'plugins/stats/stats.xml'; # emplacement du fichier des stats
$this->_getStatiques($this->filename); # récuperation des stats
$this->_cleanVisits(); # suppression des anciens visiteurs
$this->_addVisitor(); # ajoute le nouveau visiteur et gère les compteurs
$this->_editStats($this->filename); # sauvegarde des stats
}
#------------------
# Méthodes privées
#------------------
/**
* Méthode qui parse le fichier des statistiques et qui alimente
* le tableau aStats
*
* @param null
* @return null
* @author Stephane F
**/
function _getStatiques() {
if(!is_readable($this->filename)) return;
# Mise en place du parseur XML
$data = implode('',file($this->filename));
$parser = xml_parser_create(PLX_CHARSET);
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
xml_parse_into_struct($parser,$data,$values,$iTags);
xml_parser_free($parser);
# Recuperation des valeurs de nos champs XML
$this->aStats['views_today'] = array( // total de pages vues aujourd'hui
'date' => (isset($values[ $iTags['views_today'][0] ]['attributes']['date'])?$values[ $iTags['views_today'][0] ]['attributes']['date']:date('Ymd')),
'counter' => (isset($values[ $iTags['views_today'][0] ]['value'])?intval($values[ $iTags['views_today'][0] ]['value']):0)
);
$this->aStats['views_total'] = isset($values[ $iTags['views_total'][0] ]['value'])?intval($values[ $iTags['views_total'][0] ]['value']):0; // total de pages vues
$this->aStats['visitors'] = isset($values[ $iTags['visitors'][0] ]['value'])?intval($values[ $iTags['visitors'][0] ]['value']):0; // nombre total de visiteurs
# On verifie qu'il existe des tags "online"
if(isset($iTags['online'])) {
# On compte le nombre de tags "online"
$nb = sizeof($iTags['online']);
# On boucle sur $nb
for($i = 0; $i < $nb; $i++) {
$this->aStats['online'][ $values[ $iTags['online'][$i] ]['attributes']['ip'] ] = $values[ $iTags['online'][$i] ]['value'];
}
}
}
/**
* Méthode qui sauvegarde les statistiques dans le fichier xml
* le tableau aStats
*
* @param null
* @return null
* @author Stephane F
**/
function _editStats() {
# Début du fichier XML
$xml = "<?xml version='1.0' encoding='".PLX_CHARSET."'?>\n";
$xml .= "<document>\n";
$xml .= "\t<views_today date=\"".$this->aStats['views_today']['date']."\">".$this->aStats['views_today']['counter']."</views_today>\n";
$xml .= "\t<views_total>".$this->aStats['views_total']."</views_total>\n";
$xml .= "\t<visitors>".$this->aStats['visitors']."</visitors>\n";
if ($this->aStats['online']) {
foreach($this->aStats['online'] as $ip => $time) {
$xml .= "\t<online ip=\"".$ip."\">".$time."</online>\n";
}
}
$xml .= "</document>";
# Sauvegarde du fichier
plxUtils::write($xml, $this->filename);
}
/**
* Méthode qui supprime les anciens visiteurs si la durée de la visite
* est expirée
*
* @param null
* @return null
* @author Stephane F
**/
function _cleanVisits() {
if ($this->aStats['online']) {
foreach($this->aStats['online'] as $ip => $time) {
if(time() - $time >= $this->sessionTime * 60)
unset($this->aStats['online'][$ip]); # suppresion de l'ancien visiteur
}
}
}
/**
* Méthode qui ajoute un nouveau visiteur et qui incrémente les différents
* compteurs de statistiques
*
* @param null
* @return null
* @author Stephane F
**/
function _addVisitor() {
if (isset($this->aStats['online'][plxUtils::getIp()])) {
if (time() - $this->aStats['online'][plxUtils::getIp()] >= $this->sessionTime * 60) {
$this->aStats['online'][plxUtils::getIp()] = time();
$this->aStats['visitors']++;
}
}
else {
$this->aStats['online'][plxUtils::getIp()] = time();
$this->aStats['visitors']++;
}
# nombre de visiteurs du jour
if ($this->aStats['views_today']['date'] == date('Ymd'))
$this->aStats['views_today']['counter']++;
else {
$this->aStats['views_today']['date'] = date('Ymd');
$this->aStats['views_today']['counter']=1;
}
# nombre total de pages vues
$this->aStats['views_total']++;
}
#-------------------
# Méthodes publiques
#-------------------
/**
* Méthode qui affiche le compteur du nombre total de visiteurs
*
* @param null
* @return stdout
* @author Stephane F
**/
function TotalVisitors() {
echo $this->aStats['visitors'];
}
/**
* Méthode qui affiche le compteur du visiteurs en ligne
*
* @param null
* @return stdout
* @author Stephane F
**/
function OnlineVisitors() {
global $nbtemp;
echo sizeof($this->aStats['online']);
}
/**
* Ecris 's' s'il y a plusieurs visiteurs
*
* @param null
* @return stdout
* @author Ludo_17 et Amaury G
**/
function Pluriel() {
if(sizeof($this->aStats['online']) > 1)
echo 's';
}
/**
* Méthode qui affiche le compteur du nombre de pages vues aujourd'hui
*
* @param null
* @return stdout
* @author Stephane F
**/
function TodayViews() {
echo $this->aStats['views_today']['counter'];
}
/**
* Méthode qui affiche le compteur du nombre total de pages vues
*
* @param null
* @return stdout
* @author Stephane F
**/
function TotalViews() {
echo $this->aStats['views_total'];
}
}
#-----------------------------------------------
# création d'une instance de la classe plxStats
#-----------------------------------------------
$plxStats = new plxStats();
?>
4,Now edit the header.php of the theme you are using.And below the line:
[== PHP ==]
<?php if(!defined('PLX_ROOT')) exit; ?>
Add:
[== PHP ==]
<?php include_once(PLX_ROOT.'plugins/stats/stats.php'); ?>
5,To view statistics paste the following code in the sidebar.php theme file:
[== PHP ==]
<h2>Statistics</a></h2>
<ul>
<li>Total page views: <?php $plxStats->TotalViews() ?></li>
<li>Page views today: <?php $plxStats->TodayViews() ?></li>
<li><?php echo "Visitor" ?><?php $plxStats->Pluriel() ?> <?php echo "connected"; ?><?php $plxStats->Pluriel() ?>: <?php $plxStats->OnlineVisitors() ?></li>
<li>Number of visitors: <?php $plxStats->TotalVisitors() ?></li>
</ul>
Connectez-vous ou Inscrivez-vous pour répondre.