WP Hide & Security Enhancer - Version 1.2

Version Description

  • New Feature Change individual plugin url path
  • Admin layout improvments
  • Fix for Admin canonical filter remove if remove canonical option set
  • PO translations update
  • Translation
Download this release

Release Info

Developer nsp-code
Plugin Icon 128x128 WP Hide & Security Enhancer
Version 1.2
Comparing to
See all releases

Code changes from version 1.1.7 to 1.2

css/wph.css CHANGED
@@ -33,7 +33,7 @@ table.wph_input tbody tr td.param {width: 50%}
33
  table .select.multiple {height: 82px}
34
  table.wph_input tbody tr td h4 {margin: 0px; padding-bottom: 6px}
35
  table.wph_input tbody tr td h5 {font-size: 12px; font-weight: normal; margin: 0; padding-bottom: 6px; padding-top: 10px;}
36
- table.wph_input tbody tr td.label label{ display: block; font-size: 13px; font-weight: bold; padding: 0; margin: 0; color: #333; cursor: default }
37
  table.wph_input tbody tr td.label p, table.wph_input tbody tr td.label .description{ display: block; font-size: 12px; padding: 6px 0 !important; margin: 0 !important; font-style: normal; line-height: 16px; color: #AAA;}
38
  table.wph_input tbody tr td.label .description .important {color: #d54e21}
39
  table.wph_input tbody tr td.label .description .dashicons, table.wph_input tbody tr td.label .description span {display: inline-block}
33
  table .select.multiple {height: 82px}
34
  table.wph_input tbody tr td h4 {margin: 0px; padding-bottom: 6px}
35
  table.wph_input tbody tr td h5 {font-size: 12px; font-weight: normal; margin: 0; padding-bottom: 6px; padding-top: 10px;}
36
+ table.wph_input tbody tr td.label label{ font-size: 13px; font-weight: bold; padding: 0; margin: 0; color: #333; cursor: default }
37
  table.wph_input tbody tr td.label p, table.wph_input tbody tr td.label .description{ display: block; font-size: 12px; padding: 6px 0 !important; margin: 0 !important; font-style: normal; line-height: 16px; color: #AAA;}
38
  table.wph_input tbody tr td.label .description .important {color: #d54e21}
39
  table.wph_input tbody tr td.label .description .dashicons, table.wph_input tbody tr td.label .description span {display: inline-block}
include/admin-interface.class.php CHANGED
@@ -4,6 +4,8 @@
4
  class WPH_interface
5
  {
6
  var $screen_slug;
 
 
7
  var $module;
8
  var $module_settings;
9
  var $interface_data;
@@ -29,9 +31,24 @@
29
  {
30
 
31
  $this->screen_slug = $_GET['page'];
 
32
 
33
  //identify the module by slug
34
  $this->module = $this->functions->get_module_by_slug($this->screen_slug);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  $this->_load_interface_data();
37
 
@@ -41,7 +58,8 @@
41
 
42
  function _load_interface_data()
43
  {
44
- $this->module_settings = $this->functions->filter_settings( $this->module->get_module_settings() );
 
45
  $this->interface_data = $this->module->get_interface_data();
46
  }
47
 
@@ -52,10 +70,20 @@
52
  <div id="wph" class="wrap">
53
  <h1><?php echo $this->interface_data['title'] ?></h1>
54
 
 
 
 
 
 
 
 
55
  <div id="poststuff">
 
 
56
  <div class="postbox">
57
  <h3 class="handle"><?php echo $this->interface_data['handle_title'] ?></h3>
58
  </div>
 
59
 
60
  <div class="inside">
61
 
@@ -64,92 +92,15 @@
64
 
65
  <?php
66
 
 
 
67
  foreach($this->module_settings as $module_setting)
68
  {
 
 
69
 
70
- if(isset($module_setting['type']) && $module_setting['type'] == 'split')
71
- {
72
- ?>
73
- <p>&nbsp;</p>
74
- <?php
75
-
76
- continue;
77
- }
78
-
79
- if($module_setting['visible'] === FALSE)
80
- continue;
81
 
82
- ?>
83
- <div class="postbox">
84
- <table class="wph_input widefat">
85
- <tbody>
86
-
87
- <tr>
88
- <td class="label">
89
- <label for=""><?php echo $module_setting['label'] ?></label>
90
- <?php
91
-
92
- if(is_array($module_setting['description']))
93
- {
94
- foreach($module_setting['description'] as $description)
95
- {
96
- ?>
97
- <div class="description"><?php echo nl2br($description) ?></div>
98
- <?php
99
- }
100
- }
101
- else
102
- {
103
- ?>
104
- <p class="description"><?php echo nl2br($module_setting['description']) ?></p>
105
- <?php
106
- } ?>
107
- </td>
108
- </tr>
109
- <tr>
110
- <td class="data">
111
- <?php if(!empty($module_setting['value_description'])) { ?><p class="description"><?php echo $module_setting['value_description'] ?></p><?php } ?>
112
- <?php
113
-
114
- $option_name = $module_setting['id'];
115
- $value = $this->wph->get_setting_value( $option_name, $module_setting['default_value']);
116
-
117
- switch($module_setting['input_type'])
118
- {
119
- case 'text' :
120
- $class = 'text';
121
-
122
- ?><input name="<?php echo $module_setting['id'] ?>" class="<?php echo $class ?>" value="<?php echo $value ?>" placeholder="<?php echo $module_setting['placeholder'] ?>" type="text"><?php
123
-
124
- break;
125
-
126
- case 'radio' :
127
- $class = 'radio';
128
-
129
- ?>
130
- <fieldset>
131
- <?php
132
-
133
- foreach($module_setting['options'] as $option_value => $option_title)
134
- {
135
- ?><label><input type="radio" class="<?php echo $class ?>" <?php checked($value, $option_value) ?> value="<?php echo $option_value ?>" name="<?php echo $module_setting['id'] ?>"> <span><?php echo $option_title ?></span></label><?php
136
- }
137
-
138
- ?>
139
- </fieldset>
140
- <?php
141
-
142
- break;
143
- }
144
-
145
- ?>
146
- </td>
147
- </tr>
148
- </tbody>
149
- </table>
150
- </div>
151
-
152
- <?php
153
  }
154
 
155
 
@@ -175,6 +126,131 @@
175
  <?php
176
 
177
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
179
 
180
 
4
  class WPH_interface
5
  {
6
  var $screen_slug;
7
+ var $tab_slug;
8
+
9
  var $module;
10
  var $module_settings;
11
  var $interface_data;
31
  {
32
 
33
  $this->screen_slug = $_GET['page'];
34
+ $this->tab_slug = isset($_GET['component']) ? $_GET['component'] : FALSE;
35
 
36
  //identify the module by slug
37
  $this->module = $this->functions->get_module_by_slug($this->screen_slug);
38
+
39
+ if(empty($this->tab_slug) && $this->module->use_tabs === TRUE)
40
+ {
41
+ //get the first component
42
+ foreach($this->module->components as $module_component)
43
+ {
44
+ if( ! $module_component->title)
45
+ continue;
46
+
47
+ $this->tab_slug = $module_component->id;
48
+ break;
49
+ }
50
+
51
+ }
52
 
53
  $this->_load_interface_data();
54
 
58
 
59
  function _load_interface_data()
60
  {
61
+ $this->module_settings = $this->functions->filter_settings( $this->module->get_module_settings($this->tab_slug ));
62
+
63
  $this->interface_data = $this->module->get_interface_data();
64
  }
65
 
70
  <div id="wph" class="wrap">
71
  <h1><?php echo $this->interface_data['title'] ?></h1>
72
 
73
+ <?php
74
+
75
+ if($this->module->use_tabs === TRUE)
76
+ $this->_generate_interface_tabs();
77
+
78
+ ?>
79
+
80
  <div id="poststuff">
81
+
82
+ <?php if(!empty($this->interface_data['handle_title'])) { ?>
83
  <div class="postbox">
84
  <h3 class="handle"><?php echo $this->interface_data['handle_title'] ?></h3>
85
  </div>
86
+ <?php } ?>
87
 
88
  <div class="inside">
89
 
92
 
93
  <?php
94
 
95
+ $outputed_module = FALSE;
96
+
97
  foreach($this->module_settings as $module_setting)
98
  {
99
+
100
+ $this->_generate_module_html($module_setting, $outputed_module);
101
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
+ $outputed_module = TRUE;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
105
 
106
 
126
  <?php
127
 
128
  }
129
+
130
+
131
+ function _generate_module_html($module_setting, $outputed_module)
132
+ {
133
+
134
+ if(isset($module_setting['type']) && $module_setting['type'] == 'split' && $outputed_module === TRUE)
135
+ {
136
+ ?>
137
+ <p>&nbsp;</p>
138
+ <?php
139
+
140
+ return;
141
+ }
142
+ else if (isset($module_setting['type']) && $module_setting['type'] == 'split' && $outputed_module !== TRUE)
143
+ {
144
+
145
+ return;
146
+ }
147
+
148
+ if($module_setting['visible'] === FALSE)
149
+ return;
150
+
151
+ ?>
152
+ <div class="postbox">
153
+ <table class="wph_input widefat">
154
+ <tbody>
155
+
156
+ <tr>
157
+ <td class="label">
158
+ <label for=""><?php echo $module_setting['label'] ?></label>
159
+ <?php
160
+
161
+ if(is_array($module_setting['description']))
162
+ {
163
+ foreach($module_setting['description'] as $description)
164
+ {
165
+ ?>
166
+ <div class="description"><?php echo nl2br($description) ?></div>
167
+ <?php
168
+ }
169
+ }
170
+ else
171
+ {
172
+ ?>
173
+ <p class="description"><?php echo nl2br($module_setting['description']) ?></p>
174
+ <?php
175
+ } ?>
176
+ </td>
177
+ </tr>
178
+ <tr>
179
+ <td class="data">
180
+ <?php if(!empty($module_setting['value_description'])) { ?><p class="description"><?php echo $module_setting['value_description'] ?></p><?php } ?>
181
+ <?php
182
+
183
+ $option_name = $module_setting['id'];
184
+ $value = $this->wph->get_setting_value( $option_name, $module_setting['default_value']);
185
+
186
+ switch($module_setting['input_type'])
187
+ {
188
+ case 'text' :
189
+ $class = 'text';
190
+
191
+ ?><input name="<?php echo $module_setting['id'] ?>" class="<?php echo $class ?>" value="<?php echo $value ?>" placeholder="<?php echo $module_setting['placeholder'] ?>" type="text"><?php
192
+
193
+ break;
194
+
195
+ case 'radio' :
196
+ $class = 'radio';
197
+
198
+ ?>
199
+ <fieldset>
200
+ <?php
201
+
202
+ foreach($module_setting['options'] as $option_value => $option_title)
203
+ {
204
+ ?><label><input type="radio" class="<?php echo $class ?>" <?php checked($value, $option_value) ?> value="<?php echo $option_value ?>" name="<?php echo $module_setting['id'] ?>"> <span><?php echo $option_title ?></span></label><?php
205
+ }
206
+
207
+ ?>
208
+ </fieldset>
209
+ <?php
210
+
211
+ break;
212
+ }
213
+
214
+ ?>
215
+ </td>
216
+ </tr>
217
+ </tbody>
218
+ </table>
219
+ </div>
220
+
221
+ <?php
222
+
223
+ }
224
+
225
+
226
+ function _generate_interface_tabs()
227
+ {
228
+
229
+ ?>
230
+ <h2 class="nav-tab-wrapper">
231
+ <?php
232
+
233
+ //output all module components as tabs
234
+ foreach($this->module->components as $module_component)
235
+ {
236
+ if( ! $module_component->title)
237
+ continue;
238
+
239
+ $class = '';
240
+ if($module_component->id == $this->tab_slug)
241
+ $class = 'nav-tab-active';
242
+
243
+ ?>
244
+ <a href="<?php echo admin_url( 'admin.php?page=' . $this->screen_slug . '&component=' . $module_component->id); ?>" class="nav-tab <?php echo $class ?>"><?php echo $module_component->title ?></a>
245
+ <?php
246
+ }
247
+
248
+ ?>
249
+ </h2>
250
+
251
+ <?php
252
+
253
+ }
254
  }
255
 
256
 
include/functions.class.php CHANGED
@@ -87,14 +87,31 @@
87
  if(empty($screen_slug))
88
  return FALSE;
89
 
 
 
90
  $module = $this->get_module_by_slug($screen_slug);
91
  if(!is_object($module))
92
  return FALSE;
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  global $wph;
95
 
96
  //proces the fields
97
- $module_settings = $this->filter_settings( $module->get_module_settings() );
98
 
99
  foreach($module_settings as $module_setting)
100
  {
@@ -119,7 +136,7 @@
119
  $this->update_settings($wph->settings);
120
 
121
  //trigger the settings changed action
122
- do_action('wph/settings_changed');
123
 
124
  //redirect
125
  $new_admin_url = $this->get_module_item_setting('admin_url' , 'admin');
@@ -128,6 +145,9 @@
128
  else
129
  $new_location = trailingslashit( site_url() ) . "wp-admin/admin.php?page=" . $screen_slug;
130
 
 
 
 
131
  $new_location .= '&settings_updated=true';
132
 
133
  wp_redirect($new_location);
@@ -159,7 +179,10 @@
159
  return $found_module;
160
  }
161
 
162
-
 
 
 
163
  function is_permalink_enabled()
164
  {
165
 
@@ -172,7 +195,11 @@
172
 
173
  }
174
 
175
-
 
 
 
 
176
  function is_theme_customize()
177
  {
178
 
@@ -899,6 +926,119 @@
899
  }
900
  }
901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
902
  }
903
 
904
  ?>
87
  if(empty($screen_slug))
88
  return FALSE;
89
 
90
+ $tab_slug = isset($_GET['component']) ? $_GET['component'] : FALSE;
91
+
92
  $module = $this->get_module_by_slug($screen_slug);
93
  if(!is_object($module))
94
  return FALSE;
95
 
96
+ //if no tag slug check if module use tabs and use the very first one
97
+ if(empty($tab_slug) && $module->use_tabs === TRUE)
98
+ {
99
+ //get the first component
100
+ foreach($module->components as $module_component)
101
+ {
102
+ if( ! $module_component->title)
103
+ continue;
104
+
105
+ $tab_slug = $module_component->id;
106
+ break;
107
+ }
108
+
109
+ }
110
+
111
  global $wph;
112
 
113
  //proces the fields
114
+ $module_settings = $this->filter_settings( $module->get_module_settings($tab_slug) );
115
 
116
  foreach($module_settings as $module_setting)
117
  {
136
  $this->update_settings($wph->settings);
137
 
138
  //trigger the settings changed action
139
+ do_action('wph/settings_changed', $screen_slug, $tab_slug);
140
 
141
  //redirect
142
  $new_admin_url = $this->get_module_item_setting('admin_url' , 'admin');
145
  else
146
  $new_location = trailingslashit( site_url() ) . "wp-admin/admin.php?page=" . $screen_slug;
147
 
148
+ if($tab_slug !== FALSE)
149
+ $new_location .= '&component=' . $tab_slug;
150
+
151
  $new_location .= '&settings_updated=true';
152
 
153
  wp_redirect($new_location);
179
  return $found_module;
180
  }
181
 
182
+ /**
183
+ * Used on early access when WP_Rewrite is not available
184
+ *
185
+ */
186
  function is_permalink_enabled()
187
  {
188
 
195
 
196
  }
197
 
198
+ /**
199
+ *
200
+ * Check if theme is is customize mode
201
+ *
202
+ */
203
  function is_theme_customize()
204
  {
205
 
926
  }
927
  }
928
 
929
+
930
+ /**
931
+ * Check the plugins directory and retrieve all plugin files with plugin data.
932
+ *
933
+ * WordPress only supports plugin files in the base plugins directory
934
+ * (wp-content/plugins) and in one directory above the plugins directory
935
+ * (wp-content/plugins/my-plugin). The file it looks for has the plugin data
936
+ * and must be found in those two locations. It is recommended to keep your
937
+ * plugin files in their own directories.
938
+ *
939
+ * The file with the plugin data is the file that will be included and therefore
940
+ * needs to have the main execution for the plugin. This does not mean
941
+ * everything must be contained in the file and it is recommended that the file
942
+ * be split for maintainability. Keep everything in one file for extreme
943
+ * optimization purposes.
944
+ *
945
+ * @since 1.5.0
946
+ *
947
+ * @param string $plugin_folder Optional. Relative path to single plugin folder.
948
+ * @return array Key is the plugin file path and the value is an array of the plugin data.
949
+ */
950
+ function get_plugins($plugin_folder = '')
951
+ {
952
+
953
+ $wp_plugins = array ();
954
+ $plugin_root = WP_PLUGIN_DIR;
955
+ if ( !empty($plugin_folder) )
956
+ $plugin_root .= $plugin_folder;
957
+
958
+ // Files in wp-content/plugins directory
959
+ $plugins_dir = @ opendir( $plugin_root);
960
+ $plugin_files = array();
961
+ if ( $plugins_dir ) {
962
+ while (($file = readdir( $plugins_dir ) ) !== false ) {
963
+ if ( substr($file, 0, 1) == '.' )
964
+ continue;
965
+ if ( is_dir( $plugin_root.'/'.$file ) ) {
966
+ $plugins_subdir = @ opendir( $plugin_root.'/'.$file );
967
+ if ( $plugins_subdir ) {
968
+ while (($subfile = readdir( $plugins_subdir ) ) !== false ) {
969
+ if ( substr($subfile, 0, 1) == '.' )
970
+ continue;
971
+ if ( substr($subfile, -4) == '.php' )
972
+ $plugin_files[] = "$file/$subfile";
973
+ }
974
+ closedir( $plugins_subdir );
975
+ }
976
+ } else {
977
+ if ( substr($file, -4) == '.php' )
978
+ $plugin_files[] = $file;
979
+ }
980
+ }
981
+ closedir( $plugins_dir );
982
+ }
983
+
984
+ if ( empty($plugin_files) )
985
+ return $wp_plugins;
986
+
987
+ foreach ( $plugin_files as $plugin_file ) {
988
+ if ( !is_readable( "$plugin_root/$plugin_file" ) )
989
+ continue;
990
+
991
+ $plugin_data = $this->get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached.
992
+
993
+ if ( empty ( $plugin_data['Name'] ) )
994
+ continue;
995
+
996
+ $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data;
997
+ }
998
+
999
+ return $wp_plugins;
1000
+ }
1001
+
1002
+
1003
+ function get_plugin_data( $plugin_file, $markup = true, $translate = true )
1004
+ {
1005
+
1006
+ $default_headers = array(
1007
+ 'Name' => 'Plugin Name',
1008
+ 'PluginURI' => 'Plugin URI',
1009
+ 'Version' => 'Version',
1010
+ 'Description' => 'Description',
1011
+ 'Author' => 'Author',
1012
+ 'AuthorURI' => 'Author URI',
1013
+ 'TextDomain' => 'Text Domain',
1014
+ 'DomainPath' => 'Domain Path',
1015
+ 'Network' => 'Network',
1016
+ // Site Wide Only is deprecated in favor of Network.
1017
+ '_sitewide' => 'Site Wide Only',
1018
+ );
1019
+
1020
+ $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' );
1021
+
1022
+ // Site Wide Only is the old header for Network
1023
+ if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
1024
+ /* translators: 1: Site Wide Only: true, 2: Network: true */
1025
+ _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), '<code>Site Wide Only: true</code>', '<code>Network: true</code>' ) );
1026
+ $plugin_data['Network'] = $plugin_data['_sitewide'];
1027
+ }
1028
+ $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
1029
+ unset( $plugin_data['_sitewide'] );
1030
+
1031
+ if ( $markup || $translate ) {
1032
+ $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
1033
+ } else {
1034
+ $plugin_data['Title'] = $plugin_data['Name'];
1035
+ $plugin_data['AuthorName'] = $plugin_data['Author'];
1036
+ }
1037
+
1038
+ return $plugin_data;
1039
+ }
1040
+
1041
+
1042
  }
1043
 
1044
  ?>
include/module.class.php CHANGED
@@ -7,9 +7,13 @@
7
 
8
  var $functions;
9
  var $wph;
 
 
10
 
11
  function __construct()
12
  {
 
 
13
  $this->functions = new WPH_functions();
14
 
15
  global $wph;
@@ -28,18 +32,30 @@
28
 
29
  }
30
 
 
 
 
 
 
 
 
 
 
31
 
32
  /**
33
  * Return module components settings
34
  *
35
  */
36
- function get_module_settings()
37
  {
38
 
39
  $module_settings = array();
40
 
41
  foreach($this->components as $module_component)
42
  {
 
 
 
43
  if(count($module_settings) > 0)
44
  {
45
  //add a split for interface
7
 
8
  var $functions;
9
  var $wph;
10
+
11
+ var $use_tabs;
12
 
13
  function __construct()
14
  {
15
+ $this->use_tabs = $this->use_tabs();
16
+
17
  $this->functions = new WPH_functions();
18
 
19
  global $wph;
32
 
33
  }
34
 
35
+ /**
36
+ * Indicate if this module use a tabs to output included components
37
+ *
38
+ */
39
+ function use_tabs()
40
+ {
41
+
42
+ return FALSE;
43
+ }
44
 
45
  /**
46
  * Return module components settings
47
  *
48
  */
49
+ function get_module_settings($module_id = FALSE)
50
  {
51
 
52
  $module_settings = array();
53
 
54
  foreach($this->components as $module_component)
55
  {
56
+ if(!empty($module_id) && $module_component->id !== FALSE && $module_component->id != $module_id)
57
+ continue;
58
+
59
  if(count($module_settings) > 0)
60
  {
61
  //add a split for interface
include/module.component.class.php CHANGED
@@ -5,15 +5,35 @@
5
  {
6
  var $wph;
7
  var $module_settings;
 
 
8
 
9
  function __construct()
10
  {
 
 
 
11
  global $wph;
12
 
13
  $this->wph = $wph;
14
 
15
  $this->module_settings = $this->get_module_settings();
16
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
 
19
  function get_module_settings()
5
  {
6
  var $wph;
7
  var $module_settings;
8
+
9
+ var $title;
10
 
11
  function __construct()
12
  {
13
+ $this->id = $this->get_component_id();
14
+ $this->title = $this->get_component_title();
15
+
16
  global $wph;
17
 
18
  $this->wph = $wph;
19
 
20
  $this->module_settings = $this->get_module_settings();
21
  }
22
+
23
+ function get_component_id()
24
+ {
25
+ if($this->get_component_title() === FALSE)
26
+ return FALSE;
27
+
28
+ return sanitize_title($this->get_component_title());
29
+
30
+ }
31
+
32
+ function get_component_title()
33
+ {
34
+
35
+ return FALSE;
36
+ }
37
 
38
 
39
  function get_module_settings()
include/wph.class.php CHANGED
@@ -86,7 +86,8 @@
86
 
87
  $this->is_initialised = TRUE;
88
  }
89
-
 
90
  function _load_modules()
91
  {
92
  $module_files = glob(WPH_PATH . "/modules/module-*.php");
@@ -241,7 +242,7 @@
241
  //replace the urls
242
  $buffer = $this->functions->text_urls_replacement($buffer, $this->urls_replacement);
243
 
244
- $buffer = apply_filters( 'wph/ob_start_callback', $buffer );
245
 
246
  return $buffer;
247
 
@@ -277,7 +278,7 @@
277
 
278
 
279
 
280
- $active_plugins = get_site_option( 'active_sitewide_plugins', array() );
281
 
282
  return;
283
  }
@@ -373,7 +374,12 @@
373
  $_callback = '_callback_saved_' . $field_id;
374
 
375
  if (method_exists($_class_instance, $_callback) && is_callable(array($_class_instance, $_callback)))
376
- $processing_data[] = call_user_func(array($_class_instance, $_callback), $saved_field_value);
 
 
 
 
 
377
 
378
  }
379
  }
@@ -397,13 +403,13 @@
397
 
398
  if(count($_htaccess_data) > 0)
399
  {
400
- $new_rules = "RewriteRule ^index\.php$ - [L]";
401
  foreach($_htaccess_data as $_htaccess_data_line)
402
  {
403
  $new_rules .= "\n" . $_htaccess_data_line;
404
  }
405
 
406
- $new_rules .= "\n";
407
 
408
  $new_rules = apply_filters('wp-hide/mod_rewrite_rules', $new_rules);
409
 
@@ -506,6 +512,9 @@
506
  function permalink_change_redirect()
507
  {
508
  $screen = get_current_screen();
 
 
 
509
 
510
  if($screen->base != "options-permalink" || !isset($_GET['settings-updated']))
511
  return;
86
 
87
  $this->is_initialised = TRUE;
88
  }
89
+
90
+
91
  function _load_modules()
92
  {
93
  $module_files = glob(WPH_PATH . "/modules/module-*.php");
242
  //replace the urls
243
  $buffer = $this->functions->text_urls_replacement($buffer, $this->urls_replacement);
244
 
245
+ $buffer = apply_filters( 'wph/ob_start_callback', $buffer );
246
 
247
  return $buffer;
248
 
278
 
279
 
280
 
281
+ //$active_plugins = get_site_option( 'active_sitewide_plugins', array() );
282
 
283
  return;
284
  }
374
  $_callback = '_callback_saved_' . $field_id;
375
 
376
  if (method_exists($_class_instance, $_callback) && is_callable(array($_class_instance, $_callback)))
377
+ {
378
+ $module_mod_rewrite_rules = call_user_func(array($_class_instance, $_callback), $saved_field_value);
379
+ $module_mod_rewrite_rules = apply_filters('wp-hide/module_mod_rewrite_rules', $module_mod_rewrite_rules, $_class_instance);
380
+
381
+ $processing_data[] = $module_mod_rewrite_rules;
382
+ }
383
 
384
  }
385
  }
403
 
404
  if(count($_htaccess_data) > 0)
405
  {
406
+ $new_rules = "RewriteRule ^index\.php$ - [L] \n\n#START - WP Hide & Security Enhancer";
407
  foreach($_htaccess_data as $_htaccess_data_line)
408
  {
409
  $new_rules .= "\n" . $_htaccess_data_line;
410
  }
411
 
412
+ $new_rules .= "\n#END - WP Hide & Security Enhancer\n";
413
 
414
  $new_rules = apply_filters('wp-hide/mod_rewrite_rules', $new_rules);
415
 
512
  function permalink_change_redirect()
513
  {
514
  $screen = get_current_screen();
515
+
516
+ if(empty($screen))
517
+ return;
518
 
519
  if($screen->base != "options-permalink" || !isset($_GET['settings-updated']))
520
  return;
modules/components/admin-admin_url.php CHANGED
@@ -8,8 +8,11 @@
8
  $this->module_settings[] = array(
9
  'id' => 'admin_url',
10
  'label' => 'New Admin Url',
11
- 'description' => __('Create a new admin url instead default /wp-admin and /login.', 'wp-hide-security-enhancer'),
12
-
 
 
 
13
  'input_type' => 'text',
14
 
15
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
@@ -21,9 +24,7 @@
21
  'id' => 'block_default_admin_url',
22
  'label' => 'Block default Admin Url',
23
  'description' => array(
24
- __('Block default admin url and files from being accesible.', 'wp-hide-security-enhancer'),
25
- '<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('Write down your new admin url, or if lost, will not be able to log-in.', 'wp-hide-security-enhancer') . " " . __('An e-mail will be sent to', 'wp-hide-security-enhancer') . " " . get_option('admin_email') . " " . __('with the new Login URL', 'wp-hide-security-enhancer') . '</span></div>',
26
- '<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('If unable to access the login / admin section anymore, use the Recovery Link which reset links to default: ', 'wp-hide-security-enhancer') . '<br /><b class="pointer">' . site_url() . '?wph-recovery='. $this->wph->functions->get_recovery_code() .'</b></div>'
27
  ),
28
  'input_type' => 'radio',
29
  'options' => array(
8
  $this->module_settings[] = array(
9
  'id' => 'admin_url',
10
  'label' => 'New Admin Url',
11
+ 'description' => array(
12
+ __('Create a new admin url instead default /wp-admin and /login.', 'wp-hide-security-enhancer'),
13
+ '<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('Write down your new admin url, or if lost, will not be able to log-in.', 'wp-hide-security-enhancer') . " " . __('An e-mail will be sent to', 'wp-hide-security-enhancer') . " " . get_option('admin_email') . " " . __('with the new Login URL', 'wp-hide-security-enhancer') . '</span></div>',
14
+ '<div class="notice-error"><div class="dashicons dashicons-warning important" alt="f534">warning</div> <span class="important">' . __('If unable to access the login / admin section anymore, use the Recovery Link which reset links to default: ', 'wp-hide-security-enhancer') . '<br /><b class="pointer">' . site_url() . '?wph-recovery='. $this->wph->functions->get_recovery_code() .'</b></div>'
15
+ ),
16
  'input_type' => 'text',
17
 
18
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
24
  'id' => 'block_default_admin_url',
25
  'label' => 'Block default Admin Url',
26
  'description' => array(
27
+ __('Block default admin url and files from being accesible.', 'wp-hide-security-enhancer')
 
 
28
  ),
29
  'input_type' => 'radio',
30
  'options' => array(
modules/components/general-meta.php CHANGED
@@ -201,11 +201,21 @@
201
  if(empty($saved_field_data) || $saved_field_data == 'no')
202
  return FALSE;
203
 
204
- remove_action('wp_head', 'rel_canonical');
 
 
 
205
 
206
  //make sure is removed if placed by other plugins
207
  add_filter('wph/ob_start_callback', array($this, 'remove_canonical_tag'));
208
  }
 
 
 
 
 
 
 
209
 
210
 
211
  function remove_canonical_tag($html)
201
  if(empty($saved_field_data) || $saved_field_data == 'no')
202
  return FALSE;
203
 
204
+ remove_action( 'wp_head', 'rel_canonical');
205
+
206
+ //use the earlier possible action to remove the admin canonical url
207
+ add_action( 'auth_redirect', array(&$this, 'remove_wp_admin_canonical_url'));
208
 
209
  //make sure is removed if placed by other plugins
210
  add_filter('wph/ob_start_callback', array($this, 'remove_canonical_tag'));
211
  }
212
+
213
+ function remove_wp_admin_canonical_url()
214
+ {
215
+
216
+ remove_action( 'admin_head', 'wp_admin_canonical_url' );
217
+
218
+ }
219
 
220
 
221
  function remove_canonical_tag($html)
modules/components/rewrite-default.php CHANGED
@@ -2,6 +2,12 @@
2
 
3
  class WPH_module_rewrite_default extends WPH_module_component
4
  {
 
 
 
 
 
 
5
 
6
  function get_module_settings()
7
  {
@@ -19,7 +25,8 @@
19
  function _callback_saved_rewrite_default($saved_field_data)
20
  {
21
  $processing_response = array();
22
-
 
23
  $processing_response['htaccess'] = "\nRewriteCond %{REQUEST_URI} /+[^\.]+$\n"
24
  . "RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]";
25
 
2
 
3
  class WPH_module_rewrite_default extends WPH_module_component
4
  {
5
+
6
+ function get_component_id()
7
+ {
8
+ return '_rewrite_default_';
9
+
10
+ }
11
 
12
  function get_module_settings()
13
  {
25
  function _callback_saved_rewrite_default($saved_field_data)
26
  {
27
  $processing_response = array();
28
+
29
+ //redirect any link without a slash
30
  $processing_response['htaccess'] = "\nRewriteCond %{REQUEST_URI} /+[^\.]+$\n"
31
  . "RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]";
32
 
modules/components/rewrite-new_include_path.php CHANGED
@@ -3,15 +3,20 @@
3
  class WPH_module_rewrite_new_include_path extends WPH_module_component
4
  {
5
 
 
 
 
 
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
9
  'id' => 'new_include_path',
10
- 'label' => __('New Include Path', 'wp-hide-security-enhancer'),
11
  'description' => __('The default theme path is set to', 'wp-hide-security-enhancer') . ' <strong>wp-include</strong>
12
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
13
 
14
- 'value_description' => __('e.g. my_include', 'wp-hide-security-enhancer'),
15
  'input_type' => 'text',
16
 
17
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
@@ -19,8 +24,8 @@
19
  );
20
  $this->module_settings[] = array(
21
  'id' => 'block_wpinclude_url',
22
- 'label' => 'Block wp-include URL',
23
- 'description' => 'Block wp-include files from being accesible through default urls. <br />Apply only if <b>New Include Path</b> is not empty. It block only for non loged-in users.',
24
 
25
  'input_type' => 'radio',
26
  'options' => array(
3
  class WPH_module_rewrite_new_include_path extends WPH_module_component
4
  {
5
 
6
+ function get_component_title()
7
+ {
8
+ return "WP includes";
9
+ }
10
+
11
  function get_module_settings()
12
  {
13
  $this->module_settings[] = array(
14
  'id' => 'new_include_path',
15
+ 'label' => __('New Includes Path', 'wp-hide-security-enhancer'),
16
  'description' => __('The default theme path is set to', 'wp-hide-security-enhancer') . ' <strong>wp-include</strong>
17
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
18
 
19
+ 'value_description' => __('e.g. my_includes', 'wp-hide-security-enhancer'),
20
  'input_type' => 'text',
21
 
22
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
24
  );
25
  $this->module_settings[] = array(
26
  'id' => 'block_wpinclude_url',
27
+ 'label' => 'Block wp-includes URL',
28
+ 'description' => 'Block wp-includes files from being accesible through default urls. <br />Apply only if <b>New Includes Path</b> is not empty. It block only for non loged-in users.',
29
 
30
  'input_type' => 'radio',
31
  'options' => array(
modules/components/rewrite-new_plugin_path.php CHANGED
@@ -2,16 +2,21 @@
2
 
3
  class WPH_module_rewrite_new_plugin_path extends WPH_module_component
4
  {
 
 
 
 
 
5
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
9
  'id' => 'new_plugin_path',
10
- 'label' => __('New Plugin Path', 'wp-hide-security-enhancer'),
11
- 'description' => __('The default theme path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['plugins_url']) .'</strong>
12
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
13
 
14
- 'value_description' => 'e.g. my_plugin',
15
  'input_type' => 'text',
16
 
17
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
@@ -34,6 +39,32 @@
34
  'processing_order' => 30
35
 
36
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  return $this->module_settings;
39
  }
@@ -45,11 +76,62 @@
45
  if(empty($saved_field_data))
46
  return FALSE;
47
 
 
 
48
  //add default plugin path replacement
49
  $new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
50
  $new_plugin_path = trailingslashit( site_url() ) . untrailingslashit( $new_plugin_path );
51
  $this->wph->urls_replacement[WP_PLUGIN_URL] = $new_plugin_path;
52
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
  function _callback_saved_new_plugin_path($saved_field_data)
55
  {
@@ -66,7 +148,35 @@
66
  $path = trailingslashit($this->wph->default_variables['wordpress_directory']);
67
  $path .= trailingslashit( $saved_field_data );
68
 
69
- $processing_response['htaccess'] = "\nRewriteRule ^" . trailingslashit( $path ) . '(.*) '. $plugin_path .'$1 [L,QSA]';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
  return $processing_response;
72
  }
2
 
3
  class WPH_module_rewrite_new_plugin_path extends WPH_module_component
4
  {
5
+
6
+ function get_component_title()
7
+ {
8
+ return "Plugins";
9
+ }
10
 
11
  function get_module_settings()
12
  {
13
  $this->module_settings[] = array(
14
  'id' => 'new_plugin_path',
15
+ 'label' => __('New Plugins Path', 'wp-hide-security-enhancer'),
16
+ 'description' => __('The default plugins path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['plugins_url']) .'</strong>
17
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
18
 
19
+ 'value_description' => 'e.g. my_plugins',
20
  'input_type' => 'text',
21
 
22
  'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
39
  'processing_order' => 30
40
 
41
  );
42
+
43
+ $all_plugins = $this->wph->functions->get_plugins();
44
+
45
+ //get active plugins
46
+ $active_plugins = (array) get_option( 'active_plugins', array() );
47
+ foreach($active_plugins as $active_plugin)
48
+ {
49
+ //exclude this plugin
50
+ if('wp-hide-security-enhancer/wp-hide.php' == $active_plugin)
51
+ continue;
52
+
53
+ $plugin_slug = sanitize_title($active_plugin);
54
+
55
+ $pluding_data = $all_plugins[$active_plugin];
56
+
57
+ $this->module_settings[] = array(
58
+ 'id' => 'new_plugin_path_' . $plugin_slug,
59
+ 'label' => __('New Path for', 'wp-hide-security-enhancer') . " <i>" . $pluding_data['Name'] ."</i> ". __('plugin', 'wp-hide-security-enhancer'),
60
+ 'description' => __('This setting overwrite the', 'wp-hide-security-enhancer') . ' ' . __('New Plugin Path', 'wp-hide-security-enhancer') . ' ' . __('setting for this plugin, if set.', 'wp-hide-security-enhancer'),
61
+ 'value_description' => 'e.g. my_plugins/module',
62
+ 'input_type' => 'text',
63
+
64
+ 'sanitize_type' => array(array($this->wph->functions, 'sanitize_file_path_name')),
65
+ );
66
+
67
+ }
68
 
69
  return $this->module_settings;
70
  }
76
  if(empty($saved_field_data))
77
  return FALSE;
78
 
79
+ add_filter('plugins_url', array( $this, 'plugins_url' ), 10, 3);
80
+
81
  //add default plugin path replacement
82
  $new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
83
  $new_plugin_path = trailingslashit( site_url() ) . untrailingslashit( $new_plugin_path );
84
  $this->wph->urls_replacement[WP_PLUGIN_URL] = $new_plugin_path;
85
  }
86
+
87
+ function plugins_url($url, $path, $plugin)
88
+ {
89
+
90
+ if(empty($plugin))
91
+ return $url;
92
+
93
+ $strip_url = str_replace(WP_PLUGIN_URL, "", $url);
94
+ $strip_url = str_replace($path, "", $strip_url);
95
+ $strip_url = $this->wph->functions->untrailingslashit_all( $strip_url );
96
+
97
+ $new_url = $url;
98
+
99
+ //get active plugins
100
+ $active_plugins = (array) get_option( 'active_plugins', array() );
101
+ foreach($active_plugins as $active_plugin)
102
+ {
103
+ $active_plugin_split = explode('/', $active_plugin);
104
+ $active_plugin_directory = $active_plugin_split[0];
105
+
106
+ if($active_plugin_directory != $strip_url)
107
+ continue;
108
+
109
+ $plugin_slug = sanitize_title($active_plugin);
110
+ $option_namespace = 'new_plugin_path_' . $plugin_slug;
111
+
112
+ //check if plugin have custom url
113
+ $plugin_custom_path = $this->wph->functions->get_module_item_setting($option_namespace);
114
+ if(empty($plugin_custom_path))
115
+ continue;
116
+
117
+ //add custom path
118
+ $new_url = trailingslashit( site_url() ) . $plugin_custom_path;
119
+ if(!empty($path))
120
+ $new_url = trailingslashit( $new_url ) . $path;
121
+
122
+ //add replacement
123
+ $new_plugin_path = $this->wph->functions->untrailingslashit_all( $this->wph->functions->get_module_item_setting('new_plugin_path') );
124
+ $replace_url = trailingslashit( site_url() ) . trailingslashit( $new_plugin_path ) . $active_plugin_directory;
125
+ $replacement_url = trailingslashit( site_url() ) . $plugin_custom_path;
126
+ $this->wph->urls_replacement[$replace_url] = $replacement_url;
127
+
128
+ break;
129
+ }
130
+
131
+ return $new_url;
132
+
133
+
134
+ }
135
 
136
  function _callback_saved_new_plugin_path($saved_field_data)
137
  {
148
  $path = trailingslashit($this->wph->default_variables['wordpress_directory']);
149
  $path .= trailingslashit( $saved_field_data );
150
 
151
+ $htaccess = "\nRewriteRule ^" . trailingslashit( $path ) . '(.*) '. $plugin_path .'$1 [L,QSA]';
152
+
153
+ //add custom rewrite for plugins
154
+ //get active plugins
155
+ $active_plugins = (array) get_option( 'active_plugins', array() );
156
+ foreach($active_plugins as $active_plugin)
157
+ {
158
+ $active_plugin_split = explode('/', $active_plugin);
159
+ $active_plugin_directory = $active_plugin_split[0];
160
+
161
+ $plugin_slug = sanitize_title($active_plugin);
162
+ $option_namespace = 'new_plugin_path_' . $plugin_slug;
163
+
164
+ //check if plugin have custom url
165
+ $plugin_custom_path = $this->wph->functions->get_module_item_setting($option_namespace);
166
+ if(empty($plugin_custom_path))
167
+ continue;
168
+
169
+ //add custom path
170
+ $new_url = trailingslashit( site_url() ) . $plugin_custom_path;
171
+ if(!empty($path))
172
+ $new_url = trailingslashit( $new_url ) . $path;
173
+
174
+
175
+ $htaccess .= "\nRewriteRule ^" . trailingslashit( $plugin_custom_path ) . '(.*) '. trailingslashit($plugin_path) . trailingslashit($active_plugin_directory) .'$1 [L,QSA]';
176
+
177
+ }
178
+
179
+ $processing_response['htaccess'] = $htaccess;
180
 
181
  return $processing_response;
182
  }
modules/components/rewrite-new_theme_path.php CHANGED
@@ -2,7 +2,13 @@
2
 
3
  class WPH_module_rewrite_new_theme_path extends WPH_module_component
4
  {
5
-
 
 
 
 
 
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
2
 
3
  class WPH_module_rewrite_new_theme_path extends WPH_module_component
4
  {
5
+
6
+ function get_component_title()
7
+ {
8
+ return "Theme";
9
+ }
10
+
11
+
12
  function get_module_settings()
13
  {
14
  $this->module_settings[] = array(
modules/components/rewrite-new_upload_path.php CHANGED
@@ -2,13 +2,18 @@
2
 
3
  class WPH_module_rewrite_new_upload_path extends WPH_module_component
4
  {
 
 
 
 
 
5
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
9
  'id' => 'new_upload_path',
10
- 'label' => __('New Upload Path', 'wp-hide-security-enhancer'),
11
- 'description' => __('The default upload path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['upload_url']) .'</strong>
12
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
13
 
14
  'value_description' => __('e.g. my_uploads', 'wp-hide-security-enhancer'),
@@ -20,7 +25,7 @@
20
 
21
  $this->module_settings[] = array(
22
  'id' => 'block_upload_url',
23
- 'label' => __('Block upload URL', 'wp-hide-security-enhancer'),
24
  'description' => __('Block upload files from being accesible through default urls.', 'wp-hide-security-enhancer') . ' <br />'.__('If set to Yes, all new images inserted into posts will use the new Upload Url, as old url become blocked. Using the No, new images inesrted will use old url, which however are being updated on front side. This may be helpfull on plugin disable, so image urls can be accessible as before.', 'wp-hide-security-enhancer').'<br />'. __('Apply only if', 'wp-hide-security-enhancer') .' <b>New Upload Path</b> '.__('is not empty.', 'wp-hide-security-enhancer'),
25
 
26
  'input_type' => 'radio',
2
 
3
  class WPH_module_rewrite_new_upload_path extends WPH_module_component
4
  {
5
+
6
+ function get_component_title()
7
+ {
8
+ return "Uploads";
9
+ }
10
 
11
  function get_module_settings()
12
  {
13
  $this->module_settings[] = array(
14
  'id' => 'new_upload_path',
15
+ 'label' => __('New Uploads Path', 'wp-hide-security-enhancer'),
16
+ 'description' => __('The default uploads path is set to', 'wp-hide-security-enhancer') . ' <strong>'. str_replace(get_bloginfo('wpurl'), '' ,$this->wph->default_variables['upload_url']) .'</strong>
17
  '. __('More details can be found at', 'wp-hide-security-enhancer') .' <a href="http://www.nsp-code.com" target="_blank">Link</a>',
18
 
19
  'value_description' => __('e.g. my_uploads', 'wp-hide-security-enhancer'),
25
 
26
  $this->module_settings[] = array(
27
  'id' => 'block_upload_url',
28
+ 'label' => __('Block uploads URL', 'wp-hide-security-enhancer'),
29
  'description' => __('Block upload files from being accesible through default urls.', 'wp-hide-security-enhancer') . ' <br />'.__('If set to Yes, all new images inserted into posts will use the new Upload Url, as old url become blocked. Using the No, new images inesrted will use old url, which however are being updated on front side. This may be helpfull on plugin disable, so image urls can be accessible as before.', 'wp-hide-security-enhancer').'<br />'. __('Apply only if', 'wp-hide-security-enhancer') .' <b>New Upload Path</b> '.__('is not empty.', 'wp-hide-security-enhancer'),
30
 
31
  'input_type' => 'radio',
modules/components/rewrite-new_xml-rpc-path.php CHANGED
@@ -2,7 +2,12 @@
2
 
3
  class WPH_module_rewrite_new_xml_rpc_path extends WPH_module_component
4
  {
5
-
 
 
 
 
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
2
 
3
  class WPH_module_rewrite_new_xml_rpc_path extends WPH_module_component
4
  {
5
+
6
+ function get_component_title()
7
+ {
8
+ return "XML-RPC";
9
+ }
10
+
11
  function get_module_settings()
12
  {
13
  $this->module_settings[] = array(
modules/components/rewrite-wp_content_path.php CHANGED
@@ -2,7 +2,11 @@
2
 
3
  class WPH_module_rewrite_wp_content_path extends WPH_module_component
4
  {
5
-
 
 
 
 
6
  function get_module_settings()
7
  {
8
  $this->module_settings[] = array(
2
 
3
  class WPH_module_rewrite_wp_content_path extends WPH_module_component
4
  {
5
+ function get_component_title()
6
+ {
7
+ return "WP content";
8
+ }
9
+
10
  function get_module_settings()
11
  {
12
  $this->module_settings[] = array(
modules/module-rewrite.php CHANGED
@@ -35,6 +35,12 @@
35
 
36
  }
37
 
 
 
 
 
 
 
38
  function get_module_id()
39
  {
40
  return 'rewrite';
@@ -62,7 +68,7 @@
62
 
63
  $interface_data['title'] = __('WP Hide & Security Enhancer', 'wp-hide-security-enhancer') . ' - ' . __('Rewrite', 'wp-hide-security-enhancer');
64
  $interface_data['description'] = '';
65
- $interface_data['handle_title'] = '<span class="icon settings">&nbsp;</span><span>'. __('Rewrite Settings', 'wp-hide-security-enhancer') .'</span>';
66
 
67
  return $interface_data;
68
  }
35
 
36
  }
37
 
38
+ function use_tabs()
39
+ {
40
+
41
+ return TRUE;
42
+ }
43
+
44
  function get_module_id()
45
  {
46
  return 'rewrite';
68
 
69
  $interface_data['title'] = __('WP Hide & Security Enhancer', 'wp-hide-security-enhancer') . ' - ' . __('Rewrite', 'wp-hide-security-enhancer');
70
  $interface_data['description'] = '';
71
+ $interface_data['handle_title'] = '';
72
 
73
  return $interface_data;
74
  }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.nsp-code.com/donate.php
4
  Tags: hide, security, improve security, hacking, wp hide, wordpress hide
5
  Requires at least: 2.8
6
  Tested up to: 4.4.2
7
- Stable tag: 1.1.7
8
 
9
  Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
10
 
@@ -16,9 +16,11 @@ Being the best content management system, widely used, WordPress is susceptible
16
  Statistics reveal that every day new vulnerabilities are discovered, many affecting hundreds of thousands of WordPress websites.
17
  Over 99,9% of hacked WordPress websites are target of automated malware scripts, who search for certain WordPress fingerprints. This plugin hide or replace those traces, making the hacking boots attacks useless.
18
 
 
 
19
  **Main plugin functionality:**
20
 
21
- * Custom admin Url
22
  * Block default admin Url
23
  * Block any direct folder access to completely hide the structure
24
  * Custom wp-login.php filename
@@ -27,12 +29,13 @@ Over 99,9% of hacked WordPress websites are target of automated malware scripts,
27
  * Block XML-RPC API
28
  * New XML-RPC path
29
  * Adjustable theme url
30
- * New child theme url
31
  * Change theme style file name
32
  * Custom wp-include
33
  * Block default wp-include paths
34
  * Block defalt wp-content
35
- * Custom plugins urls
 
36
  * Block default plugins paths
37
  * New upload url
38
  * Block default upload urls
@@ -43,13 +46,20 @@ Over 99,9% of hacked WordPress websites are target of automated malware scripts,
43
  * Remove wlwmanifest Meta
44
  * Remove rsd_link Meta
45
  * Remove wpemoji
 
46
  and many more.
47
 
 
 
 
 
48
 
49
  <br />Something is wrong with this plugin on your site? Just use the forum or get in touch with us at <a target="_blank" href="http://www.nsp-code.com">Contact</a> and we'll check it out.
50
 
51
  <br />A website example can be found at <a target="_blank" href="http://nsp-code.com/demo/wp-hide/">http://nsp-code.com/demo/wp-hide/</a>
52
 
 
 
53
  <br />
54
  <br />This plugin is developed by <a target="_blank" href="http://www.nsp-code.com">Nsp-Code</a>
55
 
@@ -67,7 +77,7 @@ Feel free to contact us at electronice_delphi@yahoo.com
67
 
68
  * First, stay calm. There will be no harm, guaranteed :)
69
  * Go to admin and change some of plugin options to see which one cause the problem. Then report it to forum or get in touch with us to fix it.
70
- * If you can't login to admin, use the Recovery Link which has been sent to your e-mail. This will reset to default urls.
71
  * If for some reason the site appear broken, you should back-up then replace the .htaccess file located on your WordPress root. Then remove the wp-hide-security-enhancer from your plugin directory.
72
  * If still no luck, please get in touch with us at electronice_delphi@yahoo.com and we'll fix it for you in no time!
73
 
@@ -86,6 +96,13 @@ Please get in touch with us and we'll do our best to include it for a next versi
86
 
87
  == Changelog ==
88
 
 
 
 
 
 
 
 
89
  = 1.1.7 =
90
  * Remove profile link meta tag within head.
91
  * Remove canonical link meta tag within head
@@ -97,8 +114,6 @@ Please get in touch with us and we'll do our best to include it for a next versi
97
  * PO translations update
98
  * TinyMCE emojicons callback fix
99
 
100
-
101
-
102
  = 1.1.2 =
103
  * Add a custom url for login_url filter
104
  * Better description and warning for wp-login.php change
@@ -108,7 +123,6 @@ Please get in touch with us and we'll do our best to include it for a next versi
108
  * wp-content block when not logged-in
109
  * readme update
110
 
111
-
112
  = 1.1 =
113
  * Po / Mo localisation files update
114
  * Update class to process the further structure changes and current components fields name change.
4
  Tags: hide, security, improve security, hacking, wp hide, wordpress hide
5
  Requires at least: 2.8
6
  Tested up to: 4.4.2
7
+ Stable tag: 1.2
8
 
9
  Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
10
 
16
  Statistics reveal that every day new vulnerabilities are discovered, many affecting hundreds of thousands of WordPress websites.
17
  Over 99,9% of hacked WordPress websites are target of automated malware scripts, who search for certain WordPress fingerprints. This plugin hide or replace those traces, making the hacking boots attacks useless.
18
 
19
+ Works fine with custom WordPress directory structure.
20
+
21
  **Main plugin functionality:**
22
 
23
+ * Custom Admin Url
24
  * Block default admin Url
25
  * Block any direct folder access to completely hide the structure
26
  * Custom wp-login.php filename
29
  * Block XML-RPC API
30
  * New XML-RPC path
31
  * Adjustable theme url
32
+ * New child Theme url
33
  * Change theme style file name
34
  * Custom wp-include
35
  * Block default wp-include paths
36
  * Block defalt wp-content
37
+ * Custom plugins urls
38
+ * Individual plugin url change
39
  * Block default plugins paths
40
  * New upload url
41
  * Block default upload urls
46
  * Remove wlwmanifest Meta
47
  * Remove rsd_link Meta
48
  * Remove wpemoji
49
+
50
  and many more.
51
 
52
+ This plugin allow to change default Admin Url's from **wp-login.php** and **wp-admin** to something else. All original links return default theme 404 Not Found page, like nothing exists there. Beside the huge security advantage, this save lots of server processing time by reducing php code and MySQL usage since brute-force attacks trigger wrong urls.
53
+
54
+ **Important:** Compared to all other similar plugins which mainly use redirects, this plugin return a default theme 404 error page for all **block url** functionality, so is not reveal at all the link existence.
55
+ Since version 1.2 Change individual plugin urls which make them unrecognizable, for example change default WooCommerce plugin urls and dependencies from domain.com/wp-content/plugins/woocommerce/ to domain.com/ecommerce/cdn/ or anything customized.
56
 
57
  <br />Something is wrong with this plugin on your site? Just use the forum or get in touch with us at <a target="_blank" href="http://www.nsp-code.com">Contact</a> and we'll check it out.
58
 
59
  <br />A website example can be found at <a target="_blank" href="http://nsp-code.com/demo/wp-hide/">http://nsp-code.com/demo/wp-hide/</a>
60
 
61
+ <br />Plugin homepage at <a target="_blank" href="http://www.wp-hide.com/">WordPress Hide and Security Enhancer</a>
62
+
63
  <br />
64
  <br />This plugin is developed by <a target="_blank" href="http://www.nsp-code.com">Nsp-Code</a>
65
 
77
 
78
  * First, stay calm. There will be no harm, guaranteed :)
79
  * Go to admin and change some of plugin options to see which one cause the problem. Then report it to forum or get in touch with us to fix it.
80
+ * If you can't login to admin, use the Recovery Link which has been sent to your e-mail. This will reset the login to default.
81
  * If for some reason the site appear broken, you should back-up then replace the .htaccess file located on your WordPress root. Then remove the wp-hide-security-enhancer from your plugin directory.
82
  * If still no luck, please get in touch with us at electronice_delphi@yahoo.com and we'll fix it for you in no time!
83
 
96
 
97
  == Changelog ==
98
 
99
+ = 1.2 =
100
+ * New Feature Change individual plugin url path
101
+ * Admin layout improvments
102
+ * Fix for Admin canonical filter remove if remove canonical option set
103
+ * PO translations update
104
+ * Translation
105
+
106
  = 1.1.7 =
107
  * Remove profile link meta tag within head.
108
  * Remove canonical link meta tag within head
114
  * PO translations update
115
  * TinyMCE emojicons callback fix
116
 
 
 
117
  = 1.1.2 =
118
  * Add a custom url for login_url filter
119
  * Better description and warning for wp-login.php change
123
  * wp-content block when not logged-in
124
  * readme update
125
 
 
126
  = 1.1 =
127
  * Po / Mo localisation files update
128
  * Update class to process the further structure changes and current components fields name change.
screenshot-1.png CHANGED
Binary file
wp-hide.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.nsp-code.com
5
  Description: Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
6
  Author: Nsp Code
7
  Author URI: http://www.nsp-code.com
8
- Version: 1.1.7
9
  Text Domain: wp-hide-security-enhancer
10
  Domain Path: /languages/
11
  */
5
  Description: Hide and increase Security for your WordPress website instance using smart techniques. No files are changed on your server.
6
  Author: Nsp Code
7
  Author URI: http://www.nsp-code.com
8
+ Version: 1.2
9
  Text Domain: wp-hide-security-enhancer
10
  Domain Path: /languages/
11
  */