PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / app / src / Rules / Condition / Audience / Browser.php

Browser.php in Depicter — Popup & Slider Builder trunk, at app/src/Rules/Condition/Audience/Browser.php

108 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Depicter\Rules\Condition\Audience;
4
5 use Averta\Core\Utility\Arr;
6 use Depicter\Rules\Condition\Base as ConditionBase;
7 use foroco\BrowserDetection;
8
9 class Browser extends ConditionBase
10 {
11 /**
12 * @inheritdoc
13 */
14 public $slug = 'Audience_Browser';
15
16 /**
17 * @inheritdoc
18 */
19 public $control = 'multiSelect';
20
21 /**
22 * @inheritdoc
23 */
24 protected $belongsTo = 'Audience';
25
26 /**
27 * @inheritdoc
28 */
29 public function getLabel(): ?string{
30 return __('Visitor Browser', 'depicter' );
31 }
32
33 /**
34 * @inheritDoc
35 */
36 public function getControlOptions(){
37 $options = parent::getControlOptions();
38
39 return Arr::merge( $options, [ 'options' => [
40 [
41 'label' => __( 'Chrome', 'depicter' ),
42 'value' => 'Chrome'
43 ],
44 [
45 'label' => __( 'Firefox', 'depicter' ),
46 'value' => 'Firefox'
47 ],
48 [
49 'label' => __( 'Safari', 'depicter' ),
50 'value' => 'Safari'
51 ],
52 [
53 'label' => __( 'Edge', 'depicter' ),
54 'value' => 'Edge'
55 ],
56 [
57 'label' => __( 'Opera', 'depicter' ),
58 'value' => 'Opera'
59 ],
60 [
61 'label' => __( 'Internet Explorer', 'depicter' ),
62 'value' => 'Internet Explorer'
63 ],
64 [
65 'label' => __( 'Brave', 'depicter' ),
66 'value' => 'Brave'
67 ],
68 [
69 'label' => __( 'Samsung Browser', 'depicter' ),
70 'value' => 'Samsung Browser'
71 ],
72 [
73 'label' => __( 'UC Browser', 'depicter' ),
74 'value' => 'UC Browser'
75 ],
76 [
77 'label' => __( 'Huawei Browser', 'depicter' ),
78 'value' => 'Huawei Browser'
79 ],
80 [
81 'label' => __( 'Vivaldi', 'depicter' ),
82 'value' => 'Vivaldi'
83 ],
84 ]]);
85 }
86
87 /**
88 * @inheritdoc
89 */
90 public function check( $value = null ): bool{
91
92 $value = $value ?? $this->value;
93 $isIncluded = empty( $value );
94 if ( ! $isIncluded ) {
95 $userAgent = ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
96 $browser = new BrowserDetection();
97 foreach( $value as $device ) {
98 $isIncluded = strtolower( $device ) == strtolower( $browser->getBrowser( $userAgent )['browser_name'] );
99 if ( $isIncluded ) {
100 break;
101 }
102 }
103 }
104
105 return $this->selectionMode === 'include' ? $isIncluded : ! $isIncluded;
106 }
107 }
108