new MongoDB\BSON\UTCDateTime($from * 1000) ]; } if (!is_null($to)) { $filter['time'] = [ '$lte' => new MongoDB\BSON\UTCDateTime($to * 1000) ]; } } $rval = [ [ '$match' => $filter ], [ '$group' => [ '_id' => null, 'tot' => ['$sum' => '$'.$field] ] ] ]; return $rval; } public static function getNotiziaImpressions($id, $from = null, $to = null){ return self::sumFieldFilterDate( [ 'notizia' => $id ], 'views', $from, $to ); } public static function getBannerImpressions($id, $from = null, $to = null){ return self::sumFieldFilterDate( [ 'banner' => $id ], 'views', $from, $to ); } public static function getBannerClicks($id, $from = null, $to = null){ return self::sumFieldFilterDate( [ 'banner' => $id ], 'clicks', $from, $to ); } public static function getDailyVisualizationPipeline($startDate){ return [ [ '$match' => [ 'time' => [ '$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000) ] ] ], [ '$group' => [ '_id' => [ 'y' => '$y', 'm' => '$m', 'd' => '$d' ], 'visualizzazioni' => ['$sum' => '$views'], 'unici' => ['$sum' => '$absNewVisitors'], 'visitatori' => ['$sum' => '$dayNewVisitors'], ] ], [ '$sort' => [ "_id.y"=>1, "_id.m"=>1, "_id.d"=>1 ] ] ]; } public static function getDailyVisualizationPipelineByStartAndEnd($startDate,$endDate) { return [ [ '$match' => [ 'time' => [ '$gte' => new MongoDB\BSON\UTCDateTime($startDate * 1000), '$lte' => new MongoDB\BSON\UTCDateTime($endDate * 1000) ] ] ], [ '$group' => [ "_id" => [ 'y' => '$y', 'm' => '$m', 'd' => '$d' ], "visualizzazioni" => [ '$sum' => '$views' ], "unici" => [ '$sum' => '$absNewVisitors' ], "visitatori" => [ '$sum' => '$dayNewVisitors' ], ] ], [ '$sort' => [ "_id.y"=>1, "_id.m"=>1, "_id.d"=>1 ] ] ]; } public static function getMonthlyVisualizationPipeline($startDate){ return [ [ '$match' => [ 'time' => [ '$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000) ] ] ], [ '$group' => [ "_id" => [ 'y' => '$y', 'm' => '$m' ], "visualizzazioni" => [ '$sum' => '$views' ], "unici" => [ '$sum' => '$absNewVisitors' ], "visitatori" => [ '$sum' => '$monthNewVisitors' ], ] ], [ '$sort' => [ "_id.y"=>1, "_id.m"=>1 ] ] ]; } /** * Il risultato di questa pipeline restituisce un oggetto con _id.banner contenente l'id del banner e visualizzazioni contenente il numero * di visualizzazioni per oggi ordinati in modo crescente per visualizzazioni * @param unknown $position * @return mixed */ public static function getTodaysBannerVisualizationPipeline($position) { // ?TODO: QUesto metodo potrebbe essere obsoleto $rval = array( array( '$match'=>array( 'statType'=>StatisticModel::STAT_TYPE_BANNER_IMPRESSION, 'content.position'=>$position, // 'date'=>array( '$gte'=>new MongoDate(strtotime("today")) ) 'date'=>array( '$gte'=>new MongoDB\BSON\UTCDateTime(strtotime("today") * 1000) ) ) ), array( '$group'=>array( "_id"=>array( 'banner'=>'$content.banner', ), "visualizzazioni"=>array( '$sum'=>1 ) ) ), array( '$sort'=>array( "visualizzazioni"=>1 ) ) ); return $rval; } /** * Il risultato di questa pipeline restituisce un oggetto con _id.banner contenente l'id del banner e visualizzazioni contenente il numero * di visualizzazioni per oggi ordinati in modo crescente per visualizzazioni * @param unknown $position * @return mixed */ public static function getMostViewedOfLastDays($startDate, $limit = 5) { return [ [ '$match' => [ 'time' => [ '$gte'=>new MongoDB\BSON\UTCDateTime($startDate * 1000) ] ] ], [ '$sort' => [ "views"=> -1 ] ], [ '$limit' => $limit ] ]; } } ?>