PluginProbe
Sessions / 2.3.1
Sessions v2.3.1
2.1.0 2.10.0 2.11.0 2.12.0 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.2.0 2.3.0 2.3.1 2.4.0 2.4.1 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.8.0 2.9.0 2.9.1 3.0.0 3.1.0 3.1.1 All 39 releases
sessions / includes / features / class-limitertypes.php

class-limitertypes.php in Sessions 2.3.1, at includes/features/class-limitertypes.php

92 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Limiter types handling
4 *
5 * Handles all available limiter types.
6 *
7 * @package Features
8 * @author Pierre Lannoy <https://pierre.lannoy.fr/>.
9 * @since 1.0.0
10 */
11
12 namespace POSessions\Plugin\Feature;
13
14 use POSessions\System\GeoIP;
15
16 /**
17 * Define the limiter types functionality.
18 *
19 * Handles all available limiter types.
20 *
21 * @package Features
22 * @author Pierre Lannoy <https://pierre.lannoy.fr/>.
23 * @since 1.0.0
24 */
25 class LimiterTypes {
26
27 /**
28 * The list of available selectors.
29 *
30 * @since 1.0.0
31 * @var array $channels Maintains the selectors definitions.
32 */
33 public static $selectors = [ 'user', 'country', 'ip', 'device-class', 'device-type', 'device-client', 'device-browser', 'device-os' ];
34
35 /**
36 * The list of available selector names.
37 *
38 * @since 1.0.0
39 * @var array $channel_names Maintains the selector names.
40 */
41 public static $selector_names = [];
42
43 /**
44 * Initialize the meta class and set its properties.
45 *
46 * @since 1.0.0
47 */
48 public static function init() {
49 self::$selector_names['user'] = '';
50 self::$selector_names['country'] = esc_html__( 'country', 'sessions' );
51 self::$selector_names['ip'] = esc_html__( 'IP address', 'sessions' );
52 self::$selector_names['device-class'] = esc_html__( 'device class', 'sessions' );
53 self::$selector_names['device-type'] = esc_html__( 'device type', 'sessions' );
54 self::$selector_names['device-client'] = esc_html__( 'client type', 'sessions' );
55 self::$selector_names['device-browser'] = esc_html__( 'browser', 'sessions' );
56 self::$selector_names['device-os'] = esc_html__( 'operating system', 'sessions' );
57 }
58
59 /**
60 * Verify if a limiter selector is available.
61 *
62 * @param string $selector The selector ID.
63 * @return boolean True if the selector is available, false otherwise.
64 * @since 1.0.0
65 */
66 public static function is_selector_available( $selector ) {
67 switch ( $selector ) {
68 case 'none':
69 case 'user':
70 case 'ip':
71 $result = true;
72 break;
73 case 'country':
74 $geo_ip = new GeoIP();
75 $result = $geo_ip->is_installed();
76 break;
77 case 'device-class':
78 case 'device-type':
79 case 'device-client':
80 case 'device-browser':
81 case 'device-os':
82 $result = class_exists( 'PODeviceDetector\API\Device' );
83 break;
84 default:
85 $result = false;
86 }
87 return $result;
88 }
89
90 }
91
92 LimiterTypes::init();