PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.2
Independent Analytics – WordPress Analytics Plugin v2.14.2
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 / Integrations / Integration.php
independent-analytics / IAWP / Integrations Last commit date
Integration.php 1 year ago Integrations.php 6 months ago
Integration.php
97 lines
1 <?php
2
3 namespace IAWP\Integrations;
4
5 use Error;
6 use IAWPSCOPED\Illuminate\Support\Collection;
7 use IAWPSCOPED\Illuminate\Support\Str;
8 /** @internal */
9 class Integration
10 {
11 private array $attributes;
12 public function __construct(array $attributes)
13 {
14 // An integration can only belong to a plugin or a theme, not both.
15 if (isset($attributes['plugin']) && isset($attributes['theme'])) {
16 throw new Error('An integration cannot define both "plugin" and "theme"');
17 }
18 $this->attributes = $attributes;
19 }
20 public function name() : string
21 {
22 return $this->attributes['name'];
23 }
24 public function description() : string
25 {
26 return $this->attributes['description'];
27 }
28 public function feature_page_url()
29 {
30 if ($this->is_ecommerce_plugin()) {
31 return 'https://independentwp.com/features/woocommerce-analytics/';
32 } elseif ($this->is_form_plugin()) {
33 return 'https://independentwp.com/features/form-tracking/';
34 }
35 }
36 public function label()
37 {
38 if ($this->is_ecommerce_plugin()) {
39 return 'eCommerce';
40 } elseif ($this->is_form_plugin()) {
41 return 'Form';
42 }
43 }
44 public function icon() : string
45 {
46 if (\array_key_exists('filename', $this->attributes)) {
47 return \IAWPSCOPED\iawp_icon($this->attributes['filename']);
48 }
49 $file = $this->name();
50 $file = Str::replace(' ', '_', $file);
51 $file = Str::lower($file);
52 return \IAWPSCOPED\iawp_icon($file);
53 }
54 public function activated() : bool
55 {
56 return $this->activated_plugin() || $this->activated_theme();
57 }
58 public function is_ecommerce_plugin() : bool
59 {
60 return $this->attributes['category'] === 'ecommerce';
61 }
62 public function is_form_plugin() : bool
63 {
64 return $this->attributes['category'] === 'form';
65 }
66 public function html() : string
67 {
68 return \IAWPSCOPED\iawp_blade()->run('integrations.integration', ['integration' => $this]);
69 }
70 private function activated_plugin() : bool
71 {
72 if (!isset($this->attributes['plugin'])) {
73 return \false;
74 }
75 $slugs = $this->attributes['plugin'];
76 if (\is_string($slugs)) {
77 $slugs = [$slugs];
78 }
79 return Collection::make($slugs)->contains(function ($slug) {
80 return \is_plugin_active($slug);
81 });
82 }
83 private function activated_theme() : bool
84 {
85 if (!isset($this->attributes['theme'])) {
86 return \false;
87 }
88 $themes = $this->attributes['theme'];
89 if (\is_string($themes)) {
90 $themes = [$themes];
91 }
92 return Collection::make($themes)->contains(function ($slug) {
93 return \strtolower(\get_template()) === \strtolower($slug);
94 });
95 }
96 }
97