public function safeDown() { IcsAnalytics::model()->deleteAll(); $this->addColumn('{{ics_analytics}}', 'headers', 'text NOT NULL'); $this->addColumn('{{ics_analytics}}', 'params', 'text NOT NULL'); $this->dropColumn('{{ics_analytics}}', 'group'); }
public function actionChart($interval = 'day', $group = 'all') { if (!in_array($interval, ['day', 'hour'])) { throw new CHttpException(404); } if (!in_array($group, ['all', 'groups', 'platforms'])) { throw new CHttpException(404); } switch ($interval) { default: case 'day': $time = "DATE_FORMAT(`time`, '%Y-%m-%d')"; break; case 'hour': $time = "DATE_FORMAT(`time`, '%Y-%m-%d %H:00:00')"; break; } $series = []; switch ($group) { case 'groups': $data = []; foreach (Yii::app()->db->createCommand()->select($time . " as 'date', count(*) as `count`, `group`")->from(IcsAnalytics::model()->tableName())->group($time . ', `group`')->queryAll() as $row) { $data[(int) $row['group']][] = [strtotime($row['date']) * 1000, (int) $row['count']]; } foreach ($data as $chart_name => $chart_data) { $series[] = ['name' => $chart_name, 'data' => $chart_data]; } break; case 'platforms': $data_temp = []; $data_temp['Android'] = []; foreach (Yii::app()->db->createCommand()->select($time . " as 'date', count(*) as `count`, `group`")->from(IcsAnalytics::model()->tableName())->where("`useragent` LIKE '%Android%'")->group($time)->queryAll() as $row) { $data_temp['Android'][] = [strtotime($row['date']) * 1000, (int) $row['count']]; } $data_temp['iOS/Mac'] = []; foreach (Yii::app()->db->createCommand()->select($time . " as 'date', count(*) as `count`, `group`")->from(IcsAnalytics::model()->tableName())->where("`useragent` LIKE '%iOS%' OR `useragent` LIKE '%Mac%'")->group($time)->queryAll() as $row) { $data_temp['iOS/Mac'][] = [strtotime($row['date']) * 1000, (int) $row['count']]; } $data_temp['Другие'] = []; foreach (Yii::app()->db->createCommand()->select($time . " as 'date', count(*) as `count`, `group`")->from(IcsAnalytics::model()->tableName())->where("`useragent` NOT LIKE '%iOS%' AND `useragent` NOT LIKE '%Mac%' AND `useragent` NOT LIKE '%Android%'")->group($time)->queryAll() as $row) { $data_temp['Другие'][] = [strtotime($row['date']) * 1000, (int) $row['count']]; } foreach ($data_temp as $chart_name => $data) { $series[] = ['name' => $chart_name, 'data' => $data]; } break; case 'all': default: $data = []; foreach (Yii::app()->db->createCommand()->select($time . " as 'date', count(*) as `count`")->from(IcsAnalytics::model()->tableName())->group($time)->queryAll() as $row) { $data[] = [strtotime($row['date']) * 1000, (int) $row['count']]; } $series[] = ['name' => 'Всего', 'data' => $data]; } $this->render('chart', ['series' => $series, 'interval' => $interval, 'group' => $group]); }
public function actionIndex() { /** @var Semesters $semester */ $semester = Semesters::model()->actual(); $this->render('index', ['group_count' => Group::model()->filled()->count(), 'replace_count' => GroupReplace::model()->count('date >= :start_semester AND date <= :end_semester', [':start_semester' => $semester->start_date, ':end_semester' => $semester->end_date]), 'ics_count' => IcsAnalytics::model()->count('time LIKE :date', [':date' => date('Y-m-d') . '%'])]); }