Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7680378f28 | ||
|
|
7bab6253cf | ||
|
|
f7db85cc13 | ||
|
|
09396f8c98 | ||
|
|
064eeec5a0 |
@@ -6,6 +6,7 @@
|
|||||||
* File : convertStats.php
|
* File : convertStats.php
|
||||||
*******************************************/
|
*******************************************/
|
||||||
|
|
||||||
|
die();
|
||||||
require_once(dirname(__FILE__)."/../load.php");
|
require_once(dirname(__FILE__)."/../load.php");
|
||||||
|
|
||||||
$iteration = 0;
|
$iteration = 0;
|
||||||
|
|||||||
Executable
+363
@@ -0,0 +1,363 @@
|
|||||||
|
#!/usr/local/bin/php
|
||||||
|
<?php
|
||||||
|
/******************************************
|
||||||
|
* Author : Riccardo Di Dato
|
||||||
|
* Created On : Tue Aug 30 2022
|
||||||
|
* File : convertStats.php
|
||||||
|
*******************************************/
|
||||||
|
|
||||||
|
require_once(dirname(__FILE__)."/../load.php");
|
||||||
|
|
||||||
|
|
||||||
|
function getDailyBannerImpressionsPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$project' => [
|
||||||
|
'tdate'=> [
|
||||||
|
'$add' => [ '$date' , 60*60*1000 ]
|
||||||
|
],
|
||||||
|
"statType" => '$statType',
|
||||||
|
'user' => '$user',
|
||||||
|
'banner' => '$content.banner',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_BANNER_IMPRESSION,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => [
|
||||||
|
'day' => [ '$dayOfMonth' => '$tdate' ],
|
||||||
|
"month" => [ '$month' => '$tdate' ],
|
||||||
|
"year" => [ '$year'=>'$tdate' ]
|
||||||
|
],
|
||||||
|
'banner' => '$banner',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getDailyBannerClicksPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$project' => [
|
||||||
|
'tdate'=> [
|
||||||
|
'$add' => [ '$date' , 60*60*1000 ]
|
||||||
|
],
|
||||||
|
"statType" => '$statType',
|
||||||
|
'user' => '$user',
|
||||||
|
'banner' => '$content.banner',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_BANNER_CLICK,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => [
|
||||||
|
'day' => [ '$dayOfMonth' => '$tdate' ],
|
||||||
|
"month" => [ '$month' => '$tdate' ],
|
||||||
|
"year" => [ '$year'=>'$tdate' ]
|
||||||
|
],
|
||||||
|
'banner' => '$banner',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDailyNotiziaImpressionsPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$project' => [
|
||||||
|
'tdate'=> [
|
||||||
|
'$add' => [ '$date' , 60*60*1000 ]
|
||||||
|
],
|
||||||
|
"statType" => '$statType',
|
||||||
|
'user' => '$user',
|
||||||
|
"content" => '$content'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_NOTIZIA,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => [
|
||||||
|
'day' => [ '$dayOfMonth' => '$tdate' ],
|
||||||
|
"month" => [ '$month' => '$tdate' ],
|
||||||
|
"year" => [ '$year'=>'$tdate' ]
|
||||||
|
],
|
||||||
|
'notizia' => '$content.notizia',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getYearlyNotiziaImpressionsPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$project' => [
|
||||||
|
'tdate'=> [
|
||||||
|
'$add' => [ '$date' , 60*60*1000 ]
|
||||||
|
],
|
||||||
|
"statType" => '$statType',
|
||||||
|
'user' => '$user',
|
||||||
|
"content" => '$content'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_NOTIZIA,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'notizia' => '$content.notizia',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDailyPageImpressionsPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$project' => [
|
||||||
|
'tdate'=> [
|
||||||
|
'$add' => [ '$date' , 60*60*1000 ]
|
||||||
|
],
|
||||||
|
"statType" => '$statType',
|
||||||
|
'user' => '$user',
|
||||||
|
'content' => '$content',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_PAGE,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => [
|
||||||
|
'day' => [ '$dayOfMonth' => '$tdate' ],
|
||||||
|
"month" => [ '$month' => '$tdate' ],
|
||||||
|
"year" => [ '$year'=>'$tdate' ]
|
||||||
|
],
|
||||||
|
'user' => '$user.id',
|
||||||
|
'content' => '$content',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => '$_id.date',
|
||||||
|
'content' => '$_id.content',
|
||||||
|
],
|
||||||
|
"visualizzazioni" => [ '$sum' => '$visualizzazioni' ],
|
||||||
|
'isNewToday' => [ '$sum' => 1 ],
|
||||||
|
'isAbsoluteNew' => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMonthlyPageImpressionsPipeline($startDate, $endDate) {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'$match' => [
|
||||||
|
'statType' => StatisticModel::STAT_TYPE_PAGE,
|
||||||
|
'tdate' => [
|
||||||
|
'$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000),
|
||||||
|
'$lte'=>new MongoDB\BSON\UTCDateTime($endDate * 1000)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => [
|
||||||
|
"month" => [ '$month' => '$tdate' ],
|
||||||
|
"year" => [ '$year'=>'$tdate' ]
|
||||||
|
],
|
||||||
|
'user' => '$user.id',
|
||||||
|
'content' => '$content',
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'$group' => [
|
||||||
|
'_id' => [
|
||||||
|
'date' => '$_id.date',
|
||||||
|
'content' => '$_id.content',
|
||||||
|
],
|
||||||
|
"isMonthlyNew" => [ '$sum' => 1 ]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$curYear = intval(date("Y"));
|
||||||
|
for ($y = 2016; $y <= intval(date("Y")); $y++) {
|
||||||
|
echo "Working on year : $y", PHP_EOL;
|
||||||
|
|
||||||
|
$from = strtotime($y."-01-01");
|
||||||
|
$to = strtotime($y."-12-31");
|
||||||
|
|
||||||
|
$dao = GlobalVariables::get("dao");
|
||||||
|
if ($dao instanceof GenericDao) {
|
||||||
|
$pipe = getDailyPageImpressionsPipeline( $from, $to );
|
||||||
|
|
||||||
|
echo " - Working on Daily Page Impressions", PHP_EOL;
|
||||||
|
$data = $dao->aggregate(
|
||||||
|
StatisticModel::class,
|
||||||
|
$pipe,
|
||||||
|
['cursor' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($data as $elem) {
|
||||||
|
AnalyticsHelper::multiPageImpression(
|
||||||
|
$elem->_id->content,
|
||||||
|
$elem->_id->date->day,
|
||||||
|
$elem->_id->date->month,
|
||||||
|
$elem->_id->date->year,
|
||||||
|
$elem->visualizzazioni,
|
||||||
|
$elem->isNewToday,
|
||||||
|
0,
|
||||||
|
$elem->isAbsoluteNew
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pipe = getMonthlyPageImpressionsPipeline( $from, $to );
|
||||||
|
|
||||||
|
echo " - Working on Monthly Page Impressions", PHP_EOL;
|
||||||
|
$data = $dao->aggregate(
|
||||||
|
StatisticModel::class,
|
||||||
|
$pipe,
|
||||||
|
['cursor' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($data as $elem) {
|
||||||
|
AnalyticsHelper::multiPageImpression(
|
||||||
|
$elem->_id->content,
|
||||||
|
1,
|
||||||
|
$elem->_id->date->month,
|
||||||
|
$elem->_id->date->year,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
$elem->isMonthlyNew,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($y == $curYear) {
|
||||||
|
$pipe = getDailyNotiziaImpressionsPipeline( $from, $to );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$pipe = getYearlyNotiziaImpressionsPipeline($from, $to);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo " - Working on Notizia Impressions", PHP_EOL;
|
||||||
|
$data = $dao->aggregate(
|
||||||
|
StatisticModel::class,
|
||||||
|
$pipe,
|
||||||
|
['cursor' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($data as $elem) {
|
||||||
|
$day = $y == 2022 ? $elem->_id->date->day : 1;
|
||||||
|
$month = $y == 2022 ? $elem->_id->date->month : 1;
|
||||||
|
AnalyticsHelper::multiNotiziaImpression(
|
||||||
|
$elem->_id->notizia,
|
||||||
|
$day,
|
||||||
|
$month,
|
||||||
|
$y,
|
||||||
|
$elem->visualizzazioni
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$pipe = getDailyBannerImpressionsPipeline( $from, $to );
|
||||||
|
|
||||||
|
echo " - Working on Banner Impressions", PHP_EOL;
|
||||||
|
$data = $dao->aggregate(
|
||||||
|
StatisticModel::class,
|
||||||
|
$pipe,
|
||||||
|
['cursor' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($data as $elem) {
|
||||||
|
AnalyticsHelper::multiBannerImpression(
|
||||||
|
$elem->_id->banner,
|
||||||
|
$elem->_id->date->day,
|
||||||
|
$elem->_id->date->month,
|
||||||
|
$elem->_id->date->year,
|
||||||
|
$elem->visualizzazioni
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$pipe = getDailyBannerClicksPipeline( $from, $to );
|
||||||
|
|
||||||
|
echo " - Working on Banner Clicks", PHP_EOL;
|
||||||
|
$data = $dao->aggregate(
|
||||||
|
StatisticModel::class,
|
||||||
|
$pipe,
|
||||||
|
['cursor' => true]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($data as $elem) {
|
||||||
|
AnalyticsHelper::multiBannerClick(
|
||||||
|
$elem->_id->banner,
|
||||||
|
$elem->_id->date->day,
|
||||||
|
$elem->_id->date->month,
|
||||||
|
$elem->_id->date->year,
|
||||||
|
$elem->visualizzazioni
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -39,22 +39,22 @@ class AnalyticsHelper {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function pageImpression($content, $d, $m, $y, $isNewToday, $isNewMonth, $isNewAbsolute) {
|
public static function multiPageImpression($content, $d, $m, $y, $incViews = 1, $incToday = 0, $incMonth = 0, $incAbsolute = 0) {
|
||||||
$dao = GlobalVariables::get("dao");
|
$dao = GlobalVariables::get("dao");
|
||||||
if ($dao instanceof GenericDao) {
|
if ($dao instanceof GenericDao) {
|
||||||
$upd = [
|
$upd = [
|
||||||
'$inc' => [
|
'$inc' => [
|
||||||
'views' => 1
|
'views' => $incViews
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
if ($isNewAbsolute || $isNewMonth || $isNewToday) {
|
if ($incToday > 0) {
|
||||||
$upd['$inc']['dayNewVisitors'] = 1;
|
$upd['$inc']['dayNewVisitors'] = $incToday;
|
||||||
}
|
}
|
||||||
if ($isNewAbsolute || $isNewMonth) {
|
if ($incMonth > 0) {
|
||||||
$upd['$inc']['monthNewVisitors'] = 1;
|
$upd['$inc']['monthNewVisitors'] = $incMonth;
|
||||||
}
|
}
|
||||||
if ($isNewAbsolute) {
|
if ($incAbsolute > 0) {
|
||||||
$upd['$inc']['absNewVisitors'] = 1;
|
$upd['$inc']['absNewVisitors'] = $incAbsolute;
|
||||||
}
|
}
|
||||||
$dao->rawUpsert(
|
$dao->rawUpsert(
|
||||||
PageViewStatsModel::class,
|
PageViewStatsModel::class,
|
||||||
@@ -64,6 +64,19 @@ class AnalyticsHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.
|
* 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
|
* UTILIZZARE QUESTA FUNZIONE SOLO NELLA PAGINA DI BACKEND (stats/pageImpression.php). Nelle pagine base utilizzare invece la funzione di log
|
||||||
@@ -99,8 +112,7 @@ class AnalyticsHelper {
|
|||||||
GUIHandler::addOnLoadJsEvent($function);
|
GUIHandler::addOnLoadJsEvent($function);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function multiNotiziaImpression($content, $d, $m, $y, $incViews) {
|
||||||
public static function notiziaImpression($content, $d, $m, $y) {
|
|
||||||
$dao = GlobalVariables::get("dao");
|
$dao = GlobalVariables::get("dao");
|
||||||
if ($dao instanceof GenericDao) {
|
if ($dao instanceof GenericDao) {
|
||||||
$dao->rawUpsert(
|
$dao->rawUpsert(
|
||||||
@@ -108,12 +120,16 @@ class AnalyticsHelper {
|
|||||||
ArticleStatsModel::getFilter($content, $d, $m, $y),
|
ArticleStatsModel::getFilter($content, $d, $m, $y),
|
||||||
[
|
[
|
||||||
'$inc' => [
|
'$inc' => [
|
||||||
'views' => 1
|
'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.
|
* La funzione si occupa del salvataggio vero e proprio della impression della notizia.
|
||||||
@@ -160,7 +176,7 @@ class AnalyticsHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static function bannerImpression($bannerId, $d, $m, $y) {
|
public static function multiBannerImpression($bannerId, $d, $m, $y, $views) {
|
||||||
$dao = GlobalVariables::get("dao");
|
$dao = GlobalVariables::get("dao");
|
||||||
if ($dao instanceof GenericDao) {
|
if ($dao instanceof GenericDao) {
|
||||||
$dao->rawUpsert(
|
$dao->rawUpsert(
|
||||||
@@ -168,25 +184,32 @@ class AnalyticsHelper {
|
|||||||
BannerStatsModel::getFilter($bannerId, $d, $m, $y),
|
BannerStatsModel::getFilter($bannerId, $d, $m, $y),
|
||||||
[
|
[
|
||||||
'$inc' => [
|
'$inc' => [
|
||||||
'views' => 1
|
'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) {
|
public static function bannerClick($bannerId, $d, $m, $y) {
|
||||||
$dao = GlobalVariables::get("dao");
|
self::multiBannerClick($bannerId, $d, $m, $y, 1);
|
||||||
if ($dao instanceof GenericDao) {
|
|
||||||
$dao->rawUpsert(
|
|
||||||
BannerStatsModel::class,
|
|
||||||
BannerStatsModel::getFilter($bannerId, $d, $m, $y),
|
|
||||||
[
|
|
||||||
'$inc' => [
|
|
||||||
'clicks' => 1
|
|
||||||
]
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -275,72 +298,6 @@ class AnalyticsHelper {
|
|||||||
return sizeof($ret) == 0 ? 0 : $ret[0]['tot'];
|
return sizeof($ret) == 0 ? 0 : $ret[0]['tot'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restituisce il banner da mostrare tenendo in considerazione quelli già visualizzati e le visualizzazioni totali
|
|
||||||
* @param int $position
|
|
||||||
* @param string $replaced id del banner rimpiazzato
|
|
||||||
*/
|
|
||||||
public static function getBannerToShow($position, $replaced = null, $category = BannerModel::GENERAL_CATEGORY) {
|
|
||||||
// ?TODO: Ragionaci
|
|
||||||
// Rimuovi il replaced dalla lista
|
|
||||||
$shown = array();
|
|
||||||
$rval = null;
|
|
||||||
if (ASDSessionHandler::sessionValueExists("bannerActive")){
|
|
||||||
$shown = ASDSessionHandler::getSessionValue("bannerActive");
|
|
||||||
|
|
||||||
if (!is_null($replaced) && in_array($replaced, $shown)){
|
|
||||||
$key = array_search($replaced, $shown);
|
|
||||||
unset($shown[$key]);
|
|
||||||
ASDSessionHandler::setSessionValue("bannerActive",$shown);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// idlist contiene gli id dei banner in ordine di visualizzazione crescente (esclusi quelli non visualizzati)
|
|
||||||
$pipeline = PipelineHelper::getTodaysBannerVisualizationPipeline($position);
|
|
||||||
$stats = GlobalVariables::get("dao")->aggregate("StatisticModel",$pipeline);
|
|
||||||
// var_dump($stats);
|
|
||||||
$idList = array();
|
|
||||||
if (sizeof($stats)>0){
|
|
||||||
foreach ($stats as $stat){
|
|
||||||
$idList[] = $stat["_id"]["banner"];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// $baseSearchArray = array("position"=>$position,"end"=>array('$gte'=>new MongoDate(strtotime("tomorrow"))),"categories"=>$category);
|
|
||||||
$baseSearchArray = array("position"=>$position,"end"=>array('$gte'=>new MongoDB\BSON\UTCDateTime( strtotime("tomorrow CET") * 1000 ) ),"categories"=>$category);
|
|
||||||
// Prendi il primo dei "mai mostrati oggi" tra quelli non presenti nella pagina
|
|
||||||
$todayPlusShown = array_merge($idList,$shown);
|
|
||||||
if (sizeof($todayPlusShown)>0){
|
|
||||||
$tmp = array_map(function ($id) {return new MongoDB\BSON\ObjectID($id);}, $todayPlusShown);
|
|
||||||
$tmp = array('_id'=>array('$nin'=>$tmp));
|
|
||||||
$rval = GlobalVariables::get("dao")->getFirst("BannerModel", array_merge($baseSearchArray, $tmp) );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$rval = GlobalVariables::get("dao")->getFirst("BannerModel", $baseSearchArray);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_null($rval)){
|
|
||||||
$todayLessShown = array_values(array_diff($idList, $shown));
|
|
||||||
if (sizeof($todayLessShown)>0){
|
|
||||||
$i = 0;
|
|
||||||
while (is_null($rval) && $i<sizeof($todayLessShown)){
|
|
||||||
$condition = array_merge($baseSearchArray, array("id"=>$todayLessShown[$i]) );
|
|
||||||
$rval = GlobalVariables::get("dao")->getFirst("BannerModel", $condition );
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($rval)){
|
|
||||||
$shown[] = $rval->id;
|
|
||||||
ASDSessionHandler::setSessionValue("bannerActive",$shown);
|
|
||||||
}
|
|
||||||
return $rval;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -257,14 +257,20 @@ class GenericDao{
|
|||||||
'allowDiskUse' => true
|
'allowDiskUse' => true
|
||||||
] );
|
] );
|
||||||
$cursor = $this->client->executeCommand( $this->dbName, $command );
|
$cursor = $this->client->executeCommand( $this->dbName, $command );
|
||||||
|
|
||||||
|
if (array_key_exists('cursor', $options) && $options['cursor'] == true) {
|
||||||
|
return $cursor;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$rval = [];
|
||||||
|
foreach ($cursor as $ele){ // inganniamo il cursore, in realtà il risultato è uno
|
||||||
|
//TODO CHECK
|
||||||
|
$rval[] = json_decode( json_encode($ele) ,true );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rval;
|
||||||
|
}
|
||||||
|
|
||||||
$rval = [];
|
|
||||||
foreach ($cursor as $ele){ // inganniamo il cursore, in realtà il risultato è uno
|
|
||||||
//TODO CHECK
|
|
||||||
$rval[] = json_decode( json_encode($ele) ,true );
|
|
||||||
}
|
|
||||||
|
|
||||||
return $rval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ body{font-family:lato, arial;}
|
|||||||
.headArticolo .newsImage{width:100vw;text-align:center;overflow:hidden;}
|
.headArticolo .newsImage{width:100vw;text-align:center;overflow:hidden;}
|
||||||
.headArticolo .newsImage img{max-width:100%;}
|
.headArticolo .newsImage img{max-width:100%;}
|
||||||
.articoloTitle{width:90%;padding:10px;margin:auto;}
|
.articoloTitle{width:90%;padding:10px;margin:auto;}
|
||||||
.articoloTitle .title{font-weight:bold;color:black;}
|
.articoloTitle .title{ font-weight:bold; color:black; }
|
||||||
.articoloTitle .subTitle{font-weight:italic;color:#9a9a9a;}
|
.articoloTitle .subTitle{font-weight:italic;color:#9a9a9a;}
|
||||||
.articoloBody{width:90vw;margin:auto;}
|
.articoloBody{width:90vw;margin:auto;}
|
||||||
.articoloBody .articoloTesto{text-align:justify;padding:5px;}
|
.articoloBody .articoloTesto{text-align:justify;padding:5px;}
|
||||||
|
|||||||
@@ -49,10 +49,6 @@ services:
|
|||||||
§PROJECT_BUILDNAME§-network:
|
§PROJECT_BUILDNAME§-network:
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
nginx-network:
|
|
||||||
external:
|
|
||||||
name:
|
|
||||||
nginx-network
|
|
||||||
db-network:
|
db-network:
|
||||||
§PROJECT_BUILDNAME§-network:
|
§PROJECT_BUILDNAME§-network:
|
||||||
|
|
||||||
|
|||||||
+46
-2
@@ -24,7 +24,12 @@ usage() {
|
|||||||
echo " -p: Publish (requires a version)" 1>&2;
|
echo " -p: Publish (requires a version)" 1>&2;
|
||||||
echo " -X: Staging Deploy (requires a version)" 1>&2;
|
echo " -X: Staging Deploy (requires a version)" 1>&2;
|
||||||
echo " -x: Production Deploy (requires a version)" 1>&2;
|
echo " -x: Production Deploy (requires a version)" 1>&2;
|
||||||
echo " -t: Software version, this will be used for the docker tag (default: local)" 1>&2;
|
echo " Tagging, docker images (default: local)" 1>&2;
|
||||||
|
echo " -t: Manual tag" 1>&2;
|
||||||
|
echo " -T: Autotag patch/release" 1>&2;
|
||||||
|
echo " -m: Autotag minor" 1>&2;
|
||||||
|
echo " -M: Autotag major" 1>&2;
|
||||||
|
echo " -P: Pre-release" 1>&2;
|
||||||
echo " -v: Verbose" 1>&2;
|
echo " -v: Verbose" 1>&2;
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
@@ -35,10 +40,13 @@ PUBLISH_MODE=0
|
|||||||
DEPLOY_TEST_MODE=0
|
DEPLOY_TEST_MODE=0
|
||||||
DEPLOY_PROD_MODE=0
|
DEPLOY_PROD_MODE=0
|
||||||
SELECTED_MODES=0
|
SELECTED_MODES=0
|
||||||
|
TAG_IMPLICIT=1
|
||||||
|
|
||||||
TAG="local"
|
TAG="local"
|
||||||
|
TAG_OPTS=""
|
||||||
|
AUTOTAG=0
|
||||||
|
|
||||||
while getopts "t:hvudpxX" o; do
|
while getopts "t:TmMPhvudpxX" o; do
|
||||||
case "${o}" in
|
case "${o}" in
|
||||||
u)
|
u)
|
||||||
UNIT_MODE=1
|
UNIT_MODE=1
|
||||||
@@ -63,6 +71,27 @@ while getopts "t:hvudpxX" o; do
|
|||||||
|
|
||||||
t)
|
t)
|
||||||
TAG=${OPTARG}
|
TAG=${OPTARG}
|
||||||
|
TAG_IMPLICIT=0
|
||||||
|
;;
|
||||||
|
T)
|
||||||
|
TAG_OPTS="${TAG_OPTS}r"
|
||||||
|
TAG_IMPLICIT=0
|
||||||
|
AUTOTAG=1
|
||||||
|
;;
|
||||||
|
m)
|
||||||
|
TAG_OPTS="${TAG_OPTS}m"
|
||||||
|
TAG_IMPLICIT=0
|
||||||
|
AUTOTAG=1
|
||||||
|
;;
|
||||||
|
M)
|
||||||
|
TAG_OPTS="${TAG_OPTS}M"
|
||||||
|
TAG_IMPLICIT=0
|
||||||
|
AUTOTAG=1
|
||||||
|
;;
|
||||||
|
P)
|
||||||
|
TAG_OPTS="${TAG_OPTS}p"
|
||||||
|
TAG_IMPLICIT=0
|
||||||
|
AUTOTAG=1
|
||||||
;;
|
;;
|
||||||
v)
|
v)
|
||||||
VERBOSE=1
|
VERBOSE=1
|
||||||
@@ -103,6 +132,10 @@ if [[ $UNIT_MODE -eq 1 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $PUBLISH_MODE -eq 1 ]]; then
|
if [[ $PUBLISH_MODE -eq 1 ]]; then
|
||||||
|
if [[ $AUTOTAG -eq 1 ]]; then
|
||||||
|
TAG=`./next-ver.sh -${TAG_OPTS}`
|
||||||
|
echo "Using tag $TAG"
|
||||||
|
fi
|
||||||
BUILDOPT+="bu"
|
BUILDOPT+="bu"
|
||||||
VERBOPT=""
|
VERBOPT=""
|
||||||
if [[ $VERBOSE -gt 0 ]]; then
|
if [[ $VERBOSE -gt 0 ]]; then
|
||||||
@@ -115,6 +148,11 @@ if [[ $PUBLISH_MODE -eq 1 ]]; then
|
|||||||
./run-unit.sh $VERBOPT -t $TAG
|
./run-unit.sh $VERBOPT -t $TAG
|
||||||
|
|
||||||
./publish.sh $VERBOPT -t $TAG
|
./publish.sh $VERBOPT -t $TAG
|
||||||
|
|
||||||
|
if [[ $TAG_IMPLICIT -ne 1 ]]; then
|
||||||
|
git tag $TAG
|
||||||
|
git push --tags
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -141,6 +179,9 @@ if [[ $DEBUG_MODE -eq 1 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $DEPLOY_TEST_MODE -eq 1 ]]; then
|
if [[ $DEPLOY_TEST_MODE -eq 1 ]]; then
|
||||||
|
if [[ $AUTOTAG -eq 1 ]]; then
|
||||||
|
TAG=`./latest-ver.sh -${TAG_OPTS}`
|
||||||
|
fi
|
||||||
OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/test"
|
OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/test"
|
||||||
mkdir -p $OUT_FOLDER
|
mkdir -p $OUT_FOLDER
|
||||||
./generateComposeFolder.sh -s -o "$OUT_FOLDER" -t $TAG
|
./generateComposeFolder.sh -s -o "$OUT_FOLDER" -t $TAG
|
||||||
@@ -150,6 +191,9 @@ if [[ $DEPLOY_TEST_MODE -eq 1 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $DEPLOY_PROD_MODE -eq 1 ]]; then
|
if [[ $DEPLOY_PROD_MODE -eq 1 ]]; then
|
||||||
|
if [[ $AUTOTAG -eq 1 ]]; then
|
||||||
|
TAG=`./latest-ver.sh -${TAG_OPTS}`
|
||||||
|
fi
|
||||||
OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/production"
|
OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/production"
|
||||||
mkdir -p $OUT_FOLDER
|
mkdir -p $OUT_FOLDER
|
||||||
./generateComposeFolder.sh -p -o "$OUT_FOLDER" -t $TAG
|
./generateComposeFolder.sh -p -o "$OUT_FOLDER" -t $TAG
|
||||||
|
|||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
git tag -l --sort=-version:refname | head -n 1
|
||||||
Executable
+59
@@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [-h] [-m|M] [-p]" 1>&2;
|
||||||
|
echo " -h: This message" 1>&2;
|
||||||
|
echo " -p: Pre release" 1>&2;
|
||||||
|
echo " -m: Increment minor" 1>&2;
|
||||||
|
echo " -M: Increment major" 1>&2;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRE_RELEASE=0
|
||||||
|
ALTERS=0
|
||||||
|
ALTER_NAME="release"
|
||||||
|
|
||||||
|
while getopts "hpmMr" o; do
|
||||||
|
case "${o}" in
|
||||||
|
p)
|
||||||
|
PRE_RELEASE=1
|
||||||
|
;;
|
||||||
|
r)
|
||||||
|
ALTERS=$ALTERS+1
|
||||||
|
ALTER_NAME="release"
|
||||||
|
;;
|
||||||
|
m)
|
||||||
|
ALTERS=$ALTERS+1
|
||||||
|
ALTER_NAME="minor"
|
||||||
|
;;
|
||||||
|
M)
|
||||||
|
ALTERS=$ALTERS+1
|
||||||
|
ALTER_NAME="major"
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
usage
|
||||||
|
exit 0;
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printerr "Unsupported option ${o}"
|
||||||
|
usage
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $ALTERS -gt 1 ]]; then
|
||||||
|
echo "You can specify exactly one option between m and M"
|
||||||
|
usage
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURRENT_VERSION=`./latest-ver.sh`
|
||||||
|
|
||||||
|
INCREMENT_NAME=$ALTER_NAME
|
||||||
|
if [[ $PRE_RELEASE -gt 0 ]]; then
|
||||||
|
INCREMENT_NAME="pre$INCREMENT_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NEW_VERSION=`semver $CURRENT_VERSION --preid rc -i $INCREMENT_NAME`
|
||||||
|
|
||||||
|
echo "$NEW_VERSION"
|
||||||
Reference in New Issue
Block a user