Esempio n. 1
0
 /**
  * Возвращает данные для графиков
  *
  * В качестве параметра принимает функцию, которая должна вернуть значение для графика
  *
  * @param $callback
  *
  * @return array array(date => array(date, value[, value]))
  */
 private function getChartData($callback)
 {
     $reportData = $this->getReportData();
     $newsMap = $this->getNewsDataMap();
     $date = strtotime($this->campaign->date_start);
     $dateTo = strtotime($this->campaign->date_end) < strtotime('today') ? strtotime($this->campaign->date_end) : strtotime('today');
     $chartData = array();
     while ($date <= $dateTo) {
         $humanDate = date('Y-m-d', $date);
         if (is_string($humanDate)) {
             $chartData[$humanDate] = array(DateHelper::getGrathDate($date));
             // Данных за дату нет, тогда заполняем нулями
             if (!isset($reportData[$humanDate])) {
                 $chartData[$humanDate] = array_merge($chartData[$humanDate], array_fill(1, count($newsMap), 0));
             } else {
                 foreach ($newsMap as $news_id => $position) {
                     // Если данные для новости за дату есть, тогда вызываем $callback, иначе присваиваем 0
                     $chartData[$humanDate][$position] = isset($reportData[$humanDate][$news_id]) ? $callback($reportData[$humanDate][$news_id]) : 0;
                 }
             }
             // Увеличиваем дату на один день
             $date += 3600 * 24;
         }
     }
     return $chartData;
 }
Esempio n. 2
0
 /**
  * Возвращает список дат за период
  *
  * @return array
  */
 public function getDates()
 {
     if (empty($this->dates)) {
         $date = strtotime($this->dateFrom);
         if ($date < strtotime($this->campaign->date_start)) {
             $date = strtotime($this->campaign->date_start);
         }
         $dateTo = strtotime($this->dateTo);
         if ($dateTo > strtotime($this->campaign->date_end)) {
             $dateTo = strtotime($this->campaign->date_end);
         }
         while ($date <= $dateTo) {
             $_date = date('Y-m-d', $date);
             if (is_string($_date)) {
                 $this->dates[$_date] = DateHelper::getGrathDate($date);
                 // Увеличиваем дату на один день
                 $date += 3600 * 24;
             }
         }
     }
     return $this->dates;
 }