File: /var/www/web37/htdocs/fickanzeiger/models/StatisticModel.php
<?php
/**
* Arfooo
*
* @package Arfooo
* @copyright Copyright (c) Arfooo Annuaire (fr) and Arfooo Directory (en)
* by Guillaume Hocine (c) 2007 - 2010
* http://www.arfooo.com/ (fr) and http://www.arfooo.net/ (en)
* @author Guillaume Hocine & Adrian Galewski
* @license http://creativecommons.org/licenses/by/2.0/fr/ Creative Commons
*/
class StatisticModel extends Model
{
function __construct()
{
$this->cache = Cacher::getInstance();
}
function getCountOfSitesWithStatus($type)
{
if (($data = $this->cache->load("websitesStatusCount" . $type)) === null) {
$c = new Criteria();
$c->add("status", $type);
$data = $this->site->getCount($c);
$this->cache->save($data, null, null, array("site"));
}
return $data;
}
function countOfAllRefusals()
{
if (($data = $this->cache->load("refusalsCount")) === null) {
$data = $this->refusal->get("SUM(refusedSitesCount)", new Criteria());
$this->cache->save($data, null, null, array("refusal"));
}
return $data;
}
function getCategoriesTotalCount()
{
if (($data = $this->cache->load("categoriesCount")) === null) {
$data = $this->category->getCount();
$this->cache->save($data, null, null, array("category"));
}
return $data;
}
function getCountOfKeywords()
{
if (($data = $this->cache->load("keywordsCount")) === null) {
$data = $this->keyword->getCount();
$this->cache->save($data, null, null, array("keyword"));
}
return $data;
}
function getCountOfUsersWithRole($role)
{
if (($data = $this->cache->load("usersWithRole" . ucfirst($role))) === null) {
$c = new Criteria();
$c->add("role", $role);
$data = $this->user->getCount($c);
$this->cache->save($data, null, null, array("user"));
}
return $data;
}
function getAllStats()
{
$statistic = array();
if (Config::get("displayValidatedSitesCount")) {
$statistic["validatedSitesCount"] = $this->getCountOfSitesWithStatus("validated");
}
if (Config::get("displayWaitingSitesCount")) {
$statistic["waitingSitesCount"] = $this->getCountOfSitesWithStatus("waiting");
}
if (Config::get("displayRefusedSitesCount")) {
$statistic["refusedSitesCount"] = $this->countOfAllRefusals();
}
if (Config::get("displayBannedSitesCount")) {
$statistic["bannedSitesCount"] = $this->getCountOfSitesWithStatus("banned");
}
if (Config::get("displayAllCategoriesCount")) {
$statistic["allCategoriesCount"] = $this->getCategoriesTotalCount();
}
if (Config::get("displayKeywordsCount")) {
$statistic["keywordsCount"] = $this->getCountOfKeywords();
}
if (Config::get("displayWebmastersCount")) {
$statistic["webmastersCount"] = $this->getCountOfUsersWithRole("webmaster");
}
return $statistic;
}
function getModeratorsStats()
{
$stats = array();
$c = new Criteria();
$c->addGroup("moderatorId");
$c->add("status", "banned");
$stats['banned'] = $this->site->getArray($c, "moderatorId, COUNT(*) as bannedSitesCount", "moderatorId", true);
$c = new Criteria();
$c->addGroup("moderatorId");
$c->add("status", "validated");
$stats['validated'] = $this->site->getArray($c, "moderatorId, COUNT(*) as validatedSitesCount", "moderatorId", true);
$c = new Criteria();
$stats['refused'] = $this->refusal->getArray($c, "moderatorId, refusedSitesCount", "moderatorId", true);
return $stats;
}
}