[ 'views' => $incViews ] ]; if ($incToday > 0) { $upd['$inc']['dayNewVisitors'] = $incToday; } if ($incMonth > 0) { $upd['$inc']['monthNewVisitors'] = $incMonth; } if ($incAbsolute > 0) { $upd['$inc']['absNewVisitors'] = $incAbsolute; } $dao->rawUpsert( PageViewStatsModel::class, PageViewStatsModel::getFilter($content, $d, $m, $y), $upd ); } } public static function pageImpression($content, $d, $m, $y, $isNewToday, $isNewMonth, $isNewAbsolute) { self::multiPageImpression( $content, $d, $m, $y, 1, $isNewAbsolute || $isNewMonth || $isNewToday ? 1 : 0, $isNewAbsolute || $isNewMonth ? 1 : 0, $isNewAbsolute ? 1 : 0 ); } /** * La funzione si occupa del salvataggio vero e proprio della impression della pagina. * UTILIZZARE QUESTA FUNZIONE SOLO NELLA PAGINA DI BACKEND (stats/pageImpression.php). Nelle pagine base utilizzare invece la funzione di log * @param string $ip * @param string $content * @param string $source */ public static function savePageImpression($ip, $content, $source) { self::pageImpression( $content, intval(date('d')), intval(date('m')), intval(date('Y')), self::isNewToday(), self::isNewThisMonth(), self::isNewAbsolute() ); self::updateCookies(); } /** * La funzione si occupa di aggiungere una visualizzazione alla pagina corrente */ public static function logPageImpression(){ $ip = $_SERVER['REMOTE_ADDR']; $content = $_SERVER['PHP_SELF']; $source = null; if (array_key_exists("HTTP_REFERER",$_SERVER)){ $source = $_SERVER['HTTP_REFERER']; } $function = '$.ajax({url: "stats/pageImpression.php", method: "POST", data: { "ip": "'.$ip.'", "content": "'.$content.'", "source": "'.$source.'" }, dataType: "html" });'; GUIHandler::addOnLoadJsEvent($function); } public static function multiNotiziaImpression($content, $d, $m, $y, $incViews) { $dao = GlobalVariables::get("dao"); if ($dao instanceof GenericDao) { $dao->rawUpsert( ArticleStatsModel::class, ArticleStatsModel::getFilter($content, $d, $m, $y), [ '$inc' => [ 'views' => $incViews ] ] ); } } public static function notiziaImpression($content, $d, $m, $y) { self::multiNotiziaImpression($content, $d, $m, $y, 1); } /** * La funzione si occupa del salvataggio vero e proprio della impression della notizia. * UTILIZZARE QUESTA FUNZIONE SOLO NELLA PAGINA DI BACKEND (stats/notiziaImpression.php). Nelle pagine base utilizzare invece la funzione di log * @param string $ip * @param string $content * @param string $source */ public static function saveNotiziaImpression($ip, $notiziaId, $source) { self::notiziaImpression( $notiziaId, intval(date('d')), intval(date('m')), intval(date('Y')) ); } /** * La funzione si occupa di aggiungere una visualizzazione alla notizia correlata a $id * @param string $id */ public static function logNotiziaImpression($id){ $ip = $_SERVER['REMOTE_ADDR']; $source = null; if (array_key_exists("HTTP_REFERER",$_SERVER)){ $source = $_SERVER['HTTP_REFERER']; } $function = '$.ajax({url: "stats/notiziaImpression.php", method: "POST", data: { "ip": "'.$ip.'", "notizia": "'.$id.'", "source": "'.$source.'" }, dataType: "html" });'; GUIHandler::addOnLoadJsEvent($function); } /** * Restitusce il numero di impressions per una notizia * @param string $id */ public static function countNotiziaImpressions($id, $start = null, $end = null){ $ret = GlobalVariables::get("dao")->aggregate( ArticleStatsModel::class, PipelineHelper::getNotiziaImpressions($id, $start, $end) ); return sizeof($ret) == 0 ? 0 : $ret[0]['tot']; } public static function multiBannerImpression($bannerId, $d, $m, $y, $views) { $dao = GlobalVariables::get("dao"); if ($dao instanceof GenericDao) { $dao->rawUpsert( BannerStatsModel::class, BannerStatsModel::getFilter($bannerId, $d, $m, $y), [ '$inc' => [ 'views' => $views ] ] ); } } public static function bannerImpression($bannerId, $d, $m, $y) { self::multiBannerImpression($bannerId, $d, $m, $y, 1); } public static function multiBannerClick($bannerId, $d, $m, $y, $clicks) { $dao = GlobalVariables::get("dao"); if ($dao instanceof GenericDao) { $dao->rawUpsert( BannerStatsModel::class, BannerStatsModel::getFilter($bannerId, $d, $m, $y), [ '$inc' => [ 'clicks' => $clicks ] ] ); } } public static function bannerClick($bannerId, $d, $m, $y) { self::multiBannerClick($bannerId, $d, $m, $y, 1); } /** * La funzione si occupa del salvataggio vero e proprio della impression del banner. * UTILIZZARE QUESTA FUNZIONE SOLO NELLA PAGINA DI BACKEND (stats/bannerImpression.php). Nelle pagine base utilizzare invece la funzione di log * @param string $ip * @param string $content * @param string $source */ public static function saveBannerImpression($ip, $bannerId, $source){ self::bannerImpression( $bannerId, intval(date('d')), intval(date('m')), intval(date('Y')) ); } /** * La funzione si occupa di aggiungere una visualizzazione all banner $id * @param string $id */ public static function logBannerImpression($id){ $ip = $_SERVER['REMOTE_ADDR']; $source = null; if (array_key_exists("HTTP_REFERER",$_SERVER)){ $source = $_SERVER['HTTP_REFERER']; } $function = '$.ajax({url: "stats/bannerImpression.php", method: "POST", data: { "ip": "'.$ip.'", "banner": "'.$id.'", "source": "'.$source.'" }, dataType: "html" });'; echo ''; // OLD VERSION // $function = '$.ajax({url: "stats/bannerImpression.php", method: "POST", data: { "ip": "'.$ip.'", "banner": "'.$id.'", "source": "'.$source.'" }, dataType: "html" });'; // GUIHandler::addOnLoadJsEvent($function); } /** * Restitusce il numero di impressions per un banner * @param string $id */ public static function countBannerImpressions($id, $start = null, $end = null){ $ret = GlobalVariables::get("dao")->aggregate( BannerStatsModel::class, PipelineHelper::getBannerImpressions($id, $start, $end) ); return sizeof($ret) == 0 ? 0 : $ret[0]['tot']; } /** * La funzione si occupa del salvataggio vero e proprio della impression dell banner. * UTILIZZARE QUESTA FUNZIONE SOLO NELLA PAGINA DI BACKEND (stats/bannerImpression.php). Nelle pagine base utilizzare invece la funzione di log * @param string $ip * @param string $content * @param string $source */ public static function saveBannerClick($bannerId, $source){ self::bannerClick( $bannerId, intval(date('d')), intval(date('m')), intval(date('Y')) ); } /** * La funzione si occupa di aggiungere una visualizzazione all banner $id * @param string $id */ public static function getBannerClickLink($banner){ return "bannerClick('".$banner->id."','".$banner->link."');"; } /** * Restitusce il numero di impressions per una notizia * @param string $id */ public static function countBannerClicks($id, $start = null, $end = null) { $ret = GlobalVariables::get("dao")->aggregate( BannerStatsModel::class, PipelineHelper::getBannerClicks($id, $start, $end) ); return sizeof($ret) == 0 ? 0 : $ret[0]['tot']; } } ?>