PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.12.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.12.1
5.12.1 5.12.0 5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / classes / WpMatomo / WpStatistics / Importers / Actions / VisitorsImporter.php
matomo / classes / WpMatomo / WpStatistics / Importers / Actions Last commit date
ActionsInterface.php 4 years ago DeviceDetectionImporter.php 2 weeks ago PagesImporter.php 2 weeks ago RecordImporter.php 2 weeks ago ReferrersImporter.php 8 months ago UserCountryImporter.php 8 months ago VisitorsImporter.php 2 weeks ago VisitsTimeImporter.php 1 year ago
VisitorsImporter.php
94 lines
1 <?php
2
3 namespace WpMatomo\WpStatistics\Importers\Actions;
4
5 use Piwik\Common;
6 use Piwik\Metrics;
7 use WP_STATISTICS\MetaBox\top_visitors;
8 use Piwik\Date;
9 use WP_Statistics\Models\VisitorsModel;
10 use WpMatomo\WpStatistics\Config;
11 /**
12 * @package WpMatomo
13 * @subpackage WpStatisticsImport
14 */
15 class VisitorsImporter extends RecordImporter implements ActionsInterface {
16
17 const PLUGIN_NAME = 'VisitsSummary';
18
19 public function import_records( Date $date ) {
20 if ( class_exists( '\WP_Statistics\Models\VisitorsModel' ) ) {
21 $visits = $this->import_from_model( $date );
22 } else {
23 $visits = $this->import_from_metabox( $date );
24 }
25
26 $this->logger->debug( 'Import {nb_visits} visits...', [ 'nb_visits' => count( $visits ) ] );
27 $this->insert_numeric_records( [ Metrics::INDEX_NB_UNIQ_VISITORS => count( $visits ) ] );
28 $this->insert_numeric_records( [ Metrics::INDEX_NB_VISITS => count( $visits ) ] );
29 Common::destroy( $visits );
30 return $visits;
31 }
32
33 private function import_from_model( Date $date ) {
34 $limit = 100;
35 $visits = [];
36 $page = 0;
37 do {
38 ++$page;
39
40 // copied from wp-statistics-meta-box-top-visitors.php.
41 // used to use top_visitors::get(), but that no longer supports
42 // pagination.
43 try {
44 $visitors_model = new VisitorsModel();
45 $response = $visitors_model->getVisitorsData(
46 [
47 'date' => [
48 'from' => $date->toString(),
49 'to' => $date->toString(),
50 ],
51 'page' => $page,
52 'per_page' => $limit,
53 'order_by' => 'hits',
54 'order' => 'DESC',
55 'user_info' => true,
56 'page_info' => true,
57 ]
58 );
59 } catch ( \Exception $e ) {
60 $response = array();
61 }
62
63 $no_data = count( $response ) < 1;
64 if ( ! $no_data ) {
65 $visits = array_merge( $visits, $response );
66 }
67 } while ( true !== $no_data );
68
69 return $visits;
70 }
71
72 private function import_from_metabox( Date $date ) {
73 $limit = 100;
74 $visits = [];
75 $page = 0;
76 do {
77 ++$page;
78 $visits_found = top_visitors::get(
79 [
80 'day' => $date->toString( Config::WP_STATISTICS_DATE_FORMAT ),
81 'per_page' => $limit,
82 'paged' => $page,
83 ]
84 );
85 $no_data = ( ( array_key_exists( 'no_data', $visits_found ) ) && ( 1 === $visits_found['no_data'] ) );
86 if ( ! $no_data ) {
87 $visits = array_merge( $visits, $visits_found );
88 }
89 } while ( true !== $no_data );
90
91 return $visits;
92 }
93 }
94