PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.3
Independent Analytics – WordPress Analytics Plugin v2.15.3
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 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 / Rows / Link_Patterns.php
independent-analytics / IAWP / Rows Last commit date
Campaign_Landing_Pages.php 1 week ago Campaign_UTM_Campaigns.php 1 week ago Campaign_UTM_Mediums.php 1 week ago Campaign_UTM_Sources.php 1 week ago Campaigns.php 1 week ago Cities.php 1 week ago Countries.php 1 week ago Device_Browsers.php 1 week ago Device_OSS.php 1 week ago Device_Types.php 1 week ago Filter.php 5 months ago Forms.php 5 months ago Journeys.php 3 months ago Link_Patterns.php 4 months ago Links.php 5 months ago Pages.php 2 weeks ago Referrer_Types.php 1 week ago Referrers.php 1 week ago Rows.php 2 weeks ago
Link_Patterns.php
51 lines
1 <?php
2
3 namespace IAWP\Rows;
4
5 use IAWP\Illuminate_Builder;
6 use IAWP\Models\Link_Pattern;
7 use IAWP\Query_Taps;
8 use IAWPSCOPED\Illuminate\Database\Query\Builder;
9 use IAWPSCOPED\Illuminate\Database\Query\JoinClause;
10 /** @internal */
11 class Link_Patterns extends \IAWP\Rows\Rows
12 {
13 public function attach_filters(Builder $query) : void
14 {
15 $query->joinSub($this->query(\true), 'click_rows', function (JoinClause $join) {
16 $join->on('click_rows.link_rule_id', '=', 'link_rules.link_rule_id');
17 });
18 }
19 protected function fetch_rows() : array
20 {
21 $rows = $this->query()->get()->all();
22 return \array_map(function ($row) {
23 return new Link_Pattern($row);
24 }, $rows);
25 }
26 protected function sort_tie_breaker_column() : string
27 {
28 return 'link_name';
29 }
30 private function query(?bool $skip_pagination = \false) : Builder
31 {
32 if ($skip_pagination) {
33 $this->number_of_rows = null;
34 }
35 $records = Illuminate_Builder::new()->select(['link_rules.link_rule_id AS link_rule_id', 'link_rules.name AS link_name'])->selectRaw('COUNT(DISTINCT clicks.click_id) AS link_clicks')->from($this->tables::link_rules(), 'link_rules')->leftJoin($this->tables::links() . ' AS links', 'links.link_rule_id', '=', 'link_rules.link_rule_id')->leftJoin($this->tables::click_targets() . ' AS click_targets', 'click_targets.click_target_id', '=', 'links.click_target_id')->leftJoin($this->tables::clicked_links() . ' AS clicked_links', 'clicked_links.link_id', '=', 'links.id')->leftJoin($this->tables::clicks() . ' AS clicks', 'clicks.click_id', '=', 'clicked_links.click_id')->leftJoin($this->tables::views() . ' AS views', 'views.id', '=', 'clicks.view_id')->whereBetween('clicks.created_at', $this->get_current_period_iso_range())->when(\is_int($this->solo_record_id), function (Builder $query) {
36 $query->where('link_rules.link_rule_id', '=', $this->solo_record_id);
37 })->when(\is_int($this->number_of_rows), function (Builder $query) {
38 $query->limit($this->number_of_rows);
39 })->tap(Query_Taps::tap_authored_content_for_clicks())->when($this->examiner_config, function (Builder $query) {
40 $query->leftJoin($this->tables::sessions() . ' AS sessions', 'sessions.session_id', '=', 'views.session_id');
41 $query->tap(Query_Taps::tap_related_to_examined_record($this->examiner_config));
42 })->orderBy($this->sort_configuration->column(), $this->sort_configuration->direction())->orderBy('link_rules.name')->groupBy('link_rules.link_rule_id')->tap(fn(Builder $query) => $this->apply_record_filters($query));
43 $outer_query = Illuminate_Builder::new()->select('*')->fromSub($records, 'records')->tap(fn(Builder $query) => $this->apply_aggregate_filters($query));
44 if ($this->using_logical_or_operator() && $this->filtering_by_mixed_columns()) {
45 $og_outer_query = $outer_query;
46 $outer_query = Illuminate_Builder::new()->select('*')->fromSub($og_outer_query, 'records')->tap(fn(Builder $query) => $this->apply_or_filters($query))->tap(fn(Builder $query) => $this->apply_order_and_limit($query, $this->sort_configuration->column()));
47 }
48 return $outer_query;
49 }
50 }
51