PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.10.3
Independent Analytics – WordPress Analytics Plugin v2.10.3
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 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 / Links.php
independent-analytics / IAWP / Rows Last commit date
Campaigns.php 1 year ago Cities.php 1 year ago Countries.php 1 year ago Device_Browsers.php 1 year ago Device_OSS.php 1 year ago Device_Types.php 1 year ago Filter.php 1 year ago Forms.php 1 year ago Link_Patterns.php 1 year ago Links.php 1 year ago Pages.php 1 year ago Referrers.php 1 year ago Rows.php 1 year ago
Links.php
44 lines
1 <?php
2
3 namespace IAWP\Rows;
4
5 use IAWP\Illuminate_Builder;
6 use IAWP\Models\Click;
7 use IAWP\Query_Taps;
8 use IAWPSCOPED\Illuminate\Database\Query\Builder;
9 use IAWPSCOPED\Illuminate\Database\Query\JoinClause;
10 /** @internal */
11 class Links 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 $join->on('click_rows.click_target_id', '=', 'click_targets.click_target_id');
18 });
19 }
20 protected function fetch_rows() : array
21 {
22 $rows = $this->query()->get()->all();
23 return \array_map(function ($row) {
24 return new Click($row);
25 }, $rows);
26 }
27 private function query(?bool $skip_pagination = \false) : Builder
28 {
29 if ($skip_pagination) {
30 $this->number_of_rows = null;
31 }
32 $query = Illuminate_Builder::new()->select(['link_rules.link_rule_id AS link_rule_id', 'click_targets.click_target_id AS click_target_id', 'link_rules.name AS link_name', 'click_targets.target AS link_target'])->selectRaw('COUNT(DISTINCT clicks.click_id) AS link_clicks')->from($this->tables::link_rules(), 'link_rules')->leftJoin($this->tables::clicked_links() . ' AS clicked_links', 'clicked_links.link_rule_id', '=', 'link_rules.link_rule_id')->leftJoin($this->tables::clicks() . ' AS clicks', 'clicks.click_id', '=', 'clicked_links.click_id')->leftJoin($this->tables::click_targets() . ' AS click_targets', 'click_targets.click_target_id', '=', 'clicks.click_target_id')->whereBetween('clicks.created_at', $this->get_current_period_iso_range())->when(\count($this->filters) > 0, function (Builder $query) {
33 foreach ($this->filters as $filter) {
34 if (!$this->is_a_calculated_column($filter->column())) {
35 $filter->apply_to_query($query);
36 }
37 }
38 })->when(\is_int($this->number_of_rows), function (Builder $query) {
39 $query->limit($this->number_of_rows);
40 })->tap(Query_Taps::tap_authored_content_for_clicks())->orderBy($this->sort_configuration->column(), $this->sort_configuration->direction())->orderBy('link_name')->groupBy('link_rules.link_rule_id', 'clicks.click_target_id');
41 return $query;
42 }
43 }
44