PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.11.2
Independent Analytics – WordPress Analytics Plugin v2.11.2
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Email_Reports / Email_Chart.php
Email_Chart.php
68 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Email_Reports;
4
5 use IAWP\Statistics\Statistics;
6 use IAWPSCOPED\Proper\Number;
7 /** @internal */
8 class Email_Chart
9 {
10 public $views;
11 public $most_views;
12 public $y_labels;
13 public $x_labels;
14 private $statistics;
15 public function __construct(Statistics $statistics)
16 {
17 $this->statistics = $statistics;
18 $this->views = self::views();
19 $this->most_views = self::most_views();
20 $this->y_labels = self::y_labels();
21 $this->x_labels = self::x_labels();
22 }
23 public function views()
24 {
25 return \array_map(function ($day) {
26 return $day[1];
27 }, $this->statistics->get_statistic('views')->statistic_over_time());
28 }
29 public function most_views()
30 {
31 return \round(\max($this->views) * 1.1);
32 }
33 public function y_labels()
34 {
35 return [Number::abbreviate($this->most_views), Number::abbreviate($this->most_views / 2), 0];
36 }
37 public function x_labels()
38 {
39 $interval = \IAWPSCOPED\iawp()->get_option('iawp_email_report_interval', 'monthly');
40 $format = 'M j';
41 if ($interval == 'weekly') {
42 $format = 'D';
43 } elseif ($interval == 'daily') {
44 $format = \IAWPSCOPED\iawp()->get_option('time_format', 'g:i a');
45 }
46 $all_x_labels = \array_map(function ($day) use($format) {
47 return $day[0]->format($format);
48 }, $this->statistics->get_statistic('views')->statistic_over_time());
49 $x_labels = [];
50 if ($interval == 'monthly') {
51 for ($x = 0; $x < \count($all_x_labels); $x++) {
52 if (($x + 5) % 5 == 0) {
53 $x_labels[] = $all_x_labels[$x];
54 }
55 }
56 } elseif ($interval == 'weekly') {
57 $x_labels = $all_x_labels;
58 } elseif ($interval == 'daily') {
59 for ($x = 0; $x < \count($all_x_labels); $x++) {
60 if (($x + 6) % 6 == 0) {
61 $x_labels[] = $all_x_labels[$x];
62 }
63 }
64 }
65 return $x_labels;
66 }
67 }
68