PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.0
Independent Analytics – WordPress Analytics Plugin v2.15.0
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 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Journey / JourneyStatisticsJob.php
independent-analytics / IAWP / Journey Last commit date
Events 3 months ago EngagementScore.php 6 months ago JourneyStatisticsJob.php 5 months ago Timeline.php 5 months ago
JourneyStatisticsJob.php
50 lines
1 <?php
2
3 namespace IAWP\Journey;
4
5 use IAWPSCOPED\Carbon\CarbonImmutable;
6 use IAWP\Cron_Job;
7 use IAWP\Illuminate_Builder;
8 use IAWP\Tables;
9 /** @internal */
10 class JourneyStatisticsJob extends Cron_Job
11 {
12 protected $name = 'iawp_journey_statistics';
13 protected $interval = 'daily';
14 protected $at_midnight = \true;
15 public function should_execute_handler() : bool
16 {
17 return \IAWPSCOPED\iawp_is_pro();
18 }
19 public function handle() : void
20 {
21 $this->calculate_average_views_cutoff();
22 $this->calculate_duration_cutoffs();
23 }
24 private function calculate_average_views_cutoff() : void
25 {
26 $thiry_days_ago = CarbonImmutable::now('utc')->subDays(30);
27 $sessions = Illuminate_Builder::new()->from(Tables::sessions())->where('total_views', '>', 1)->where('created_at', '>', $thiry_days_ago)->count();
28 if ($sessions < 25) {
29 return;
30 }
31 $sessions_in_seventy_fifth_percentile = \intval(\round($sessions * 0.75));
32 $average_views_cutoff = Illuminate_Builder::new()->select('total_views')->from(Tables::sessions())->where('total_views', '>', 1)->where('created_at', '>', $thiry_days_ago)->orderBy('total_views', 'ASC')->limit(1)->offset($sessions_in_seventy_fifth_percentile)->value('total_views');
33 \update_option('iawp_average_views_cutoff', $average_views_cutoff, \false);
34 }
35 private function calculate_duration_cutoffs() : void
36 {
37 $thiry_days_ago = CarbonImmutable::now('utc')->subDays(30);
38 $sessions = Illuminate_Builder::new()->from(Tables::sessions())->whereNotNull('ended_at')->where('created_at', '>', $thiry_days_ago)->count();
39 if ($sessions < 25) {
40 return;
41 }
42 $sessions_in_thirty_third_percentile = \intval(\round($sessions * 0.33));
43 $sessions_in_sixty_seventh_percentile = \intval(\round($sessions * 0.67));
44 $low_duration_cutoff = Illuminate_Builder::new()->selectRaw('TIMESTAMPDIFF(SECOND, created_at, ended_at) AS duration')->from(Tables::sessions())->whereNotNull('ended_at')->where('created_at', '>', $thiry_days_ago)->orderBy('total_views', 'ASC')->limit(1)->offset($sessions_in_thirty_third_percentile)->value('total_views');
45 $average_duration_cutoff = Illuminate_Builder::new()->selectRaw('TIMESTAMPDIFF(SECOND, created_at, ended_at) AS duration')->from(Tables::sessions())->whereNotNull('ended_at')->where('created_at', '>', $thiry_days_ago)->orderBy('duration', 'ASC')->limit(1)->offset($sessions_in_sixty_seventh_percentile)->value('duration');
46 \update_option('iawp_low_duration_cutoff', $low_duration_cutoff, \false);
47 \update_option('iawp_average_duration_cutoff', $average_duration_cutoff, \false);
48 }
49 }
50