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