PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.30.0
Independent Analytics – WordPress Analytics Plugin v1.30.0
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 / Models / Visitor.php
independent-analytics / IAWP / Models Last commit date
Campaign.php 3 years ago Current_Traffic.php 3 years ago Device.php 2 years ago Geo.php 2 years ago Page.php 2 years ago Page_Author_Archive.php 3 years ago Page_Date_Archive.php 3 years ago Page_Home.php 3 years ago Page_Not_Found.php 3 years ago Page_Post_Type_Archive.php 2 years ago Page_Search.php 3 years ago Page_Singular.php 2 years ago Page_Term_Archive.php 3 years ago Referrer.php 2 years ago View_Stats.php 2 years ago Visitor.php 2 years ago WooCommerce_Stats.php 3 years ago
Visitor.php
76 lines
1 <?php
2
3 namespace IAWP_SCOPED\IAWP\Models;
4
5 use IAWP_SCOPED\IAWP\Geoposition;
6 use IAWP_SCOPED\IAWP\Query;
7 use IAWP_SCOPED\IAWP\Utils\Salt;
8 /**
9 * How to use:
10 *
11 * Example IP from the Netherlands
12 * $visitor = new Visitor('92.111.145.208', 'some ua string');
13 *
14 * Example IP from the United States
15 * $visitor = new Visitor('98.111.145.208', 'some ua string');
16 *
17 * Access visitor token
18 * $visitor->id();
19 */
20 class Visitor
21 {
22 private $id;
23 private $geoposition;
24 /**
25 * New instances should be created with a string ip address
26 *
27 * @param string $ip
28 * @param string $user_agent
29 */
30 public function __construct(string $ip, string $user_agent)
31 {
32 $this->id = self::calculate_id($ip, $user_agent);
33 $this->geoposition = new Geoposition($ip);
34 }
35 public function geoposition() : Geoposition
36 {
37 return $this->geoposition;
38 }
39 /**
40 * Get the id for the most recent view for a visitor
41 *
42 * @return int|null
43 */
44 public function most_recent_view_id() : ?int
45 {
46 global $wpdb;
47 $views_table = Query::get_table_name(Query::VIEWS);
48 $sessions_table = Query::get_table_name(Query::SESSIONS);
49 $id = $wpdb->get_var($wpdb->prepare("\n SELECT views.id as id\n FROM {$views_table} AS views\n LEFT JOIN {$sessions_table} AS sessions ON sessions.session_id = views.session_id\n WHERE sessions.visitor_id = %s\n ORDER BY views.viewed_at DESC\n LIMIT 1\n ", $this->id()));
50 if (\is_null($id)) {
51 return null;
52 }
53 return \intval($id);
54 }
55 /**
56 * Return the database id for a visitor
57 *
58 * @return string
59 */
60 public function id() : string
61 {
62 return $this->id;
63 }
64 /**
65 * @param string $ip
66 * @param string $user_agent
67 * @return string
68 */
69 private function calculate_id(string $ip, string $user_agent) : string
70 {
71 $salt = Salt::visitor_token_salt();
72 $result = $salt . $ip . $user_agent;
73 return \md5($result);
74 }
75 }
76