PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.9
Independent Analytics – WordPress Analytics Plugin v1.9
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 / inc / queries / referrers.php
independent-analytics / inc / queries Last commit date
geos.php 4 years ago range_query.php 4 years ago referrers.php 4 years ago resources.php 4 years ago views.php 4 years ago
referrers.php
80 lines
1 <?php
2
3 namespace IAWP;
4
5 class Referrers extends Range_Query
6 {
7 private $results;
8
9 public function get_referrers()
10 {
11 if (is_null($this->results)) {
12 $this->results = $this->query();
13 }
14
15 return $this->results;
16 }
17
18 public function get_referrers_as_csv()
19 {
20 $referrers = $this->get_referrers();
21 $arr = [['Referrer', 'Referrer Type', 'Views', 'Visitors']];
22
23 foreach ($referrers as $referrer) {
24 $arr[] = [
25 $referrer->referrer_label(),
26 $referrer->referrer_type(),
27 $referrer->views(),
28 $referrer->visitors(),
29 ];
30 }
31
32 return Array_To_CSV::array2csv($arr);
33 }
34
35 private function query()
36 {
37 global $wpdb;
38 $views_table = DB::views_table();
39 $referrers_table = DB::referrers_table();
40 $referrer_groups_table = DB::referrer_groups_table();
41
42 $referrer_traffic_query = $wpdb->prepare(
43 "
44 SELECT
45 GROUP_CONCAT(DISTINCT $views_table.referrer_id) as referrer_ids,
46 IFNULL($referrer_groups_table.name, $referrers_table.domain) as group_name,
47 GROUP_CONCAT(DISTINCT IFNULL($referrer_groups_table.domain, $referrers_table.domain)) as domain,
48 GROUP_CONCAT(DISTINCT $referrer_groups_table.type) as type,
49 COUNT(*) as views,
50 COUNT(DISTINCT visitor_id) as visitors
51 FROM $views_table
52 LEFT JOIN $referrers_table ON $views_table.referrer_id = $referrers_table.id
53 LEFT JOIN $referrer_groups_table ON $referrers_table.domain = $referrer_groups_table.domain_to_match
54 WHERE $views_table.viewed_at BETWEEN %s AND %s
55 GROUP BY group_name
56 ORDER BY views DESC;
57 ",
58 $this->formatted_start(),
59 $this->formatted_end()
60 );
61 $referrer_traffic = $wpdb->get_results($referrer_traffic_query);
62
63 return self::rows_to_referrers($referrer_traffic);
64 }
65
66 private function rows_to_referrers($rows)
67 {
68 return array_map(function ($row) {
69 $is_direct = is_null($row->referrer_ids);
70 $referrer_ids = explode(',', $row->referrer_ids);
71
72 if ($is_direct) {
73 return new Referrer(null, null, null, null, $row->views, $row->visitors);
74 }
75
76 return new Referrer($referrer_ids, $row->group_name, $row->domain, $row->type, $row->views, $row->visitors);
77 }, $rows);
78 }
79 }
80