예제 #1
0
 public static function overall($dateQuery = [], $user = null)
 {
     $q = [];
     $clicks = [];
     $conversions = [];
     $impressions = [];
     $payouts = [];
     $total_clicks = 0;
     $total_conversions = 0;
     $total_payouts = 0;
     $total_impressions = 0;
     if (is_array($user)) {
         $in = ArrayMethods::arrayKeys($user, '_id');
         $q["user_id"] = ['$in' => $in];
     } elseif ($user) {
         $q["user_id"] = $user->id;
     }
     if (count($dateQuery) > 0) {
         $q["created"] = ['$gte' => $dateQuery['start'], '$lte' => $dateQuery['end']];
     }
     $performances = self::all($q, ['revenue', 'clicks', 'created', 'impressions', 'conversions']);
     foreach ($performances as $p) {
         //calculating datewise
         $date = $p->created->format('Y-m-d');
         $total_clicks += $p->clicks;
         ArrayMethods::counter($clicks, $date, $p->clicks);
         $total_conversions += $p->conversions;
         ArrayMethods::counter($conversions, $date, $p->conversions);
         $total_impressions += $p->impressions;
         ArrayMethods::counter($impressions, $date, $p->impressions);
         $total_payouts += $p->revenue;
         ArrayMethods::counter($payouts, $date, $p->revenue);
     }
     ksort($clicks);
     ksort($impressions);
     ksort($payouts);
     $clicks = Utils::dateArray($clicks);
     $impressions = Utils::dateArray($impressions);
     $payouts = Utils::dateArray($payouts);
     return ["impressions" => $impressions, "total_impressions" => $total_impressions, "clicks" => $clicks, "total_clicks" => $total_clicks, "conversions" => $conversions, "total_conversions" => $total_conversions, "payouts" => $payouts, "total_payouts" => $total_payouts];
 }
예제 #2
0
 protected static function _getStats($records, &$stats, $date)
 {
     $keys = ['country', 'os', 'device', 'referer'];
     foreach ($records as $r) {
         $obj = Utils::toArray($r);
         $arr =& $stats[$date]['meta'];
         foreach ($keys as $k) {
             if (!isset($arr[$k])) {
                 $arr[$k] = [];
             }
             $index = $r['_id'][$k] ?? null;
             if (is_null($index)) {
                 continue;
             }
             if (strlen(trim($index)) === 0) {
                 $index = "Empty";
             }
             ArrayMethods::counter($arr[$k], $index, $obj['count']);
         }
     }
 }