PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 5.2.2
Admin and Site Enhancements (ASE) v5.2.2
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 3 years ago class-admin-interface.php 3 years ago class-common-methods.php 3 years ago class-content-management.php 3 years ago class-custom-code.php 3 years ago class-deactivation.php 3 years ago class-disable-components.php 3 years ago class-login-logout.php 3 years ago class-optimizations.php 3 years ago class-security.php 3 years ago class-settings-fields-render.php 3 years ago class-settings-sanitization.php 3 years ago class-settings-sections-fields.php 3 years ago class-utilities.php 3 years ago
class-common-methods.php
147 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 $string = preg_replace( '@<(\\w+)\\b.*?>.*?</\\1>@si', '', $string );
64 // Strip any remaining HTML or PHP tags
65 $string = strip_tags( $string );
66 return $string;
67 }
68
69 /**
70 * Get menu hidden by toggle
71 *
72 * @since 5.1.0
73 */
74 public function get_menu_hidden_by_toggle()
75 {
76 $menu_hidden_by_toggle = array();
77 $options = get_option( ASENHA_SLUG_U, array() );
78
79 if ( array_key_exists( 'custom_menu_hidden', $options ) ) {
80 $menu_hidden = $options['custom_menu_hidden'];
81 $menu_hidden = explode( ',', $menu_hidden );
82 $menu_hidden_by_toggle = array();
83 foreach ( $menu_hidden as $menu_id ) {
84 $menu_hidden_by_toggle[] = $this->restore_menu_item_id( $menu_id );
85 }
86 }
87
88 return $menu_hidden_by_toggle;
89 }
90
91 /**
92 * Get user capabilities for which the "Show All/Less" menu toggle should be shown for
93 *
94 * @since 5.1.0
95 */
96 public function get_user_capabilities_to_show_menu_toggle_for()
97 {
98 global $menu ;
99 $menu_always_hidden = array();
100 $user_capabilities_menus_are_hidden_for = array();
101 $menu_hidden_by_toggle = $this->get_menu_hidden_by_toggle();
102 // indexed array
103 foreach ( $menu as $menu_key => $menu_info ) {
104 foreach ( $menu_hidden_by_toggle as $hidden_menu_id ) {
105
106 if ( false !== strpos( $menu_info[4], 'wp-menu-separator' ) ) {
107 $menu_item_id = $menu_info[2];
108 } else {
109 $menu_item_id = $menu_info[5];
110 }
111
112 $menu_item_id_transformed = $this->transform_menu_item_id( $menu_item_id );
113 if ( $menu_item_id_transformed == $hidden_menu_id ) {
114 $user_capabilities_menus_are_hidden_for[] = $menu_info[1];
115 }
116 }
117 }
118 $user_capabilities_menus_are_hidden_for = array_unique( $user_capabilities_menus_are_hidden_for );
119 return $user_capabilities_menus_are_hidden_for;
120 // indexed array
121 }
122
123 /**
124 * Transform menu item's ID
125 *
126 * @since 5.1.0
127 */
128 public function transform_menu_item_id( $menu_item_id )
129 {
130 // Transform e.g. edit.php?post_type=page ==> edit__php___post_type____page
131 $menu_item_id_transformed = str_replace( array( ".", "?", "=" ), array( "__", "___", "____" ), $menu_item_id );
132 return $menu_item_id_transformed;
133 }
134
135 /**
136 * Transform menu item's ID
137 *
138 * @since 5.1.0
139 */
140 public function restore_menu_item_id( $menu_item_id_transformed )
141 {
142 // Transform e.g. edit__php___post_type____page ==> edit.php?post_type=page
143 $menu_item_id = str_replace( array( "____", "___", "__" ), array( "=", "?", "." ), $menu_item_id_transformed );
144 return $menu_item_id;
145 }
146
147 }