PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 6.0.4
Admin and Site Enhancements (ASE) v6.0.4
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-common-methods.php
admin-site-enhancements / classes Last commit date
class-activation.php 2 years ago class-admin-interface.php 2 years ago class-common-methods.php 2 years ago class-content-management.php 2 years ago class-custom-code.php 2 years ago class-deactivation.php 2 years ago class-disable-components.php 2 years ago class-login-logout.php 2 years ago class-optimizations.php 2 years ago class-security.php 2 years ago class-settings-fields-render.php 2 years ago class-settings-sanitization.php 2 years ago class-settings-sections-fields.php 2 years ago class-utilities.php 2 years ago
class-common-methods.php
173 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class that provides common methods used throughout the plugin
7 *
8 * @since 2.5.0
9 */
10 class Common_Methods
11 {
12 /**
13 * Get IP of the current visitor/user. In use by at least the Limit Login Attempts feature.
14 *
15 * @since 2.5.0
16 */
17 public function get_user_ip_address()
18 {
19
20 if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
21 $ip_address = sanitize_text_field( $_SERVER['REMOTE_ADDR'] );
22 } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
23 $ip_address = sanitize_text_field( $_SERVER['HTTP_X_FORWARDED_FOR'] );
24 } elseif ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) {
25 $ip_address = sanitize_text_field( $_SERVER['HTTP_CLIENT_IP'] );
26 } else {
27 $ip_address = '0.0.0.0';
28 }
29
30 return $ip_address;
31 }
32
33 /**
34 * Convert number of seconds into hours, minutes, seconds. In use by at least the Limit Login Attempts feature.
35 *
36 * @since 2.5.0
37 */
38 public function seconds_to_period( $seconds, $conversion_type )
39 {
40 $period_start = new \DateTime( '@0' );
41 $period_end = new \DateTime( "@{$seconds}" );
42
43 if ( $conversion_type == 'to-days-hours-minutes-seconds' ) {
44 return $period_start->diff( $period_end )->format( '%a days, %h hours, %i minutes and %s seconds' );
45 } elseif ( $conversion_type == 'to-hours-minutes-seconds' ) {
46 return $period_start->diff( $period_end )->format( '%h hours, %i minutes and %s seconds' );
47 } elseif ( $conversion_type == 'to-minutes-seconds' ) {
48 return $period_start->diff( $period_end )->format( '%i minutes and %s seconds' );
49 } else {
50 return $period_start->diff( $period_end )->format( '%a days, %h hours, %i minutes and %s seconds' );
51 }
52
53 }
54
55 /**
56 * Remove html tags and content inside the tags from a string
57 *
58 * @since 3.0.3
59 */
60 public function strip_html_tags_and_content( $string )
61 {
62 // Strip HTML tags and content inside them. Ref: https://stackoverflow.com/a/39320168
63 if ( !is_null( $string ) ) {
64 $string = preg_replace( '@<(\\w+)\\b.*?>.*?</\\1>@si', '', $string );
65 }
66 // Strip any remaining HTML or PHP tags
67 $string = strip_tags( $string );
68 return $string;
69 }
70
71 /**
72 * Get menu hidden by toggle
73 *
74 * @since 5.1.0
75 */
76 public function get_menu_hidden_by_toggle()
77 {
78 $menu_hidden_by_toggle = array();
79 $options = get_option( ASENHA_SLUG_U, array() );
80
81 if ( array_key_exists( 'custom_menu_hidden', $options ) ) {
82 $menu_hidden = $options['custom_menu_hidden'];
83 $menu_hidden = explode( ',', $menu_hidden );
84 $menu_hidden_by_toggle = array();
85 foreach ( $menu_hidden as $menu_id ) {
86 $menu_hidden_by_toggle[] = $this->restore_menu_item_id( $menu_id );
87 }
88 }
89
90 return $menu_hidden_by_toggle;
91 }
92
93 /**
94 * Get user capabilities for which the "Show All/Less" menu toggle should be shown for
95 *
96 * @since 5.1.0
97 */
98 public function get_user_capabilities_to_show_menu_toggle_for()
99 {
100 global $menu ;
101 $menu_always_hidden = array();
102 $user_capabilities_menus_are_hidden_for = array();
103 $menu_hidden_by_toggle = $this->get_menu_hidden_by_toggle();
104 // indexed array
105 foreach ( $menu as $menu_key => $menu_info ) {
106 foreach ( $menu_hidden_by_toggle as $hidden_menu_id ) {
107
108 if ( false !== strpos( $menu_info[4], 'wp-menu-separator' ) ) {
109 $menu_item_id = $menu_info[2];
110 } else {
111 $menu_item_id = $menu_info[5];
112 }
113
114 $menu_item_id_transformed = $this->transform_menu_item_id( $menu_item_id );
115 if ( $menu_item_id_transformed == $hidden_menu_id ) {
116 $user_capabilities_menus_are_hidden_for[] = $menu_info[1];
117 }
118 }
119 }
120 $user_capabilities_menus_are_hidden_for = array_unique( $user_capabilities_menus_are_hidden_for );
121 return $user_capabilities_menus_are_hidden_for;
122 // indexed array
123 }
124
125 /**
126 * Transform menu item's ID
127 *
128 * @since 5.1.0
129 */
130 public function transform_menu_item_id( $menu_item_id )
131 {
132 // Transform e.g. edit.php?post_type=page ==> edit__php___post_type____page
133 $menu_item_id_transformed = str_replace( array(
134 ".",
135 "?",
136 "=",
137 "&",
138 "/"
139 ), array(
140 "__",
141 "___",
142 "____",
143 "_____",
144 "______"
145 ), $menu_item_id );
146 return $menu_item_id_transformed;
147 }
148
149 /**
150 * Transform menu item's ID
151 *
152 * @since 5.1.0
153 */
154 public function restore_menu_item_id( $menu_item_id_transformed )
155 {
156 // Transform e.g. edit__php___post_type____page ==> edit.php?post_type=page
157 $menu_item_id = str_replace( array(
158 "______",
159 "_____",
160 "____",
161 "___",
162 "__"
163 ), array(
164 "/",
165 "&",
166 "=",
167 "?",
168 "."
169 ), $menu_item_id_transformed );
170 return $menu_item_id;
171 }
172
173 }