File: /var/www/web37/htdocs/fickanzeiger/models/OtherReferrerSiteModel.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 OtherReferrerSiteModel extends Model
{
protected $primaryKey = "referrerSiteId";
function removeAll()
{
$c = new Criteria();
$this->del($c);
$this->site->update(array("referrerTimes" => 0), $c);
$todayDate = date("Y-m-d");
$this->setting->set('topReferrersLastResetDate', $todayDate);
Cacher::getInstance()->clean("tag", array("setting"));
}
function incReferrerTimesOfSiteIfSiteIsInscripted($referrerUrl)
{
$hostName = AppRouter::getHostNameFromUrl($referrerUrl);
if (empty($hostName)) {
return;
}
$c = new Criteria();
$c->add("url", str_replace(array("%", "_"), "", $hostName) . "%", "LIKE");
$this->site->update(array("_referrerTimes" => "referrerTimes + 1"), $c);
}
function saveRefferingFromNotRegisteredSite($referrerUrl)
{
$hostName = AppRouter::getHostNameFromUrl($referrerUrl);
if (empty($hostName)) {
return;
}
$c = new Criteria();
$c->add("url", $hostName);
if ($this->getCount($c)) {
$this->update(array("_ReferrerTimes" => "ReferrerTimes + 1"), $c);
} else {
$record = new OtherReferrerSiteRecord();
$record->url = $hostName;
$record->referrerTimes = 1;
$record->save();
}
}
function checkReset()
{
$removalNeeded = false;
$todayDate = date("Y-m-d");
$lastResetDate = Config::get('topReferrersLastResetDate');
if (!preg_match('#^[0-9]{4}-[0-9]{2}-[0-9]{2}$#', $lastResetDate, $match)) {
// invalid date
$removalNeeded = true;
} else {
$todayTime = strtotime($todayDate);
$nextRefreshTime = strtotime($lastResetDate . " + " . Config::get('deletionPeriodOfTopReferrers') . " days");
if ($nextRefreshTime <= $todayTime) {
$removalNeeded = true;
}
}
if ($removalNeeded) {
$this->removeAll();
}
}
function saveReferrer($referrerUrl)
{
$this->checkReset();
$ip = Request::getInstance()->getIp();
$type = "ref";
if (!$this->visit->exists($ip, $type, null, 24)) {
$this->incReferrerTimesOfSiteIfSiteIsInscripted($referrerUrl);
$this->saveRefferingFromNotRegisteredSite($referrerUrl); // save for registered sites too
$visit = new VisitRecord();
$visit->ip = $ip;
$visit->type = $type;
$visit->save();
}
}
}
class OtherReferrerSiteRecord extends ModelRecord
{
}