PluginProbe
Metricool – Social media and site statistics / trunk
Metricool – Social media and site statistics vtrunk
2.1.0 2.0.2 2.0.1 2.0.0 1.27 trunk
metricool / app / Controllers / TrackingScriptController.php

TrackingScriptController.php in Metricool – Social media and site statistics trunk, at app/Controllers/TrackingScriptController.php

58 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Metricool\Controllers;
6
7 if (!defined('ABSPATH')) {
8 exit;
9 }
10
11 use Metricool\Traits\HasViews;
12 use Metricool\Services\TrackingScriptService;
13 use Metricool\Interfaces\ControllerInterface;
14 use Metricool\Support\Helpers\Storages\EnvironmentConfig;
15
16 class TrackingScriptController implements ControllerInterface
17 {
18 use HasViews;
19
20 private EnvironmentConfig $env;
21 private TrackingScriptService $service;
22
23 public function __construct(EnvironmentConfig $env, TrackingScriptService $service)
24 {
25 $this->env = $env;
26 $this->service = $service;
27 }
28
29 public function register(): void
30 {
31 add_action('wp_footer', [$this, 'renderTrackingWidget']);
32 }
33
34 public function renderTrackingWidget(): void
35 {
36 if ($this->canRenderTrackingScript() === false) {
37 return;
38 }
39
40 $this->render('public/tracking-script', [
41 'script_url' => $this->env->getUrl('metricool.tracking_script_url'),
42 'hash' => $this->service->getTrackingHash(),
43 ]);
44 }
45
46 /**
47 * Checks if the tracking script can be rendered. Only if the tracking hash
48 * is set and the user has enabled the widget.
49 */
50 private function canRenderTrackingScript(): bool
51 {
52 $outOfScope = (is_admin() || is_feed() || is_robots() || is_trackback());
53 $trackingHashIsNotEmpty = (strlen($this->service->getTrackingHash()) > 0);
54
55 return $trackingHashIsNotEmpty && $this->service->isTrackingWidgetActive() && ($outOfScope === false);
56 }
57 }
58