Version Description
(2014-10-14) = * New Feature * Added new Extensions page to allow users to see which extensions they can use to increase the functionality of the plugin * Included licensing mechanism to support premium extensions
-
Improvements
- Updated latest language files for German and Italian translations (also include corrections for some old translations)
-
Bug Fixes
- Fixed a problem with the pruning of WordPress Security Alerts support ticket
- Fixed pagination issue in the Audit Log Viewer when running on WordPress multisite
Download this release
Release Info
Developer | WPWhiteSecurity |
Plugin | WP Security Audit Log |
Version | 1.2.8 |
Comparing to | |
See all releases |
Code changes from version 1.2.7 to 1.2.8
- classes/AbstractView.php +48 -0
- classes/EDD_SL_Plugin_Updater.php +170 -170
- classes/LicenseManager.php +115 -37
- classes/Loggers/Database.php +14 -5
- classes/Settings.php +1 -0
- classes/Views/AuditLog.php +19 -1
- classes/Views/Extensions.php +42 -0
- classes/Views/Help.php +0 -1
- classes/Views/Licensing.php +1 -1
- classes/Views/Sandbox.php +2 -1
- classes/Views/Settings.php +18 -10
- css/install-error.css +41 -41
- css/settings.css +39 -39
- js/auditlog.js +135 -115
- js/common.js +14 -0
- js/nice_r.js +11 -11
- js/settings.js +48 -48
- languages/wp-security-audit-log-de_DE.mo +0 -0
- languages/wp-security-audit-log-it_IT.mo +0 -0
- languages/wp-security-audit-log.pot +197 -84
- readme.txt +31 -6
- wp-security-audit-log.php +29 -5
classes/AbstractView.php
CHANGED
@@ -32,6 +32,54 @@ abstract class WSAL_AbstractView {
|
|
32 |
if(!isset($wp_version))
|
33 |
$wp_version = get_bloginfo('version');
|
34 |
$this->_wpversion = floatval($wp_version);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
32 |
if(!isset($wp_version))
|
33 |
$wp_version = get_bloginfo('version');
|
34 |
$this->_wpversion = floatval($wp_version);
|
35 |
+
|
36 |
+
// handle admin notices
|
37 |
+
add_action('wp_ajax_AjaxDismissNotice', array($this, 'AjaxDismissNotice'));
|
38 |
+
}
|
39 |
+
|
40 |
+
public static $AllowedNoticeNames = array();
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Dismiss an admin notice through ajax.
|
44 |
+
* @internal
|
45 |
+
*/
|
46 |
+
public function AjaxDismissNotice(){
|
47 |
+
if(!$this->_plugin->settings->CurrentUserCan('view'))
|
48 |
+
die('Access Denied.');
|
49 |
+
|
50 |
+
if(!isset($_REQUEST['notice']))
|
51 |
+
die('Notice name expected as "notice" parameter.');
|
52 |
+
|
53 |
+
$this->DismissNotice($_REQUEST['notice']);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @param string $name Name of notice.
|
58 |
+
* @return boolean Whether notice got dismissed or not.
|
59 |
+
*/
|
60 |
+
public function IsNoticeDismissed($name){
|
61 |
+
$user_id = get_current_user_id();
|
62 |
+
$meta_key = 'wsal-notice-' . $name;
|
63 |
+
self::$AllowedNoticeNames[] = $name;
|
64 |
+
return !!get_user_meta($user_id, $meta_key, true);
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param string $name Name of notice to dismiss.
|
69 |
+
*/
|
70 |
+
public function DismissNotice($name){
|
71 |
+
$user_id = get_current_user_id();
|
72 |
+
$meta_key = 'wsal-notice-' . $name;
|
73 |
+
$old_value = get_user_meta($user_id, $meta_key, true);
|
74 |
+
if (in_array($name, self::$AllowedNoticeNames) || $old_value === '0')
|
75 |
+
add_user_meta($user_id, $meta_key, '1', true);
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* @param string $name Makes this notice available.
|
80 |
+
*/
|
81 |
+
public function RegisterNotice($name){
|
82 |
+
self::$AllowedNoticeNames[] = $name;
|
83 |
}
|
84 |
|
85 |
/**
|
classes/EDD_SL_Plugin_Updater.php
CHANGED
@@ -1,170 +1,170 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// uncomment this line for testing
|
4 |
-
//set_site_transient( 'update_plugins', null );
|
5 |
-
|
6 |
-
/**
|
7 |
-
* Allows plugins to use their own update API.
|
8 |
-
*
|
9 |
-
* @author Pippin Williamson
|
10 |
-
* @version 1.2
|
11 |
-
*/
|
12 |
-
class EDD_SL_Plugin_Updater {
|
13 |
-
private $api_url = '';
|
14 |
-
private $api_data = array();
|
15 |
-
private $name = '';
|
16 |
-
private $slug = '';
|
17 |
-
private $do_check = false;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Class constructor.
|
21 |
-
*
|
22 |
-
* @uses plugin_basename()
|
23 |
-
* @uses hook()
|
24 |
-
*
|
25 |
-
* @param string $_api_url The URL pointing to the custom API endpoint.
|
26 |
-
* @param string $_plugin_file Path to the plugin file.
|
27 |
-
* @param array $_api_data Optional data to send with API calls.
|
28 |
-
* @return void
|
29 |
-
*/
|
30 |
-
function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
|
31 |
-
$this->api_url = trailingslashit( $_api_url );
|
32 |
-
$this->api_data = urlencode_deep( $_api_data );
|
33 |
-
$this->name = plugin_basename( $_plugin_file );
|
34 |
-
$this->slug = basename( $_plugin_file, '.php');
|
35 |
-
$this->version = $_api_data['version'];
|
36 |
-
|
37 |
-
// Set up hooks.
|
38 |
-
$this->hook();
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Set up WordPress filters to hook into WP's update process.
|
43 |
-
*
|
44 |
-
* @uses add_filter()
|
45 |
-
*
|
46 |
-
* @return void
|
47 |
-
*/
|
48 |
-
private function hook() {
|
49 |
-
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
|
50 |
-
add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
|
51 |
-
add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 );
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Check for Updates at the defined API endpoint and modify the update array.
|
56 |
-
*
|
57 |
-
* This function dives into the update API just when WordPress creates its update array,
|
58 |
-
* then adds a custom API call and injects the custom plugin data retrieved from the API.
|
59 |
-
* It is reassembled from parts of the native WordPress plugin update code.
|
60 |
-
* See wp-includes/update.php line 121 for the original wp_update_plugins() function.
|
61 |
-
*
|
62 |
-
* @uses api_request()
|
63 |
-
*
|
64 |
-
* @param array $_transient_data Update array build by WordPress.
|
65 |
-
* @return array Modified update array with custom plugin data.
|
66 |
-
*/
|
67 |
-
function pre_set_site_transient_update_plugins_filter( $_transient_data ) {
|
68 |
-
|
69 |
-
if( empty( $_transient_data ) || ! $this->do_check ) {
|
70 |
-
|
71 |
-
// This ensures that the custom API request only runs on the second time that WP fires the update check
|
72 |
-
$this->do_check = true;
|
73 |
-
|
74 |
-
return $_transient_data;
|
75 |
-
}
|
76 |
-
|
77 |
-
$to_send = array( 'slug' => $this->slug );
|
78 |
-
|
79 |
-
$api_response = $this->api_request( 'plugin_latest_version', $to_send );
|
80 |
-
|
81 |
-
if( false !== $api_response && is_object( $api_response ) && isset( $api_response->new_version ) ) {
|
82 |
-
|
83 |
-
if( version_compare( $this->version, $api_response->new_version, '<' ) ) {
|
84 |
-
$_transient_data->response[$this->name] = $api_response;
|
85 |
-
}
|
86 |
-
}
|
87 |
-
return $_transient_data;
|
88 |
-
}
|
89 |
-
|
90 |
-
|
91 |
-
/**
|
92 |
-
* Updates information on the "View version x.x details" page with custom data.
|
93 |
-
*
|
94 |
-
* @uses api_request()
|
95 |
-
*
|
96 |
-
* @param mixed $_data
|
97 |
-
* @param string $_action
|
98 |
-
* @param object $_args
|
99 |
-
* @return object $_data
|
100 |
-
*/
|
101 |
-
function plugins_api_filter( $_data, $_action = '', $_args = null ) {
|
102 |
-
if ( ( $_action != 'plugin_information' ) || !isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) return $_data;
|
103 |
-
|
104 |
-
$to_send = array( 'slug' => $this->slug );
|
105 |
-
|
106 |
-
$api_response = $this->api_request( 'plugin_information', $to_send );
|
107 |
-
if ( false !== $api_response ) $_data = $api_response;
|
108 |
-
|
109 |
-
return $_data;
|
110 |
-
}
|
111 |
-
|
112 |
-
|
113 |
-
/**
|
114 |
-
* Disable SSL verification in order to prevent download update failures
|
115 |
-
*
|
116 |
-
* @param array $args
|
117 |
-
* @param string $url
|
118 |
-
* @return object $array
|
119 |
-
*/
|
120 |
-
function http_request_args( $args, $url ) {
|
121 |
-
// If it is an https request and we are performing a package download, disable ssl verification
|
122 |
-
if( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) {
|
123 |
-
$args['sslverify'] = false;
|
124 |
-
}
|
125 |
-
return $args;
|
126 |
-
}
|
127 |
-
|
128 |
-
/**
|
129 |
-
* Calls the API and, if successfull, returns the object delivered by the API.
|
130 |
-
*
|
131 |
-
* @uses get_bloginfo()
|
132 |
-
* @uses wp_remote_post()
|
133 |
-
* @uses is_wp_error()
|
134 |
-
*
|
135 |
-
* @param string $_action The requested action.
|
136 |
-
* @param array $_data Parameters for the API action.
|
137 |
-
* @return false||object
|
138 |
-
*/
|
139 |
-
private function api_request( $_action, $_data ) {
|
140 |
-
|
141 |
-
global $wp_version;
|
142 |
-
|
143 |
-
$data = array_merge( $this->api_data, $_data );
|
144 |
-
|
145 |
-
if( $data['slug'] != $this->slug )
|
146 |
-
return;
|
147 |
-
|
148 |
-
if( empty( $data['license'] ) )
|
149 |
-
return;
|
150 |
-
|
151 |
-
$api_params = array(
|
152 |
-
'edd_action' => 'get_version',
|
153 |
-
'license' => $data['license'],
|
154 |
-
'name' => $data['item_name'],
|
155 |
-
'slug' => $this->slug,
|
156 |
-
'author' => $data['author'],
|
157 |
-
'url' => home_url()
|
158 |
-
);
|
159 |
-
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
160 |
-
|
161 |
-
if ( ! is_wp_error( $request ) ):
|
162 |
-
$request = json_decode( wp_remote_retrieve_body( $request ) );
|
163 |
-
if( $request && isset( $request->sections ) )
|
164 |
-
$request->sections = maybe_unserialize( $request->sections );
|
165 |
-
return $request;
|
166 |
-
else:
|
167 |
-
return false;
|
168 |
-
endif;
|
169 |
-
}
|
170 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// uncomment this line for testing
|
4 |
+
//set_site_transient( 'update_plugins', null );
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Allows plugins to use their own update API.
|
8 |
+
*
|
9 |
+
* @author Pippin Williamson
|
10 |
+
* @version 1.2
|
11 |
+
*/
|
12 |
+
class EDD_SL_Plugin_Updater {
|
13 |
+
private $api_url = '';
|
14 |
+
private $api_data = array();
|
15 |
+
private $name = '';
|
16 |
+
private $slug = '';
|
17 |
+
private $do_check = false;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Class constructor.
|
21 |
+
*
|
22 |
+
* @uses plugin_basename()
|
23 |
+
* @uses hook()
|
24 |
+
*
|
25 |
+
* @param string $_api_url The URL pointing to the custom API endpoint.
|
26 |
+
* @param string $_plugin_file Path to the plugin file.
|
27 |
+
* @param array $_api_data Optional data to send with API calls.
|
28 |
+
* @return void
|
29 |
+
*/
|
30 |
+
function __construct( $_api_url, $_plugin_file, $_api_data = null ) {
|
31 |
+
$this->api_url = trailingslashit( $_api_url );
|
32 |
+
$this->api_data = urlencode_deep( $_api_data );
|
33 |
+
$this->name = plugin_basename( $_plugin_file );
|
34 |
+
$this->slug = basename( $_plugin_file, '.php');
|
35 |
+
$this->version = $_api_data['version'];
|
36 |
+
|
37 |
+
// Set up hooks.
|
38 |
+
$this->hook();
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Set up WordPress filters to hook into WP's update process.
|
43 |
+
*
|
44 |
+
* @uses add_filter()
|
45 |
+
*
|
46 |
+
* @return void
|
47 |
+
*/
|
48 |
+
private function hook() {
|
49 |
+
add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'pre_set_site_transient_update_plugins_filter' ) );
|
50 |
+
add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 );
|
51 |
+
add_filter( 'http_request_args', array( $this, 'http_request_args' ), 10, 2 );
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Check for Updates at the defined API endpoint and modify the update array.
|
56 |
+
*
|
57 |
+
* This function dives into the update API just when WordPress creates its update array,
|
58 |
+
* then adds a custom API call and injects the custom plugin data retrieved from the API.
|
59 |
+
* It is reassembled from parts of the native WordPress plugin update code.
|
60 |
+
* See wp-includes/update.php line 121 for the original wp_update_plugins() function.
|
61 |
+
*
|
62 |
+
* @uses api_request()
|
63 |
+
*
|
64 |
+
* @param array $_transient_data Update array build by WordPress.
|
65 |
+
* @return array Modified update array with custom plugin data.
|
66 |
+
*/
|
67 |
+
function pre_set_site_transient_update_plugins_filter( $_transient_data ) {
|
68 |
+
|
69 |
+
if( empty( $_transient_data ) || ! $this->do_check ) {
|
70 |
+
|
71 |
+
// This ensures that the custom API request only runs on the second time that WP fires the update check
|
72 |
+
$this->do_check = true;
|
73 |
+
|
74 |
+
return $_transient_data;
|
75 |
+
}
|
76 |
+
|
77 |
+
$to_send = array( 'slug' => $this->slug );
|
78 |
+
|
79 |
+
$api_response = $this->api_request( 'plugin_latest_version', $to_send );
|
80 |
+
|
81 |
+
if( false !== $api_response && is_object( $api_response ) && isset( $api_response->new_version ) ) {
|
82 |
+
|
83 |
+
if( version_compare( $this->version, $api_response->new_version, '<' ) ) {
|
84 |
+
$_transient_data->response[$this->name] = $api_response;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
return $_transient_data;
|
88 |
+
}
|
89 |
+
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Updates information on the "View version x.x details" page with custom data.
|
93 |
+
*
|
94 |
+
* @uses api_request()
|
95 |
+
*
|
96 |
+
* @param mixed $_data
|
97 |
+
* @param string $_action
|
98 |
+
* @param object $_args
|
99 |
+
* @return object $_data
|
100 |
+
*/
|
101 |
+
function plugins_api_filter( $_data, $_action = '', $_args = null ) {
|
102 |
+
if ( ( $_action != 'plugin_information' ) || !isset( $_args->slug ) || ( $_args->slug != $this->slug ) ) return $_data;
|
103 |
+
|
104 |
+
$to_send = array( 'slug' => $this->slug );
|
105 |
+
|
106 |
+
$api_response = $this->api_request( 'plugin_information', $to_send );
|
107 |
+
if ( false !== $api_response ) $_data = $api_response;
|
108 |
+
|
109 |
+
return $_data;
|
110 |
+
}
|
111 |
+
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Disable SSL verification in order to prevent download update failures
|
115 |
+
*
|
116 |
+
* @param array $args
|
117 |
+
* @param string $url
|
118 |
+
* @return object $array
|
119 |
+
*/
|
120 |
+
function http_request_args( $args, $url ) {
|
121 |
+
// If it is an https request and we are performing a package download, disable ssl verification
|
122 |
+
if( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) {
|
123 |
+
$args['sslverify'] = false;
|
124 |
+
}
|
125 |
+
return $args;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Calls the API and, if successfull, returns the object delivered by the API.
|
130 |
+
*
|
131 |
+
* @uses get_bloginfo()
|
132 |
+
* @uses wp_remote_post()
|
133 |
+
* @uses is_wp_error()
|
134 |
+
*
|
135 |
+
* @param string $_action The requested action.
|
136 |
+
* @param array $_data Parameters for the API action.
|
137 |
+
* @return false||object
|
138 |
+
*/
|
139 |
+
private function api_request( $_action, $_data ) {
|
140 |
+
|
141 |
+
global $wp_version;
|
142 |
+
|
143 |
+
$data = array_merge( $this->api_data, $_data );
|
144 |
+
|
145 |
+
if( $data['slug'] != $this->slug )
|
146 |
+
return;
|
147 |
+
|
148 |
+
if( empty( $data['license'] ) )
|
149 |
+
return;
|
150 |
+
|
151 |
+
$api_params = array(
|
152 |
+
'edd_action' => 'get_version',
|
153 |
+
'license' => $data['license'],
|
154 |
+
'name' => $data['item_name'],
|
155 |
+
'slug' => $this->slug,
|
156 |
+
'author' => $data['author'],
|
157 |
+
'url' => home_url()
|
158 |
+
);
|
159 |
+
$request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => false, 'body' => $api_params ) );
|
160 |
+
|
161 |
+
if ( ! is_wp_error( $request ) ):
|
162 |
+
$request = json_decode( wp_remote_retrieve_body( $request ) );
|
163 |
+
if( $request && isset( $request->sections ) )
|
164 |
+
$request->sections = maybe_unserialize( $request->sections );
|
165 |
+
return $request;
|
166 |
+
else:
|
167 |
+
return false;
|
168 |
+
endif;
|
169 |
+
}
|
170 |
+
}
|
classes/LicenseManager.php
CHANGED
@@ -11,76 +11,154 @@ class WSAL_LicenseManager {
|
|
11 |
*/
|
12 |
protected $plugin;
|
13 |
|
14 |
-
|
15 |
|
16 |
public function __construct(WpSecurityAuditLog $plugin){
|
17 |
$this->plugin = $plugin;
|
|
|
18 |
}
|
19 |
|
20 |
protected function GetStoreUrl(){
|
21 |
-
return 'http://wpwhitesecurity.com/';
|
22 |
}
|
23 |
|
24 |
public function CountPlugins(){
|
25 |
return count($this->plugins);
|
26 |
}
|
27 |
|
28 |
-
public function
|
29 |
-
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
|
33 |
'PluginData' => $pluginData,
|
34 |
-
'EddUpdater' =>
|
35 |
-
$this->GetStoreUrl(),
|
36 |
-
$pluginFile,
|
37 |
-
array(
|
38 |
-
'license' => $this->plugin->settings->GetLicenseKey($name),
|
39 |
-
'item_name' => $pluginData['Name'],
|
40 |
-
'author' => $pluginData['Author'],
|
41 |
-
'version' => $pluginData['Version'],
|
42 |
-
)
|
43 |
-
),
|
44 |
);
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
public function ActivateLicense($name, $license){
|
48 |
$this->plugin->settings->SetLicenseKey($name, $license);
|
49 |
|
|
|
50 |
$api_params = array(
|
51 |
'edd_action'=> 'activate_license',
|
52 |
'license' => urlencode($license),
|
53 |
-
'item_name' => urlencode($
|
54 |
-
'url' => urlencode(home_url())
|
55 |
);
|
56 |
|
57 |
-
$
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
76 |
-
}else{
|
77 |
-
$this->plugin->settings->SetLicenseErrors($name, 'Unexpected Licensing Server Response');
|
78 |
}
|
79 |
|
80 |
return true;
|
81 |
}
|
82 |
|
83 |
-
public function
|
|
|
|
|
|
|
|
|
84 |
$this->plugin->settings->SetLicenseStatus($name, '');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
}
|
11 |
*/
|
12 |
protected $plugin;
|
13 |
|
14 |
+
protected $plugins = array();
|
15 |
|
16 |
public function __construct(WpSecurityAuditLog $plugin){
|
17 |
$this->plugin = $plugin;
|
18 |
+
add_action('plugins_loaded', array($this, 'LoadPlugins'));
|
19 |
}
|
20 |
|
21 |
protected function GetStoreUrl(){
|
22 |
+
return 'http://www.wpwhitesecurity.com/';
|
23 |
}
|
24 |
|
25 |
public function CountPlugins(){
|
26 |
return count($this->plugins);
|
27 |
}
|
28 |
|
29 |
+
public function Plugins(){
|
30 |
+
return $this->plugins;
|
31 |
+
}
|
32 |
+
|
33 |
+
public function LoadPlugins(){
|
34 |
+
foreach(apply_filters('wsal_register', array()) as $pluginFile)
|
35 |
+
$this->AddPremiumPlugin($pluginFile);
|
36 |
+
}
|
37 |
+
|
38 |
+
protected function GetPluginData($pluginFile, $license){
|
39 |
+
// A hack since get_plugin_data() is not available now
|
40 |
+
$pluginData = get_file_data($pluginFile, array(
|
41 |
+
'Name' => 'Plugin Name',
|
42 |
+
'PluginURI' => 'Plugin URI',
|
43 |
+
'Version' => 'Version',
|
44 |
+
'Description' => 'Description',
|
45 |
+
'Author' => 'Author',
|
46 |
+
'TextDomain' => 'Text Domain',
|
47 |
+
'DomainPath' => 'Domain Path',
|
48 |
+
), 'plugin' );
|
49 |
+
|
50 |
+
$pluginUpdater = new EDD_SL_Plugin_Updater(
|
51 |
+
$this->GetStoreUrl(),
|
52 |
+
$pluginFile,
|
53 |
+
array(
|
54 |
+
'license' => $license,
|
55 |
+
'item_name' => $pluginData['Name'],
|
56 |
+
'author' => $pluginData['Author'],
|
57 |
+
'version' => $pluginData['Version'],
|
58 |
+
)
|
59 |
+
);
|
60 |
|
61 |
+
return array(
|
62 |
'PluginData' => $pluginData,
|
63 |
+
'EddUpdater' => $pluginUpdater,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
);
|
65 |
}
|
66 |
|
67 |
+
public function AddPremiumPlugin($pluginFile){
|
68 |
+
$name = sanitize_key(basename($pluginFile));
|
69 |
+
$license = $this->plugin->settings->GetLicenseKey($name);
|
70 |
+
$this->plugins[$name] = $this->GetPluginData($pluginFile, $license);
|
71 |
+
}
|
72 |
+
|
73 |
+
protected function GetBlogIds(){
|
74 |
+
global $wpdb;
|
75 |
+
$sql = 'SELECT blog_id FROM ' . $wpdb->blogs;
|
76 |
+
return $wpdb->get_col($sql);
|
77 |
+
}
|
78 |
+
|
79 |
public function ActivateLicense($name, $license){
|
80 |
$this->plugin->settings->SetLicenseKey($name, $license);
|
81 |
|
82 |
+
$plugins = $this->Plugins();
|
83 |
$api_params = array(
|
84 |
'edd_action'=> 'activate_license',
|
85 |
'license' => urlencode($license),
|
86 |
+
'item_name' => urlencode($plugins[$name]['PluginData']['Name']),
|
87 |
+
'url' => urlencode(home_url()),
|
88 |
);
|
89 |
|
90 |
+
$blog_ids = $this->plugin->IsMultisite() ? $this->GetBlogIds() : array(1);
|
91 |
+
|
92 |
+
foreach($blog_ids as $blog_id){
|
93 |
+
|
94 |
+
if($this->plugin->IsMultisite())
|
95 |
+
$api_params['url'] = urlencode(get_home_url($blog_id));
|
96 |
+
|
97 |
+
$response = wp_remote_get(
|
98 |
+
add_query_arg($api_params, $this->GetStoreUrl()),
|
99 |
+
array('timeout' => 15, 'sslverify' => false)
|
100 |
+
);
|
101 |
|
102 |
+
if (is_wp_error($response)) {
|
103 |
+
$this->plugin->settings->SetLicenseErrors($name, 'Invalid Licensing Server Response: ' . $response->get_error_message());
|
104 |
+
$this->DeactivateLicense($name, $license);
|
105 |
+
return false;
|
106 |
+
}
|
107 |
|
108 |
+
$license_data = json_decode(wp_remote_retrieve_body($response));
|
109 |
+
|
110 |
+
if(is_object($license_data)){
|
111 |
+
$this->plugin->settings->SetLicenseStatus($name, $license_data->license);
|
112 |
+
if($license_data->license !== 'valid'){
|
113 |
+
$error = 'License Not Valid';
|
114 |
+
if (isset($license_data->error)) $error .= ': ' . ucfirst(str_replace('_', ' ', $license_data->error));
|
115 |
+
$this->plugin->settings->SetLicenseErrors($name, $error);
|
116 |
+
$this->DeactivateLicense($name, $license);
|
117 |
+
return false;
|
118 |
+
}
|
119 |
+
}else{
|
120 |
+
$this->plugin->settings->SetLicenseErrors($name, 'Unexpected Licensing Server Response');
|
121 |
+
$this->DeactivateLicense($name, $license);
|
122 |
+
return false;
|
123 |
}
|
|
|
|
|
124 |
}
|
125 |
|
126 |
return true;
|
127 |
}
|
128 |
|
129 |
+
public function IsLicenseValid($name){
|
130 |
+
return trim(strtolower($this->plugin->settings->GetLicenseStatus($name))) === 'valid';
|
131 |
+
}
|
132 |
+
|
133 |
+
public function DeactivateLicense($name, $license = null){
|
134 |
$this->plugin->settings->SetLicenseStatus($name, '');
|
135 |
+
|
136 |
+
// deactivate it on the server (if license was given)
|
137 |
+
if(!is_null($license)){
|
138 |
+
$plugins = $this->Plugins();
|
139 |
+
$api_params = array(
|
140 |
+
'edd_action'=> 'deactivate_license',
|
141 |
+
'license' => urlencode($license),
|
142 |
+
'item_name' => urlencode($plugins[$name]['PluginData']['Name']),
|
143 |
+
'url' => urlencode(home_url()),
|
144 |
+
);
|
145 |
+
|
146 |
+
$blog_ids = $this->plugin->IsMultisite() ? $this->GetBlogIds() : array(1);
|
147 |
+
|
148 |
+
foreach($blog_ids as $blog_id){
|
149 |
+
|
150 |
+
if($this->plugin->IsMultisite())
|
151 |
+
$api_params['url'] = urlencode(get_home_url($blog_id));
|
152 |
+
|
153 |
+
$response = wp_remote_get(
|
154 |
+
add_query_arg($api_params, $this->GetStoreUrl()),
|
155 |
+
array('timeout' => 15, 'sslverify' => false)
|
156 |
+
);
|
157 |
+
|
158 |
+
if (is_wp_error($response)) return false;
|
159 |
+
|
160 |
+
wp_remote_retrieve_body($response);
|
161 |
+
}
|
162 |
+
}
|
163 |
}
|
164 |
}
|
classes/Loggers/Database.php
CHANGED
@@ -23,15 +23,15 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
|
|
23 |
|
24 |
public function CleanUp() {
|
25 |
$now = current_time('timestamp');
|
26 |
-
$max_count = $this->plugin->settings->GetPruningLimit();
|
27 |
$max_sdate = $this->plugin->settings->GetPruningDate();
|
|
|
|
|
|
|
|
|
28 |
$max_stamp = $now - (strtotime($max_sdate) - $now);
|
29 |
$cnt_items = WSAL_DB_Occurrence::Count();
|
30 |
-
if($cnt_items == $max_count)return;
|
31 |
$max_items = max(($cnt_items - $max_count) + 1, 0);
|
32 |
|
33 |
-
$is_date_e = $this->plugin->settings->IsPruningDateEnabled();
|
34 |
-
$is_limt_e = $this->plugin->settings->IsPruningLimitEnabled();
|
35 |
if (!$is_date_e && !$is_limt_e) return; // pruning disabled
|
36 |
|
37 |
$query = new WSAL_DB_OccurrenceQuery('WSAL_DB_Occurrence');
|
@@ -43,8 +43,17 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
|
|
43 |
$count = $query->Count();
|
44 |
if (!$count) return; // nothing to delete
|
45 |
|
46 |
-
// delete data
|
47 |
$query->Delete();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
do_action('wsal_prune', $count, vsprintf($query->GetSql(), $query->GetArgs()));
|
49 |
}
|
50 |
|
23 |
|
24 |
public function CleanUp() {
|
25 |
$now = current_time('timestamp');
|
|
|
26 |
$max_sdate = $this->plugin->settings->GetPruningDate();
|
27 |
+
$max_count = $this->plugin->settings->GetPruningLimit();
|
28 |
+
$is_date_e = $this->plugin->settings->IsPruningDateEnabled();
|
29 |
+
$is_limt_e = $this->plugin->settings->IsPruningLimitEnabled();
|
30 |
+
|
31 |
$max_stamp = $now - (strtotime($max_sdate) - $now);
|
32 |
$cnt_items = WSAL_DB_Occurrence::Count();
|
|
|
33 |
$max_items = max(($cnt_items - $max_count) + 1, 0);
|
34 |
|
|
|
|
|
35 |
if (!$is_date_e && !$is_limt_e) return; // pruning disabled
|
36 |
|
37 |
$query = new WSAL_DB_OccurrenceQuery('WSAL_DB_Occurrence');
|
43 |
$count = $query->Count();
|
44 |
if (!$count) return; // nothing to delete
|
45 |
|
46 |
+
// delete data
|
47 |
$query->Delete();
|
48 |
+
|
49 |
+
// keep track of what we're doing
|
50 |
+
$this->plugin->alerts->Trigger(0003, array(
|
51 |
+
'Message' => 'Running system cleanup.',
|
52 |
+
'Query SQL' => $query->GetSql(),
|
53 |
+
'Query Args' => $query->GetArgs(),
|
54 |
+
), true);
|
55 |
+
|
56 |
+
// notify system
|
57 |
do_action('wsal_prune', $count, vsprintf($query->GetSql(), $query->GetArgs()));
|
58 |
}
|
59 |
|
classes/Settings.php
CHANGED
@@ -416,6 +416,7 @@ class WSAL_Settings {
|
|
416 |
|
417 |
public function GetLicense($name){
|
418 |
$data = $this->GetLicenses();
|
|
|
419 |
return isset($data[$name]) ? $data[$name] : array();
|
420 |
}
|
421 |
|
416 |
|
417 |
public function GetLicense($name){
|
418 |
$data = $this->GetLicenses();
|
419 |
+
$name = sanitize_key(basename($name));
|
420 |
return isset($data[$name]) ? $data[$name] : array();
|
421 |
}
|
422 |
|
classes/Views/AuditLog.php
CHANGED
@@ -12,6 +12,24 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
|
|
12 |
add_action('wp_ajax_AjaxRefresh', array($this, 'AjaxRefresh'));
|
13 |
add_action('wp_ajax_AjaxSetIpp', array($this, 'AjaxSetIpp'));
|
14 |
add_action('wp_ajax_AjaxSearchSite', array($this, 'AjaxSearchSite'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
public function HasPluginShortcutLink(){
|
@@ -51,7 +69,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
|
|
51 |
?><form id="audit-log-viewer" method="post">
|
52 |
<div id="audit-log-viewer-content">
|
53 |
<input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>" />
|
54 |
-
<input type="hidden" id="wsal-cbid" name="wsal-cbid" value="<?php echo esc_attr(isset($_REQUEST['wsal-cbid']) ? $_REQUEST['wsal-cbid'] : ''); ?>" />
|
55 |
<?php do_action('wsal_auditlog_before_view', $this->GetListView()); ?>
|
56 |
<?php $this->GetListView()->display(); ?>
|
57 |
<?php do_action('wsal_auditlog_after_view', $this->GetListView()); ?>
|
12 |
add_action('wp_ajax_AjaxRefresh', array($this, 'AjaxRefresh'));
|
13 |
add_action('wp_ajax_AjaxSetIpp', array($this, 'AjaxSetIpp'));
|
14 |
add_action('wp_ajax_AjaxSearchSite', array($this, 'AjaxSearchSite'));
|
15 |
+
add_action('all_admin_notices', array($this, 'AdminNoticesNotificationsExtension'));
|
16 |
+
|
17 |
+
$this->RegisterNotice('notifications-extension');
|
18 |
+
}
|
19 |
+
|
20 |
+
public function AdminNoticesNotificationsExtension() {
|
21 |
+
$NotificationExtensionInstalled = $this->_plugin->licensing->IsLicenseValid('wsal-notifications-extension.php');
|
22 |
+
$IsCurrentView = $this->_plugin->views->GetActiveView() == $this;
|
23 |
+
if($IsCurrentView && !$this->IsNoticeDismissed('notifications-extension') && !$NotificationExtensionInstalled){
|
24 |
+
?><div class="updated" data-notice-name="notifications-extension">
|
25 |
+
<p><?php _e('Get notified instantly via email of important changes on your WordPress', 'wp-security-audit-log'); ?></p>
|
26 |
+
<p>
|
27 |
+
<?php $url = 'http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/'; ?>
|
28 |
+
<a href="<?php echo esc_attr($url); ?>" target="_blank"><?php _e('Learn More', 'wp-security-audit-log'); ?></a>
|
29 |
+
| <a href="javascript:;" class="wsal-dismiss-notification"><?php _e('Dismiss this notice', 'wp-security-audit-log'); ?></a>
|
30 |
+
</p>
|
31 |
+
</div><?php
|
32 |
+
}
|
33 |
}
|
34 |
|
35 |
public function HasPluginShortcutLink(){
|
69 |
?><form id="audit-log-viewer" method="post">
|
70 |
<div id="audit-log-viewer-content">
|
71 |
<input type="hidden" name="page" value="<?php echo esc_attr($_REQUEST['page']); ?>" />
|
72 |
+
<input type="hidden" id="wsal-cbid" name="wsal-cbid" value="<?php echo esc_attr(isset($_REQUEST['wsal-cbid']) ? $_REQUEST['wsal-cbid'] : '0'); ?>" />
|
73 |
<?php do_action('wsal_auditlog_before_view', $this->GetListView()); ?>
|
74 |
<?php $this->GetListView()->display(); ?>
|
75 |
<?php do_action('wsal_auditlog_after_view', $this->GetListView()); ?>
|
classes/Views/Extensions.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class WSAL_Views_Extensions extends WSAL_AbstractView {
|
4 |
+
|
5 |
+
public function GetTitle() {
|
6 |
+
return __('WP Security Audit Log Functionality Extensions', 'wp-security-audit-log');
|
7 |
+
}
|
8 |
+
|
9 |
+
public function GetIcon() {
|
10 |
+
return 'admin-plugins';
|
11 |
+
}
|
12 |
+
|
13 |
+
public function GetName() {
|
14 |
+
return __('Extensions', 'wp-security-audit-log');
|
15 |
+
}
|
16 |
+
|
17 |
+
public function GetWeight() {
|
18 |
+
return 3.5;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function Render(){
|
22 |
+
?><div class="metabox-holder" style="position: relative;">
|
23 |
+
|
24 |
+
<div class="postbox" style="margin-right: 270px;">
|
25 |
+
<div class="inside">
|
26 |
+
<div class="activity-block">
|
27 |
+
<h2><?php _e('Extend the functionality of your WP Security Audit Log plugin', 'wp-security-audit-log'); ?></h2>
|
28 |
+
<p><?php _e('Below is a list of extensions that allow you to extend the functionality of WP Security Audit Log plugin for a much better auditing and monitoring experience.', 'wp-security-audit-log'); ?></p>
|
29 |
+
</div>
|
30 |
+
|
31 |
+
<div class="">
|
32 |
+
<h2><?php _e('Notifications Extension', 'wp-security-audit-log'); ?></h2>
|
33 |
+
<strong><?php _e('Get notified instantly via email when important changes are made on your WordPress!', 'wp-security-audit-log'); ?></strong>
|
34 |
+
<p><?php _e('The Notifications Extension allows you to easily configure rules to receive an email when there is a change on WordPress. You do not need manually browse through the Audit Lock viewer anymore when looking for a specific change and the good thing is that you will be instantly alerted when it happens!', 'wp-security-audit-log'); ?></p>
|
35 |
+
<a class="button" href="http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/" target="_blank"><?php _e('More Information', 'wp-security-audit-log'); ?></a>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
</div>
|
39 |
+
</div><?php
|
40 |
+
}
|
41 |
+
|
42 |
+
}
|
classes/Views/Help.php
CHANGED
@@ -22,7 +22,6 @@ class WSAL_Views_Help extends WSAL_AbstractView {
|
|
22 |
?><div class="metabox-holder" style="position: relative;">
|
23 |
|
24 |
<div class="postbox" style="margin-right: 270px;">
|
25 |
-
<h3 class="hndl"><span><?php _e('Help', 'wp-security-audit-log'); ?></span></h3>
|
26 |
<div class="inside">
|
27 |
<div class="activity-block">
|
28 |
<h2><?php _e('Plugin Support', 'wp-security-audit-log'); ?></h2>
|
22 |
?><div class="metabox-holder" style="position: relative;">
|
23 |
|
24 |
<div class="postbox" style="margin-right: 270px;">
|
|
|
25 |
<div class="inside">
|
26 |
<div class="activity-block">
|
27 |
<h2><?php _e('Plugin Support', 'wp-security-audit-log'); ?></h2>
|
classes/Views/Licensing.php
CHANGED
@@ -49,7 +49,7 @@ class WSAL_Views_Licensing extends WSAL_AbstractView {
|
|
49 |
<tr><th>Plugin</th><th>License</th><th></th></tr>
|
50 |
</thead><tbody>
|
51 |
<?php $counter = 0; ?>
|
52 |
-
<?php foreach($this->_plugin->licensing->
|
53 |
<?php $licenseKey = trim($this->_plugin->settings->GetLicenseKey($name)); ?>
|
54 |
<?php $licenseStatus = trim($this->_plugin->settings->GetLicenseStatus($name)); ?>
|
55 |
<?php $licenseErrors = trim($this->_plugin->settings->GetLicenseErrors($name)); ?>
|
49 |
<tr><th>Plugin</th><th>License</th><th></th></tr>
|
50 |
</thead><tbody>
|
51 |
<?php $counter = 0; ?>
|
52 |
+
<?php foreach($this->_plugin->licensing->Plugins() as $name => $plugin){ ?>
|
53 |
<?php $licenseKey = trim($this->_plugin->settings->GetLicenseKey($name)); ?>
|
54 |
<?php $licenseStatus = trim($this->_plugin->settings->GetLicenseStatus($name)); ?>
|
55 |
<?php $licenseErrors = trim($this->_plugin->settings->GetLicenseErrors($name)); ?>
|
classes/Views/Sandbox.php
CHANGED
@@ -82,7 +82,8 @@ return array(
|
|
82 |
\'view\' => $settings->GetAccessTokens(\'view\'),
|
83 |
\'edit\' => $settings->GetAccessTokens(\'edit\'),
|
84 |
);',
|
85 |
-
'Show Profiler Results' => 'return array_map(\'strval\', WpSecurityAuditLog::GetInstance()->profiler->GetItems());'
|
|
|
86 |
);
|
87 |
|
88 |
public function HandleError($code, $message, $filename = 'unknown', $lineno = 0){
|
82 |
\'view\' => $settings->GetAccessTokens(\'view\'),
|
83 |
\'edit\' => $settings->GetAccessTokens(\'edit\'),
|
84 |
);',
|
85 |
+
'Show Profiler Results' => 'return array_map(\'strval\', WpSecurityAuditLog::GetInstance()->profiler->GetItems());',
|
86 |
+
'Reset Notices' => 'foreach (WSAL_AbstractView::$AllowedNoticeNames as $name) delete_user_meta(get_current_user_id(), "wsal-notice-$name");',
|
87 |
);
|
88 |
|
89 |
public function HandleError($code, $message, $filename = 'unknown', $lineno = 0){
|
classes/Views/Settings.php
CHANGED
@@ -43,9 +43,9 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
43 |
|
44 |
protected function Save(){
|
45 |
check_admin_referer('wsal-settings');
|
46 |
-
$this->_plugin->settings->SetPruningDateEnabled(
|
47 |
$this->_plugin->settings->SetPruningDate($_REQUEST['PruningDate']);
|
48 |
-
$this->_plugin->settings->SetPruningLimitEnabled(
|
49 |
$this->_plugin->settings->SetPruningLimit($_REQUEST['PruningLimit']);
|
50 |
$this->_plugin->settings->SetWidgetsEnabled($_REQUEST['EnableDashboardWidgets']);
|
51 |
$this->_plugin->settings->SetAllowedPluginViewers(isset($_REQUEST['Viewers']) ? $_REQUEST['Viewers'] : array());
|
@@ -97,28 +97,36 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
97 |
<tr>
|
98 |
<th><label for="delete1"><?php _e('Security Alerts Pruning', 'wp-security-audit-log'); ?></label></th>
|
99 |
<td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
<fieldset>
|
101 |
<?php $text = __('(eg: 1 month)', 'wp-security-audit-log'); ?>
|
102 |
<?php $nbld = $this->_plugin->settings->IsPruningDateEnabled(); ?>
|
103 |
<label for="delete1">
|
104 |
-
<input type="
|
105 |
-
onchange="jQuery('#PruningDate').attr('readonly', !checked);"/>
|
106 |
<?php echo __('Delete alerts older than', 'wp-security-audit-log'); ?>
|
107 |
</label>
|
108 |
-
<input type="text" id="PruningDate" name="PruningDate" placeholder="<?php echo $text; ?>"
|
109 |
-
value="<?php echo esc_attr($this->_plugin->settings->GetPruningDate()); ?>"
|
|
|
110 |
<span> <?php echo $text; ?></span>
|
111 |
</fieldset>
|
112 |
<fieldset>
|
113 |
<?php $text = __('(eg: 80)', 'wp-security-audit-log'); ?>
|
114 |
<?php $nbld = $this->_plugin->settings->IsPruningLimitEnabled(); ?>
|
115 |
<label for="delete2">
|
116 |
-
<input type="
|
117 |
-
onchange="jQuery('#PruningLimit').attr('readonly', !checked);"/>
|
118 |
<?php echo __('Keep up to', 'wp-security-audit-log'); ?>
|
119 |
</label>
|
120 |
-
<input type="text" id="PruningLimit" name="PruningLimit" placeholder="<?php echo $text;?>"
|
121 |
-
value="<?php echo esc_attr($this->_plugin->settings->GetPruningLimit()); ?>"
|
|
|
122 |
<?php echo __('alerts', 'wp-security-audit-log'); ?>
|
123 |
<span><?php echo $text; ?></span>
|
124 |
</fieldset>
|
43 |
|
44 |
protected function Save(){
|
45 |
check_admin_referer('wsal-settings');
|
46 |
+
$this->_plugin->settings->SetPruningDateEnabled($_REQUEST['PruneBy'] == 'date');
|
47 |
$this->_plugin->settings->SetPruningDate($_REQUEST['PruningDate']);
|
48 |
+
$this->_plugin->settings->SetPruningLimitEnabled($_REQUEST['PruneBy'] == 'limit');
|
49 |
$this->_plugin->settings->SetPruningLimit($_REQUEST['PruningLimit']);
|
50 |
$this->_plugin->settings->SetWidgetsEnabled($_REQUEST['EnableDashboardWidgets']);
|
51 |
$this->_plugin->settings->SetAllowedPluginViewers(isset($_REQUEST['Viewers']) ? $_REQUEST['Viewers'] : array());
|
97 |
<tr>
|
98 |
<th><label for="delete1"><?php _e('Security Alerts Pruning', 'wp-security-audit-log'); ?></label></th>
|
99 |
<td>
|
100 |
+
<fieldset>
|
101 |
+
<?php $text = __('(eg: 1 month)', 'wp-security-audit-log'); ?>
|
102 |
+
<?php $nbld = !($this->_plugin->settings->IsPruningDateEnabled() || $this->_plugin->settings->IsPruningLimitEnabled()); ?>
|
103 |
+
<label for="delete0">
|
104 |
+
<input type="radio" id="delete0" name="PruneBy" value="" <?php if($nbld)echo 'checked="checked"'; ?>/>
|
105 |
+
<?php echo __('None', 'wp-security-audit-log'); ?>
|
106 |
+
</label>
|
107 |
+
</fieldset>
|
108 |
<fieldset>
|
109 |
<?php $text = __('(eg: 1 month)', 'wp-security-audit-log'); ?>
|
110 |
<?php $nbld = $this->_plugin->settings->IsPruningDateEnabled(); ?>
|
111 |
<label for="delete1">
|
112 |
+
<input type="radio" id="delete1" name="PruneBy" value="date" <?php if($nbld)echo 'checked="checked"'; ?>/>
|
|
|
113 |
<?php echo __('Delete alerts older than', 'wp-security-audit-log'); ?>
|
114 |
</label>
|
115 |
+
<input type="text" id="PruningDate" name="PruningDate" placeholder="<?php echo $text; ?>"
|
116 |
+
value="<?php echo esc_attr($this->_plugin->settings->GetPruningDate()); ?>"
|
117 |
+
onfocus="jQuery('#delete1').attr('checked', true);"/>
|
118 |
<span> <?php echo $text; ?></span>
|
119 |
</fieldset>
|
120 |
<fieldset>
|
121 |
<?php $text = __('(eg: 80)', 'wp-security-audit-log'); ?>
|
122 |
<?php $nbld = $this->_plugin->settings->IsPruningLimitEnabled(); ?>
|
123 |
<label for="delete2">
|
124 |
+
<input type="radio" id="delete2" name="PruneBy" value="limit" <?php if($nbld)echo 'checked="checked"'; ?>/>
|
|
|
125 |
<?php echo __('Keep up to', 'wp-security-audit-log'); ?>
|
126 |
</label>
|
127 |
+
<input type="text" id="PruningLimit" name="PruningLimit" placeholder="<?php echo $text;?>"
|
128 |
+
value="<?php echo esc_attr($this->_plugin->settings->GetPruningLimit()); ?>"
|
129 |
+
onfocus="jQuery('#delete2').attr('checked', true);"/>
|
130 |
<?php echo __('alerts', 'wp-security-audit-log'); ?>
|
131 |
<span><?php echo $text; ?></span>
|
132 |
</fieldset>
|
css/install-error.css
CHANGED
@@ -1,41 +1,41 @@
|
|
1 |
-
.warn-icon-tri {
|
2 |
-
top: 5px;
|
3 |
-
left: 5px;
|
4 |
-
position: absolute;
|
5 |
-
border-left: 16px solid #FFF;
|
6 |
-
border-right: 16px solid #FFF;
|
7 |
-
border-bottom: 28px solid #C33;
|
8 |
-
height: 3px;
|
9 |
-
width: 4px
|
10 |
-
}
|
11 |
-
|
12 |
-
.warn-icon-chr {
|
13 |
-
top: 8px;
|
14 |
-
left: 18px;
|
15 |
-
position: absolute;
|
16 |
-
color: #FFF;
|
17 |
-
font: 26px Georgia;
|
18 |
-
}
|
19 |
-
|
20 |
-
.warn-icon-cir {
|
21 |
-
top: 2px;
|
22 |
-
left: 0px;
|
23 |
-
position: absolute;
|
24 |
-
overflow: hidden;
|
25 |
-
border: 6px solid #FFF;
|
26 |
-
border-radius: 32px;
|
27 |
-
width: 34px;
|
28 |
-
height: 34px;
|
29 |
-
}
|
30 |
-
|
31 |
-
.warn-wrap {
|
32 |
-
position: relative;
|
33 |
-
color: #A00;
|
34 |
-
font: 14px Arial;
|
35 |
-
padding: 6px 48px;
|
36 |
-
}
|
37 |
-
|
38 |
-
.warn-wrap a,
|
39 |
-
.warn-wrap a:hover {
|
40 |
-
color: #F56;
|
41 |
-
}
|
1 |
+
.warn-icon-tri {
|
2 |
+
top: 5px;
|
3 |
+
left: 5px;
|
4 |
+
position: absolute;
|
5 |
+
border-left: 16px solid #FFF;
|
6 |
+
border-right: 16px solid #FFF;
|
7 |
+
border-bottom: 28px solid #C33;
|
8 |
+
height: 3px;
|
9 |
+
width: 4px
|
10 |
+
}
|
11 |
+
|
12 |
+
.warn-icon-chr {
|
13 |
+
top: 8px;
|
14 |
+
left: 18px;
|
15 |
+
position: absolute;
|
16 |
+
color: #FFF;
|
17 |
+
font: 26px Georgia;
|
18 |
+
}
|
19 |
+
|
20 |
+
.warn-icon-cir {
|
21 |
+
top: 2px;
|
22 |
+
left: 0px;
|
23 |
+
position: absolute;
|
24 |
+
overflow: hidden;
|
25 |
+
border: 6px solid #FFF;
|
26 |
+
border-radius: 32px;
|
27 |
+
width: 34px;
|
28 |
+
height: 34px;
|
29 |
+
}
|
30 |
+
|
31 |
+
.warn-wrap {
|
32 |
+
position: relative;
|
33 |
+
color: #A00;
|
34 |
+
font: 14px Arial;
|
35 |
+
padding: 6px 48px;
|
36 |
+
}
|
37 |
+
|
38 |
+
.warn-wrap a,
|
39 |
+
.warn-wrap a:hover {
|
40 |
+
color: #F56;
|
41 |
+
}
|
css/settings.css
CHANGED
@@ -1,39 +1,39 @@
|
|
1 |
-
.sectoken-user,
|
2 |
-
.sectoken-role,
|
3 |
-
.sectoken-other {
|
4 |
-
display: inline-block;
|
5 |
-
border-width: 1px;
|
6 |
-
border-style: solid;
|
7 |
-
padding: 2px 4px;
|
8 |
-
margin: 2px 0 0 2px;
|
9 |
-
border-radius: 3px;
|
10 |
-
cursor: default;
|
11 |
-
}
|
12 |
-
|
13 |
-
.sectoken-user a,
|
14 |
-
.sectoken-role a,
|
15 |
-
.sectoken-other a {
|
16 |
-
text-decoration: none;
|
17 |
-
font-size: 12px;
|
18 |
-
font-weight: bold;
|
19 |
-
color: #FFF;
|
20 |
-
margin-left: 2px;
|
21 |
-
background: #BBB;
|
22 |
-
border-radius: 25px;
|
23 |
-
height: 14px;
|
24 |
-
display: inline-block;
|
25 |
-
width: 14px;
|
26 |
-
text-align: center;
|
27 |
-
line-height: 16px;
|
28 |
-
}
|
29 |
-
|
30 |
-
.sectoken-user a:hover,
|
31 |
-
.sectoken-role a:hover,
|
32 |
-
.sectoken-other a:hover {
|
33 |
-
background: #FB9;
|
34 |
-
}
|
35 |
-
|
36 |
-
.sectoken-user { background: #EFF; border-color: #5BE; }
|
37 |
-
.sectoken-role { background: #EFE; border-color: #5B5; }
|
38 |
-
.sectoken-other { background: #FFE; border-color: #ED5; }
|
39 |
-
.sectoken-del { background: #FEE; border-color: #EBB; }
|
1 |
+
.sectoken-user,
|
2 |
+
.sectoken-role,
|
3 |
+
.sectoken-other {
|
4 |
+
display: inline-block;
|
5 |
+
border-width: 1px;
|
6 |
+
border-style: solid;
|
7 |
+
padding: 2px 4px;
|
8 |
+
margin: 2px 0 0 2px;
|
9 |
+
border-radius: 3px;
|
10 |
+
cursor: default;
|
11 |
+
}
|
12 |
+
|
13 |
+
.sectoken-user a,
|
14 |
+
.sectoken-role a,
|
15 |
+
.sectoken-other a {
|
16 |
+
text-decoration: none;
|
17 |
+
font-size: 12px;
|
18 |
+
font-weight: bold;
|
19 |
+
color: #FFF;
|
20 |
+
margin-left: 2px;
|
21 |
+
background: #BBB;
|
22 |
+
border-radius: 25px;
|
23 |
+
height: 14px;
|
24 |
+
display: inline-block;
|
25 |
+
width: 14px;
|
26 |
+
text-align: center;
|
27 |
+
line-height: 16px;
|
28 |
+
}
|
29 |
+
|
30 |
+
.sectoken-user a:hover,
|
31 |
+
.sectoken-role a:hover,
|
32 |
+
.sectoken-other a:hover {
|
33 |
+
background: #FB9;
|
34 |
+
}
|
35 |
+
|
36 |
+
.sectoken-user { background: #EFF; border-color: #5BE; }
|
37 |
+
.sectoken-role { background: #EFE; border-color: #5B5; }
|
38 |
+
.sectoken-other { background: #FFE; border-color: #ED5; }
|
39 |
+
.sectoken-del { background: #FEE; border-color: #EBB; }
|
js/auditlog.js
CHANGED
@@ -1,115 +1,135 @@
|
|
1 |
-
var WsalData;
|
2 |
-
|
3 |
-
window['WsalAuditLogRefreshed'] = function(){
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
}
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
}
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var WsalData;
|
2 |
+
|
3 |
+
window['WsalAuditLogRefreshed'] = function(){
|
4 |
+
// fix pagination links causing form params to get lost
|
5 |
+
jQuery('span.pagination-links a').click(function(ev){
|
6 |
+
ev.preventDefault();
|
7 |
+
var deparam = function(url){
|
8 |
+
var obj = {};
|
9 |
+
var pairs = url.split('&');
|
10 |
+
for(var i in pairs){
|
11 |
+
var split = pairs[i].split('=');
|
12 |
+
obj[decodeURIComponent(split[0])] = decodeURIComponent(split[1]);
|
13 |
+
}
|
14 |
+
return obj;
|
15 |
+
};
|
16 |
+
var paged = deparam(this.href).paged;
|
17 |
+
if (typeof paged === 'undefined') paged = 1;
|
18 |
+
jQuery('#audit-log-viewer').append(
|
19 |
+
jQuery('<input type="hidden" name="paged"/>').val(paged)
|
20 |
+
).submit();
|
21 |
+
});
|
22 |
+
};
|
23 |
+
|
24 |
+
function WsalAuditLogInit(_WsalData){
|
25 |
+
WsalData = _WsalData;
|
26 |
+
var WsalTkn = WsalData.autorefresh.token;
|
27 |
+
|
28 |
+
// list refresher
|
29 |
+
var WsalAjx = null;
|
30 |
+
var WsalChk = function(){
|
31 |
+
if(WsalAjx)WsalAjx.abort();
|
32 |
+
WsalAjx = jQuery.post(WsalData.ajaxurl, {
|
33 |
+
action: 'AjaxRefresh',
|
34 |
+
logcount: WsalTkn
|
35 |
+
}, function(data){
|
36 |
+
WsalAjx = null;
|
37 |
+
if(data && data !== 'false'){
|
38 |
+
WsalTkn = data;
|
39 |
+
jQuery('#audit-log-viewer').load(
|
40 |
+
location.href + ' #audit-log-viewer-content',
|
41 |
+
window['WsalAuditLogRefreshed']
|
42 |
+
);
|
43 |
+
}
|
44 |
+
WsalChk();
|
45 |
+
});
|
46 |
+
};
|
47 |
+
if(WsalData.autorefresh.enabled){
|
48 |
+
setInterval(WsalChk, 40000);
|
49 |
+
WsalChk();
|
50 |
+
}
|
51 |
+
|
52 |
+
WsalSsasInit();
|
53 |
+
}
|
54 |
+
|
55 |
+
var WsalIppsPrev;
|
56 |
+
|
57 |
+
function WsalIppsFocus(value){
|
58 |
+
WsalIppsPrev = value;
|
59 |
+
}
|
60 |
+
|
61 |
+
function WsalIppsChange(value){
|
62 |
+
if(value === ''){
|
63 |
+
value = window.prompt(WsalData.tr8n.numofitems, WsalIppsPrev);
|
64 |
+
if(value === null || value === WsalIppsPrev)return this.value = WsalIppsPrev; // operation canceled
|
65 |
+
}
|
66 |
+
jQuery('select.wsal-ipps').attr('disabled', true);
|
67 |
+
jQuery.post(WsalData.ajaxurl, {
|
68 |
+
action: 'AjaxSetIpp',
|
69 |
+
count: value
|
70 |
+
}, function(){
|
71 |
+
location.reload();
|
72 |
+
});
|
73 |
+
}
|
74 |
+
|
75 |
+
function WsalSsasInit(){
|
76 |
+
var SsasAjx = null;
|
77 |
+
var SsasInps = jQuery("input.wsal-ssas");
|
78 |
+
SsasInps.after('<div class="wsal-ssas-dd" style="display: none;"/>');
|
79 |
+
SsasInps.click(function(){
|
80 |
+
jQuery(this).select();
|
81 |
+
});
|
82 |
+
window['WsalAuditLogRefreshed']();
|
83 |
+
SsasInps.keyup(function(){
|
84 |
+
var SsasInp = jQuery(this);
|
85 |
+
var SsasDiv = SsasInp.next();
|
86 |
+
var SsasVal = SsasInp.val();
|
87 |
+
if(SsasAjx)SsasAjx.abort();
|
88 |
+
SsasInp.removeClass('loading');
|
89 |
+
|
90 |
+
// do a new search
|
91 |
+
if(SsasInp.attr('data-oldvalue') !== SsasVal && SsasVal.length > 2){
|
92 |
+
SsasInp.addClass('loading');
|
93 |
+
SsasAjx = jQuery.post(WsalData.ajaxurl, {
|
94 |
+
action: 'AjaxSearchSite',
|
95 |
+
search: SsasVal
|
96 |
+
}, function(data){
|
97 |
+
if(SsasAjx)SsasAjx = null;
|
98 |
+
SsasInp.removeClass('loading');
|
99 |
+
SsasDiv.hide();
|
100 |
+
SsasDiv.html('');
|
101 |
+
if(data && data.length){
|
102 |
+
var SsasReg = new RegExp(SsasVal.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'), 'gi');
|
103 |
+
for (var i = 0; i < data.length; i++){
|
104 |
+
var link = jQuery('<a href="javascript:;" onclick="WsalSsasChange(' + data[i].blog_id + ')"/>')
|
105 |
+
.text(data[i].blogname + ' (' + data[i].domain + ')');
|
106 |
+
link.html(link.text().replace(SsasReg, '<u>$&</u>'));
|
107 |
+
SsasDiv.append(link);
|
108 |
+
}
|
109 |
+
}else{
|
110 |
+
SsasDiv.append(jQuery('<span/>').text(WsalData.tr8n.searchnone));
|
111 |
+
}
|
112 |
+
SsasDiv.prepend(jQuery('<a href="javascript:;" onclick="WsalSsasChange(0)" class="allsites"/>').text(WsalData.tr8n.searchback));
|
113 |
+
SsasDiv.show();
|
114 |
+
}, 'json');
|
115 |
+
SsasInp.attr('data-oldvalue', SsasVal);
|
116 |
+
}
|
117 |
+
|
118 |
+
// handle keys
|
119 |
+
});
|
120 |
+
SsasInps.blur(function(){
|
121 |
+
setTimeout(function(){
|
122 |
+
var SsasInp = jQuery(this);
|
123 |
+
var SsasDiv = SsasInp.next();
|
124 |
+
SsasInp.attr('data-oldvalue', '');
|
125 |
+
SsasDiv.hide();
|
126 |
+
}, 200);
|
127 |
+
});
|
128 |
+
}
|
129 |
+
|
130 |
+
function WsalSsasChange(value){
|
131 |
+
jQuery('div.wsal-ssas-dd').hide();
|
132 |
+
jQuery('input.wsal-ssas').attr('disabled', true);
|
133 |
+
jQuery('#wsal-cbid').val(value);
|
134 |
+
jQuery('#audit-log-viewer').submit();
|
135 |
+
}
|
js/common.js
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
jQuery(document).ready(function(){
|
3 |
+
jQuery('a.wsal-dismiss-notification').click(function(){
|
4 |
+
var nfe = jQuery(this).parents('div:first');
|
5 |
+
var nfn = nfe.attr('data-notice-name');
|
6 |
+
jQuery.ajax({
|
7 |
+
type: 'POST',
|
8 |
+
url: ajaxurl,
|
9 |
+
async: false,
|
10 |
+
data: { action: 'AjaxDismissNotice', notice: nfn }
|
11 |
+
});
|
12 |
+
nfe.fadeOut();
|
13 |
+
});
|
14 |
+
});
|
js/nice_r.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
-
function nice_r_toggle(pfx, id){
|
2 |
-
var el = document.getElementById(pfx+'_v'+id);
|
3 |
-
if(el){
|
4 |
-
if(el.style.display==='block'){
|
5 |
-
el.style.display = 'none';
|
6 |
-
document.getElementById(pfx+'_a'+id).innerHTML = '►';
|
7 |
-
}else{
|
8 |
-
el.style.display = 'block';
|
9 |
-
document.getElementById(pfx+'_a'+id).innerHTML = '▼';
|
10 |
-
}
|
11 |
-
}
|
12 |
}
|
1 |
+
function nice_r_toggle(pfx, id){
|
2 |
+
var el = document.getElementById(pfx+'_v'+id);
|
3 |
+
if(el){
|
4 |
+
if(el.style.display==='block'){
|
5 |
+
el.style.display = 'none';
|
6 |
+
document.getElementById(pfx+'_a'+id).innerHTML = '►';
|
7 |
+
}else{
|
8 |
+
el.style.display = 'block';
|
9 |
+
document.getElementById(pfx+'_a'+id).innerHTML = '▼';
|
10 |
+
}
|
11 |
+
}
|
12 |
}
|
js/settings.js
CHANGED
@@ -1,49 +1,49 @@
|
|
1 |
-
jQuery(document).ready(function(){
|
2 |
-
var RemoveSecToken = function(){
|
3 |
-
var $this = jQuery(this).parents('span:first');
|
4 |
-
$this.addClass('sectoken-del').fadeOut('fast', function(){
|
5 |
-
$this.remove();
|
6 |
-
});
|
7 |
-
};
|
8 |
-
|
9 |
-
jQuery('#ViewerQueryBox, #EditorQueryBox').keydown(function(event){
|
10 |
-
if(event.keyCode === 13) {
|
11 |
-
var type = jQuery(this).attr('id').substr(0, 6);
|
12 |
-
jQuery('#'+type+'QueryAdd').click();
|
13 |
-
return false;
|
14 |
-
}
|
15 |
-
});
|
16 |
-
|
17 |
-
jQuery('#ViewerQueryAdd, #EditorQueryAdd').click(function(){
|
18 |
-
var type = jQuery(this).attr('id').substr(0, 6);
|
19 |
-
var value = jQuery.trim(jQuery('#'+type+'QueryBox').val());
|
20 |
-
var existing = jQuery('#'+type+'List input').filter(function() { return this.value === value; });
|
21 |
-
|
22 |
-
if(!value || existing.length)return; // if value is empty or already used, stop here
|
23 |
-
|
24 |
-
jQuery('#'+type+'QueryBox, #'+type+'QueryAdd').attr('disabled', true);
|
25 |
-
jQuery.post(jQuery('#ajaxurl').val(), {action: 'AjaxCheckSecurityToken', token: value}, function(data){
|
26 |
-
jQuery('#'+type+'QueryBox, #'+type+'QueryAdd').attr('disabled', false);
|
27 |
-
if(data==='other' && !confirm('The specified token is not a user nor a role, do you still want to add it?'))return;
|
28 |
-
jQuery('#'+type+'QueryBox').val('');
|
29 |
-
jQuery('#'+type+'List').append(jQuery('<span class="sectoken-'+data+'"/>').text(value).append(
|
30 |
-
jQuery('<input type="hidden" name="'+type+'s[]"/>').val(value),
|
31 |
-
jQuery('<a href="javascript:;" title="Remove">×</a>').click(RemoveSecToken)
|
32 |
-
));
|
33 |
-
});
|
34 |
-
});
|
35 |
-
|
36 |
-
jQuery('#ViewerList>span>a, #EditorList>span>a').click(RemoveSecToken);
|
37 |
-
|
38 |
-
jQuery('#RestrictAdmins').change(function(){
|
39 |
-
var user = jQuery('#RestrictAdminsDefaultUser').val();
|
40 |
-
var fltr = function() { return this.value === user; };
|
41 |
-
if (this.checked && jQuery('#EditorList input').filter(fltr).length === 0) {
|
42 |
-
jQuery('#EditorList').append(
|
43 |
-
jQuery('<span class="sectoken-user"/>').text(user)
|
44 |
-
.prepend(jQuery('<input type="hidden" name="Editors[]"/>').val(user))
|
45 |
-
.append(jQuery('<a href="javascript:;" title="Remove">×</a>').click(RemoveSecToken))
|
46 |
-
);
|
47 |
-
}
|
48 |
-
});
|
49 |
});
|
1 |
+
jQuery(document).ready(function(){
|
2 |
+
var RemoveSecToken = function(){
|
3 |
+
var $this = jQuery(this).parents('span:first');
|
4 |
+
$this.addClass('sectoken-del').fadeOut('fast', function(){
|
5 |
+
$this.remove();
|
6 |
+
});
|
7 |
+
};
|
8 |
+
|
9 |
+
jQuery('#ViewerQueryBox, #EditorQueryBox').keydown(function(event){
|
10 |
+
if(event.keyCode === 13) {
|
11 |
+
var type = jQuery(this).attr('id').substr(0, 6);
|
12 |
+
jQuery('#'+type+'QueryAdd').click();
|
13 |
+
return false;
|
14 |
+
}
|
15 |
+
});
|
16 |
+
|
17 |
+
jQuery('#ViewerQueryAdd, #EditorQueryAdd').click(function(){
|
18 |
+
var type = jQuery(this).attr('id').substr(0, 6);
|
19 |
+
var value = jQuery.trim(jQuery('#'+type+'QueryBox').val());
|
20 |
+
var existing = jQuery('#'+type+'List input').filter(function() { return this.value === value; });
|
21 |
+
|
22 |
+
if(!value || existing.length)return; // if value is empty or already used, stop here
|
23 |
+
|
24 |
+
jQuery('#'+type+'QueryBox, #'+type+'QueryAdd').attr('disabled', true);
|
25 |
+
jQuery.post(jQuery('#ajaxurl').val(), {action: 'AjaxCheckSecurityToken', token: value}, function(data){
|
26 |
+
jQuery('#'+type+'QueryBox, #'+type+'QueryAdd').attr('disabled', false);
|
27 |
+
if(data==='other' && !confirm('The specified token is not a user nor a role, do you still want to add it?'))return;
|
28 |
+
jQuery('#'+type+'QueryBox').val('');
|
29 |
+
jQuery('#'+type+'List').append(jQuery('<span class="sectoken-'+data+'"/>').text(value).append(
|
30 |
+
jQuery('<input type="hidden" name="'+type+'s[]"/>').val(value),
|
31 |
+
jQuery('<a href="javascript:;" title="Remove">×</a>').click(RemoveSecToken)
|
32 |
+
));
|
33 |
+
});
|
34 |
+
});
|
35 |
+
|
36 |
+
jQuery('#ViewerList>span>a, #EditorList>span>a').click(RemoveSecToken);
|
37 |
+
|
38 |
+
jQuery('#RestrictAdmins').change(function(){
|
39 |
+
var user = jQuery('#RestrictAdminsDefaultUser').val();
|
40 |
+
var fltr = function() { return this.value === user; };
|
41 |
+
if (this.checked && jQuery('#EditorList input').filter(fltr).length === 0) {
|
42 |
+
jQuery('#EditorList').append(
|
43 |
+
jQuery('<span class="sectoken-user"/>').text(user)
|
44 |
+
.prepend(jQuery('<input type="hidden" name="Editors[]"/>').val(user))
|
45 |
+
.append(jQuery('<a href="javascript:;" title="Remove">×</a>').click(RemoveSecToken))
|
46 |
+
);
|
47 |
+
}
|
48 |
+
});
|
49 |
});
|
languages/wp-security-audit-log-de_DE.mo
CHANGED
Binary file
|
languages/wp-security-audit-log-it_IT.mo
CHANGED
Binary file
|
languages/wp-security-audit-log.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the WP Security Audit Log package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WP Security Audit Log 1.2.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-security-audit-log\n"
|
7 |
-
"POT-Creation-Date: 2014-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -12,6 +12,74 @@ msgstr ""
|
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
#: classes/Sensors/Content.php:326 classes/Sensors/Content.php:334
|
16 |
msgid "Password Protected"
|
17 |
msgstr ""
|
@@ -105,25 +173,25 @@ msgstr ""
|
|
105 |
msgid "and much more…"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/Views/About.php:56 classes/Views/Help.php:
|
109 |
msgid "WP Password Policy Manager"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: classes/Views/About.php:59 classes/Views/Help.php:
|
113 |
msgid ""
|
114 |
"Easily configure WordPress password policies and ensure users use strong "
|
115 |
"passwords with our plugin WP Password Policy Manager."
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: classes/Views/About.php:61 classes/Views/Help.php:
|
119 |
msgid "Download"
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: classes/Views/About.php:65 classes/Views/Help.php:
|
123 |
msgid "WP Security Audit Log in your Language!"
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: classes/Views/About.php:67 classes/Views/Help.php:
|
127 |
msgid ""
|
128 |
"If you are interested in translating our plugin please drop us an email on"
|
129 |
msgstr ""
|
@@ -136,131 +204,180 @@ msgstr ""
|
|
136 |
msgid "Professional WordPress security services provided by WP White Security"
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: classes/Views/AuditLog.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
msgid "Audit Log Viewer"
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: classes/Views/AuditLog.php:
|
144 |
#: classes/Views/Settings.php:80 classes/Views/ToggleAlerts.php:29
|
145 |
msgid "You do not have sufficient permissions to access this page."
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: classes/Views/AuditLog.php:
|
149 |
msgid "Please enter the number of alerts you would like to see on one page:"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: classes/Views/AuditLog.php:
|
153 |
-
msgid "
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: classes/Views/
|
157 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
msgstr ""
|
159 |
|
160 |
#: classes/Views/Help.php:6 classes/Views/Help.php:14
|
161 |
-
#: classes/Views/Help.php:25
|
162 |
msgid "Help"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: classes/Views/Help.php:
|
166 |
msgid "Plugin Support"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: classes/Views/Help.php:
|
170 |
msgid ""
|
171 |
"Have you encountered or noticed any issues while using WP Security Audit Log "
|
172 |
"plugin?"
|
173 |
msgstr ""
|
174 |
|
175 |
-
#: classes/Views/Help.php:
|
176 |
msgid ""
|
177 |
"Or you want to report something to us? Click any of the options below to "
|
178 |
"post on the plugin's forum or contact our support directly."
|
179 |
msgstr ""
|
180 |
|
181 |
-
#: classes/Views/Help.php:
|
182 |
msgid "Free Support Forum"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: classes/Views/Help.php:
|
186 |
msgid "Free Support Email"
|
187 |
msgstr ""
|
188 |
|
189 |
-
#: classes/Views/Help.php:
|
190 |
msgid "Plugin Documentation"
|
191 |
msgstr ""
|
192 |
|
193 |
-
#: classes/Views/Help.php:
|
194 |
msgid ""
|
195 |
"For more detailed information about WP Security Audit Log you can visit the "
|
196 |
"official plugin page."
|
197 |
msgstr ""
|
198 |
|
199 |
-
#: classes/Views/Help.php:
|
200 |
msgid ""
|
201 |
"You can also visit the official list of WordPress Security Alerts for more "
|
202 |
"information about all of the activity you can monitor with WP Security Audit "
|
203 |
"Log."
|
204 |
msgstr ""
|
205 |
|
206 |
-
#: classes/Views/Help.php:
|
207 |
msgid "Official Plugin Page"
|
208 |
msgstr ""
|
209 |
|
210 |
-
#: classes/Views/Help.php:
|
211 |
msgid "List of WordPress Security Alerts"
|
212 |
msgstr ""
|
213 |
|
214 |
-
#: classes/Views/Help.php:
|
215 |
msgid "Need Help Securing WordPress?"
|
216 |
msgstr ""
|
217 |
|
218 |
-
#: classes/Views/Help.php:
|
219 |
msgid "Is your WordPress website hackable?"
|
220 |
msgstr ""
|
221 |
|
222 |
-
#: classes/Views/Help.php:
|
223 |
msgid ""
|
224 |
"If you are not sure contact our WordPress security professionals to audit "
|
225 |
"your WordPress or to simply secure your WordPress website."
|
226 |
msgstr ""
|
227 |
|
228 |
-
#: classes/Views/Help.php:
|
229 |
msgid "Click on any of the below service buttons for more information."
|
230 |
msgstr ""
|
231 |
|
232 |
-
#: classes/Views/Help.php:
|
233 |
msgid "WordPress Security Hardening"
|
234 |
msgstr ""
|
235 |
|
236 |
-
#: classes/Views/Help.php:
|
237 |
msgid "WordPress Security Audit"
|
238 |
msgstr ""
|
239 |
|
240 |
-
#: classes/Views/Help.php:
|
241 |
msgid "WordPress Security Readings"
|
242 |
msgstr ""
|
243 |
|
244 |
-
#: classes/Views/Help.php:
|
245 |
msgid "New to WordPress security?"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: classes/Views/Help.php:
|
249 |
msgid "Do not know from where to start or which is the best services for you?"
|
250 |
msgstr ""
|
251 |
|
252 |
-
#: classes/Views/Help.php:
|
253 |
msgid ""
|
254 |
"Visit our WordPress security blog or the WordPress Security category "
|
255 |
"directly for more information and a number of tips and tricks about "
|
256 |
"WordPress security."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: classes/Views/Help.php:
|
260 |
msgid "WP White Security Blog"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: classes/Views/Help.php:
|
264 |
msgid "WordPress Security Category"
|
265 |
msgstr ""
|
266 |
|
@@ -291,11 +408,11 @@ msgid "Inactive"
|
|
291 |
msgstr ""
|
292 |
|
293 |
#: classes/Views/Sandbox.php:11 classes/Views/Sandbox.php:19
|
294 |
-
#: classes/Views/Settings.php:
|
295 |
msgid "Sandbox"
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: classes/Views/Sandbox.php:
|
299 |
msgid "Ready."
|
300 |
msgstr ""
|
301 |
|
@@ -307,75 +424,79 @@ msgstr ""
|
|
307 |
msgid "Security Alerts Pruning"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: classes/Views/Settings.php:101
|
311 |
msgid "(eg: 1 month)"
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: classes/Views/Settings.php:
|
315 |
-
msgid "
|
316 |
msgstr ""
|
317 |
|
318 |
#: classes/Views/Settings.php:113
|
|
|
|
|
|
|
|
|
319 |
msgid "(eg: 80)"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: classes/Views/Settings.php:
|
323 |
msgid "Keep up to"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: classes/Views/Settings.php:
|
327 |
msgid "alerts"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: classes/Views/Settings.php:
|
331 |
msgid "Next Scheduled Cleanup is in "
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: classes/Views/Settings.php:
|
335 |
msgid "(or %s)"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: classes/Views/Settings.php:
|
339 |
msgid "Run Manually"
|
340 |
msgstr ""
|
341 |
|
342 |
-
#: classes/Views/Settings.php:
|
343 |
msgid "Alerts Dashboard Widget"
|
344 |
msgstr ""
|
345 |
|
346 |
-
#: classes/Views/Settings.php:
|
347 |
msgid "On"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: classes/Views/Settings.php:
|
351 |
msgid "Off"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: classes/Views/Settings.php:
|
355 |
msgid "Display a dashboard widget with the latest %d security alerts."
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: classes/Views/Settings.php:
|
359 |
msgid "Can View Alerts"
|
360 |
msgstr ""
|
361 |
|
362 |
-
#: classes/Views/Settings.php:
|
363 |
msgid "Users and Roles in this list can view the security alerts"
|
364 |
msgstr ""
|
365 |
|
366 |
-
#: classes/Views/Settings.php:
|
367 |
msgid "Can Manage Plugin"
|
368 |
msgstr ""
|
369 |
|
370 |
-
#: classes/Views/Settings.php:
|
371 |
msgid "Users and Roles in this list can manage the plugin settings"
|
372 |
msgstr ""
|
373 |
|
374 |
-
#: classes/Views/Settings.php:
|
375 |
msgid "Restrict Plugin Access"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: classes/Views/Settings.php:
|
379 |
msgid ""
|
380 |
"By default all the administrators on this WordPress have access to manage "
|
381 |
"this plugin.<br/>By enabling this option only the users specified in the two "
|
@@ -383,78 +504,78 @@ msgid ""
|
|
383 |
"this plugin."
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: classes/Views/Settings.php:
|
387 |
msgid "Refresh Audit View"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: classes/Views/Settings.php:
|
391 |
msgid "Automatic"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: classes/Views/Settings.php:
|
395 |
msgid "Refresh Audit View as soon as there are new events."
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: classes/Views/Settings.php:
|
399 |
msgid "Manual"
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: classes/Views/Settings.php:
|
403 |
msgid "Refresh Audit View only when page is reloaded."
|
404 |
msgstr ""
|
405 |
|
406 |
-
#: classes/Views/Settings.php:
|
407 |
msgid "Developer Options"
|
408 |
msgstr ""
|
409 |
|
410 |
-
#: classes/Views/Settings.php:
|
411 |
msgid ""
|
412 |
"Only enable these options on testing, staging and development websites. "
|
413 |
"Enabling any of the settings below on LIVE websites may cause unintended "
|
414 |
"side-effects including degraded performance."
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: classes/Views/Settings.php:
|
418 |
msgid "Data Inspector"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: classes/Views/Settings.php:
|
422 |
msgid "View data logged for each triggered alert."
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: classes/Views/Settings.php:
|
426 |
msgid "PHP Errors"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: classes/Views/Settings.php:
|
430 |
msgid "Enables sensor for alerts generated from PHP."
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: classes/Views/Settings.php:
|
434 |
msgid "Request Log"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: classes/Views/Settings.php:
|
438 |
msgid "Enables logging request to file."
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: classes/Views/Settings.php:
|
442 |
msgid "Enables sandbox for testing PHP code."
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: classes/Views/Settings.php:
|
446 |
msgid "Backtrace"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: classes/Views/Settings.php:
|
450 |
msgid "Log full backtrace for PHP-generated alerts."
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: classes/Views/Settings.php:
|
454 |
msgid "Hide Plugin from Plugins Page"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: classes/Views/Settings.php:
|
458 |
msgid "Hide"
|
459 |
msgstr ""
|
460 |
|
@@ -462,14 +583,6 @@ msgstr ""
|
|
462 |
msgid "Enable/Disable Alerts"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: classes/Views/ToggleAlerts.php:69
|
466 |
-
msgid "Code"
|
467 |
-
msgstr ""
|
468 |
-
|
469 |
-
#: classes/Views/ToggleAlerts.php:70
|
470 |
-
msgid "Type"
|
471 |
-
msgstr ""
|
472 |
-
|
473 |
#: classes/Views/ToggleAlerts.php:71 classes/WidgetManager.php:38
|
474 |
msgid "Description"
|
475 |
msgstr ""
|
@@ -1521,7 +1634,7 @@ msgid ""
|
|
1521 |
">get_template_directory%"
|
1522 |
msgstr ""
|
1523 |
|
1524 |
-
#: wp-security-audit-log.php:
|
1525 |
msgid ""
|
1526 |
"You are using a version of PHP that is older than %s, which is no longer "
|
1527 |
"supported.<br/>Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
|
2 |
# This file is distributed under the same license as the WP Security Audit Log package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WP Security Audit Log 1.2.8\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-security-audit-log\n"
|
7 |
+
"POT-Creation-Date: 2014-10-20 10:29:58+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
+
#: classes/AuditLogListView.php:29
|
16 |
+
msgid "No events so far."
|
17 |
+
msgstr ""
|
18 |
+
|
19 |
+
#: classes/AuditLogListView.php:34
|
20 |
+
msgid "Other"
|
21 |
+
msgstr ""
|
22 |
+
|
23 |
+
#: classes/AuditLogListView.php:41
|
24 |
+
msgid "Show "
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: classes/AuditLogListView.php:51
|
28 |
+
msgid " Items"
|
29 |
+
msgstr ""
|
30 |
+
|
31 |
+
#: classes/AuditLogListView.php:64 classes/Views/AuditLog.php:85
|
32 |
+
msgid "All Sites"
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: classes/AuditLogListView.php:113 classes/Views/ToggleAlerts.php:69
|
36 |
+
msgid "Code"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: classes/AuditLogListView.php:114 classes/Views/ToggleAlerts.php:70
|
40 |
+
msgid "Type"
|
41 |
+
msgstr ""
|
42 |
+
|
43 |
+
#: classes/AuditLogListView.php:115
|
44 |
+
msgid "Date"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: classes/AuditLogListView.php:116
|
48 |
+
msgid "Username"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: classes/AuditLogListView.php:117
|
52 |
+
msgid "Source IP"
|
53 |
+
msgstr ""
|
54 |
+
|
55 |
+
#: classes/AuditLogListView.php:120
|
56 |
+
msgid "Site"
|
57 |
+
msgstr ""
|
58 |
+
|
59 |
+
#: classes/AuditLogListView.php:122
|
60 |
+
msgid "Message"
|
61 |
+
msgstr ""
|
62 |
+
|
63 |
+
#: classes/AuditLogListView.php:151
|
64 |
+
msgid "Click to toggle."
|
65 |
+
msgstr ""
|
66 |
+
|
67 |
+
#: classes/AuditLogListView.php:157
|
68 |
+
msgid "Unknown error code."
|
69 |
+
msgstr ""
|
70 |
+
|
71 |
+
#: classes/AuditLogListView.php:178 classes/AuditLogListView.php:181
|
72 |
+
msgid "Unknown"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: classes/AuditLogListView.php:182
|
76 |
+
msgid "System"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: classes/AuditLogListView.php:195
|
80 |
+
msgid "Alert Data Inspector"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
#: classes/Sensors/Content.php:326 classes/Sensors/Content.php:334
|
84 |
msgid "Password Protected"
|
85 |
msgstr ""
|
173 |
msgid "and much more…"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: classes/Views/About.php:56 classes/Views/Help.php:79
|
177 |
msgid "WP Password Policy Manager"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: classes/Views/About.php:59 classes/Views/Help.php:82
|
181 |
msgid ""
|
182 |
"Easily configure WordPress password policies and ensure users use strong "
|
183 |
"passwords with our plugin WP Password Policy Manager."
|
184 |
msgstr ""
|
185 |
|
186 |
+
#: classes/Views/About.php:61 classes/Views/Help.php:84
|
187 |
msgid "Download"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: classes/Views/About.php:65 classes/Views/Help.php:88
|
191 |
msgid "WP Security Audit Log in your Language!"
|
192 |
msgstr ""
|
193 |
|
194 |
+
#: classes/Views/About.php:67 classes/Views/Help.php:90
|
195 |
msgid ""
|
196 |
"If you are interested in translating our plugin please drop us an email on"
|
197 |
msgstr ""
|
204 |
msgid "Professional WordPress security services provided by WP White Security"
|
205 |
msgstr ""
|
206 |
|
207 |
+
#: classes/Views/AuditLog.php:25
|
208 |
+
msgid "Get notified instantly via email of important changes on your WordPress"
|
209 |
+
msgstr ""
|
210 |
+
|
211 |
+
#: classes/Views/AuditLog.php:28
|
212 |
+
msgid "Learn More"
|
213 |
+
msgstr ""
|
214 |
+
|
215 |
+
#: classes/Views/AuditLog.php:29
|
216 |
+
msgid "Dismiss this notice"
|
217 |
+
msgstr ""
|
218 |
+
|
219 |
+
#: classes/Views/AuditLog.php:40 classes/Views/AuditLog.php:50
|
220 |
msgid "Audit Log Viewer"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: classes/Views/AuditLog.php:64 classes/Views/Licensing.php:34
|
224 |
#: classes/Views/Settings.php:80 classes/Views/ToggleAlerts.php:29
|
225 |
msgid "You do not have sufficient permissions to access this page."
|
226 |
msgstr ""
|
227 |
|
228 |
+
#: classes/Views/AuditLog.php:84
|
229 |
msgid "Please enter the number of alerts you would like to see on one page:"
|
230 |
msgstr ""
|
231 |
|
232 |
+
#: classes/Views/AuditLog.php:86
|
233 |
+
msgid "No Results"
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: classes/Views/Extensions.php:6
|
237 |
+
msgid "WP Security Audit Log Functionality Extensions"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: classes/Views/Extensions.php:14
|
241 |
+
msgid "Extensions"
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: classes/Views/Extensions.php:27
|
245 |
+
msgid "Extend the functionality of your WP Security Audit Log plugin"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: classes/Views/Extensions.php:28
|
249 |
+
msgid ""
|
250 |
+
"Below is a list of extensions that allow you to extend the functionality of "
|
251 |
+
"WP Security Audit Log plugin for a much better auditing and monitoring "
|
252 |
+
"experience."
|
253 |
+
msgstr ""
|
254 |
+
|
255 |
+
#: classes/Views/Extensions.php:32
|
256 |
+
msgid "Notifications Extension"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: classes/Views/Extensions.php:33
|
260 |
+
msgid ""
|
261 |
+
"Get notified instantly via email when important changes are made on your "
|
262 |
+
"WordPress!"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: classes/Views/Extensions.php:34
|
266 |
+
msgid ""
|
267 |
+
"The Notifications Extension allows you to easily configure rules to receive "
|
268 |
+
"an email when there is a change on WordPress. You do not need manually "
|
269 |
+
"browse through the Audit Lock viewer anymore when looking for a specific "
|
270 |
+
"change and the good thing is that you will be instantly alerted when it "
|
271 |
+
"happens!"
|
272 |
+
msgstr ""
|
273 |
+
|
274 |
+
#: classes/Views/Extensions.php:35
|
275 |
+
msgid "More Information"
|
276 |
msgstr ""
|
277 |
|
278 |
#: classes/Views/Help.php:6 classes/Views/Help.php:14
|
|
|
279 |
msgid "Help"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: classes/Views/Help.php:27
|
283 |
msgid "Plugin Support"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: classes/Views/Help.php:29
|
287 |
msgid ""
|
288 |
"Have you encountered or noticed any issues while using WP Security Audit Log "
|
289 |
"plugin?"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: classes/Views/Help.php:30
|
293 |
msgid ""
|
294 |
"Or you want to report something to us? Click any of the options below to "
|
295 |
"post on the plugin's forum or contact our support directly."
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: classes/Views/Help.php:32
|
299 |
msgid "Free Support Forum"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: classes/Views/Help.php:34
|
303 |
msgid "Free Support Email"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: classes/Views/Help.php:39
|
307 |
msgid "Plugin Documentation"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: classes/Views/Help.php:41
|
311 |
msgid ""
|
312 |
"For more detailed information about WP Security Audit Log you can visit the "
|
313 |
"official plugin page."
|
314 |
msgstr ""
|
315 |
|
316 |
+
#: classes/Views/Help.php:42
|
317 |
msgid ""
|
318 |
"You can also visit the official list of WordPress Security Alerts for more "
|
319 |
"information about all of the activity you can monitor with WP Security Audit "
|
320 |
"Log."
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: classes/Views/Help.php:44
|
324 |
msgid "Official Plugin Page"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: classes/Views/Help.php:46
|
328 |
msgid "List of WordPress Security Alerts"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: classes/Views/Help.php:51
|
332 |
msgid "Need Help Securing WordPress?"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: classes/Views/Help.php:53
|
336 |
msgid "Is your WordPress website hackable?"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: classes/Views/Help.php:54
|
340 |
msgid ""
|
341 |
"If you are not sure contact our WordPress security professionals to audit "
|
342 |
"your WordPress or to simply secure your WordPress website."
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: classes/Views/Help.php:55
|
346 |
msgid "Click on any of the below service buttons for more information."
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: classes/Views/Help.php:57
|
350 |
msgid "WordPress Security Hardening"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: classes/Views/Help.php:59
|
354 |
msgid "WordPress Security Audit"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: classes/Views/Help.php:64
|
358 |
msgid "WordPress Security Readings"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: classes/Views/Help.php:66
|
362 |
msgid "New to WordPress security?"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: classes/Views/Help.php:67
|
366 |
msgid "Do not know from where to start or which is the best services for you?"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: classes/Views/Help.php:68
|
370 |
msgid ""
|
371 |
"Visit our WordPress security blog or the WordPress Security category "
|
372 |
"directly for more information and a number of tips and tricks about "
|
373 |
"WordPress security."
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: classes/Views/Help.php:70
|
377 |
msgid "WP White Security Blog"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: classes/Views/Help.php:72
|
381 |
msgid "WordPress Security Category"
|
382 |
msgstr ""
|
383 |
|
408 |
msgstr ""
|
409 |
|
410 |
#: classes/Views/Sandbox.php:11 classes/Views/Sandbox.php:19
|
411 |
+
#: classes/Views/Settings.php:272
|
412 |
msgid "Sandbox"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: classes/Views/Sandbox.php:198
|
416 |
msgid "Ready."
|
417 |
msgstr ""
|
418 |
|
424 |
msgid "Security Alerts Pruning"
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: classes/Views/Settings.php:101 classes/Views/Settings.php:109
|
428 |
msgid "(eg: 1 month)"
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: classes/Views/Settings.php:105
|
432 |
+
msgid "None"
|
433 |
msgstr ""
|
434 |
|
435 |
#: classes/Views/Settings.php:113
|
436 |
+
msgid "Delete alerts older than"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: classes/Views/Settings.php:121
|
440 |
msgid "(eg: 80)"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: classes/Views/Settings.php:125
|
444 |
msgid "Keep up to"
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: classes/Views/Settings.php:130
|
448 |
msgid "alerts"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: classes/Views/Settings.php:134
|
452 |
msgid "Next Scheduled Cleanup is in "
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: classes/Views/Settings.php:138
|
456 |
msgid "(or %s)"
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: classes/Views/Settings.php:139
|
460 |
msgid "Run Manually"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: classes/Views/Settings.php:145
|
464 |
msgid "Alerts Dashboard Widget"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: classes/Views/Settings.php:151
|
468 |
msgid "On"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: classes/Views/Settings.php:156
|
472 |
msgid "Off"
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: classes/Views/Settings.php:161
|
476 |
msgid "Display a dashboard widget with the latest %d security alerts."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: classes/Views/Settings.php:169
|
480 |
msgid "Can View Alerts"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: classes/Views/Settings.php:176
|
484 |
msgid "Users and Roles in this list can view the security alerts"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: classes/Views/Settings.php:191
|
488 |
msgid "Can Manage Plugin"
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: classes/Views/Settings.php:198
|
492 |
msgid "Users and Roles in this list can manage the plugin settings"
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: classes/Views/Settings.php:213
|
496 |
msgid "Restrict Plugin Access"
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: classes/Views/Settings.php:221
|
500 |
msgid ""
|
501 |
"By default all the administrators on this WordPress have access to manage "
|
502 |
"this plugin.<br/>By enabling this option only the users specified in the two "
|
504 |
"this plugin."
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: classes/Views/Settings.php:228
|
508 |
msgid "Refresh Audit View"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: classes/Views/Settings.php:234
|
512 |
msgid "Automatic"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: classes/Views/Settings.php:236
|
516 |
msgid "Refresh Audit View as soon as there are new events."
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: classes/Views/Settings.php:240
|
520 |
msgid "Manual"
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: classes/Views/Settings.php:242
|
524 |
msgid "Refresh Audit View only when page is reloaded."
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: classes/Views/Settings.php:248
|
528 |
msgid "Developer Options"
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: classes/Views/Settings.php:256
|
532 |
msgid ""
|
533 |
"Only enable these options on testing, staging and development websites. "
|
534 |
"Enabling any of the settings below on LIVE websites may cause unintended "
|
535 |
"side-effects including degraded performance."
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: classes/Views/Settings.php:260
|
539 |
msgid "Data Inspector"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: classes/Views/Settings.php:261
|
543 |
msgid "View data logged for each triggered alert."
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: classes/Views/Settings.php:264
|
547 |
msgid "PHP Errors"
|
548 |
msgstr ""
|
549 |
|
550 |
+
#: classes/Views/Settings.php:265
|
551 |
msgid "Enables sensor for alerts generated from PHP."
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: classes/Views/Settings.php:268
|
555 |
msgid "Request Log"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: classes/Views/Settings.php:269
|
559 |
msgid "Enables logging request to file."
|
560 |
msgstr ""
|
561 |
|
562 |
+
#: classes/Views/Settings.php:273
|
563 |
msgid "Enables sandbox for testing PHP code."
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: classes/Views/Settings.php:276
|
567 |
msgid "Backtrace"
|
568 |
msgstr ""
|
569 |
|
570 |
+
#: classes/Views/Settings.php:277
|
571 |
msgid "Log full backtrace for PHP-generated alerts."
|
572 |
msgstr ""
|
573 |
|
574 |
+
#: classes/Views/Settings.php:295
|
575 |
msgid "Hide Plugin from Plugins Page"
|
576 |
msgstr ""
|
577 |
|
578 |
+
#: classes/Views/Settings.php:301
|
579 |
msgid "Hide"
|
580 |
msgstr ""
|
581 |
|
583 |
msgid "Enable/Disable Alerts"
|
584 |
msgstr ""
|
585 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
586 |
#: classes/Views/ToggleAlerts.php:71 classes/WidgetManager.php:38
|
587 |
msgid "Description"
|
588 |
msgstr ""
|
1634 |
">get_template_directory%"
|
1635 |
msgstr ""
|
1636 |
|
1637 |
+
#: wp-security-audit-log.php:193
|
1638 |
msgid ""
|
1639 |
"You are using a version of PHP that is older than %s, which is no longer "
|
1640 |
"supported.<br/>Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
|
readme.txt
CHANGED
@@ -4,15 +4,22 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=payme
|
|
4 |
Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
|
5 |
License: GPLv3
|
6 |
License URI: http://www.gnu.org/licenses/gpl.html
|
7 |
-
Tags: wordpress security plugin, wordpress security audit log, audit log, wordpress log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, security audit trail, wordpress security alerts, wordpress monitor, wordpress security monitor, wordpress admin, wordpress admin monitoring, analytics, activity, admin, multisite, wordpress multisite
|
8 |
Requires at least: 3.6
|
9 |
-
Tested up to: 4
|
10 |
-
Stable tag: 1.2.
|
11 |
|
12 |
Identify WordPress issues before they become a security problem by keeping an audit log of users and all of the under the hood WordPress activity.
|
13 |
|
14 |
== Description ==
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
= Keep A WordPress Security Audit Log & Identify WordPress Security Issues =
|
18 |
WP Security Audit Log keeps a log of everything happening on your WordPress blog or website and WordPress multisite network. By using WP Security Audit Log security plugin it is very easy to track suspicious user activity before it becomes a problem or a security issue. A security alert is generated by the plugin when:
|
@@ -50,6 +57,11 @@ If you own a multi user WordPress blog or website, or a WordPress multisite netw
|
|
50 |
|
51 |
Refer to the complete list of [WordPress Security Audit Alerts](http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/) for more information on what other WordPress user activity can be monitored with the WP Security Audit Log WordPress plugin.
|
52 |
|
|
|
|
|
|
|
|
|
|
|
53 |
= WP Security Audit Log for WordPress Multisite =
|
54 |
WP Security Audit Log is the first tracking and audit WordPress security monitoring plugin that supports WordPress multisite network installations and can monitor activity on such WordPress multisite network installations.
|
55 |
|
@@ -70,10 +82,11 @@ NOTE: Developer options should NEVER be enabled on Live websites. They should on
|
|
70 |
= Other Noteworthy Features =
|
71 |
WP Security Audit Log plugin also has a number of features that make WordPress and WordPress multisite monitoring and auditing easier, such as:
|
72 |
|
|
|
73 |
* Limit who can view the security alerts by users or roles
|
74 |
* Limit who can manage the plugin by users or roles
|
75 |
* Configurable WordPress dashboard widget highlighting the most recent critical activity
|
76 |
-
*
|
77 |
* User role is reported in alerts for a complete overview of what is happening
|
78 |
* User avatar is reported in the alerts for better recognizability
|
79 |
* Enable or disable any security alerts
|
@@ -131,6 +144,18 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
|
|
131 |
|
132 |
== Changelog ==
|
133 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
= 1.2.7 (2014-09-26) =
|
135 |
* New Feature
|
136 |
* New option "Restrict Plugin Access" that allows WordPress administrators to further restrict access to the plugin and the WordPress security alerts
|
@@ -200,7 +225,7 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
|
|
200 |
* Italian translation available thanks to [Leonardo Musumeci](http://leonardomusumeci.net/)
|
201 |
|
202 |
* Improvements
|
203 |
-
* Added a warning
|
204 |
* "Hidden" developer options from default settings; user has to click link to access developer settings
|
205 |
* Backtrace logging now made optional from a developer setting
|
206 |
|
4 |
Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
|
5 |
License: GPLv3
|
6 |
License URI: http://www.gnu.org/licenses/gpl.html
|
7 |
+
Tags: wordpress security plugin, wordpress security audit log, audit log, wordpress log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, security audit trail, wordpress security alerts, wordpress monitor, wordpress security monitor, wordpress admin, wordpress admin monitoring, analytics, activity, admin, multisite, wordpress multisite, actions, dashboard, log, notification, wordpress monitoring
|
8 |
Requires at least: 3.6
|
9 |
+
Tested up to: 4.0
|
10 |
+
Stable tag: 1.2.8
|
11 |
|
12 |
Identify WordPress issues before they become a security problem by keeping an audit log of users and all of the under the hood WordPress activity.
|
13 |
|
14 |
== Description ==
|
15 |
+
**Note: This plugin requires PHP 5.3 or higher to be activated because older versions of PHP are no longer maintained by PHP themselves, which make them prone to security issues. For more information or if you need assistance with your version of PHP please get in touch with us by using our [contact form](https://www.wpwhitesecurity.com/contact-wp-white-security/).**
|
16 |
+
|
17 |
+
Keep an audit log and track of everything that is happening on your WordPress and [WordPress multisite](http://www.wpwhitesecurity.com/wordpress-plugins/wp-security-audit-log-plugin-features-wordpress-multisite/) with WP Security Audit Log plugin to ensure user productivity and identify WordPress security issues before they become a security problem. WP Security Audit Log already helps thousands of WordPress administrators, owners and security professionals ensure the security of their websites and blogs. Ensure the security of your WordPress too by installing WP Security Audit Log. The community's favourite security monitoring and auditing plugin and is developed by WordPress Security Consultants and Professionals [WP White Security](http://www.wpwhitesecurity.com/wordpress-security-services/).
|
18 |
+
|
19 |
+
> <strong>Free and Premium Support</strong><br>
|
20 |
+
>
|
21 |
+
> WP White Security provides support for WP Security Audit Log plugin on the WordPress forums for free, though please note that it is free support hence it is not always possible to answer all questions on a timely manner, although we do try.
|
22 |
+
> Personalized premium support is available via email to anyone who purchases the [Notifications Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/), an extension that allows WordPress administrators and owners to be instantly notified of changes on their WordPress via email.
|
23 |
|
24 |
= Keep A WordPress Security Audit Log & Identify WordPress Security Issues =
|
25 |
WP Security Audit Log keeps a log of everything happening on your WordPress blog or website and WordPress multisite network. By using WP Security Audit Log security plugin it is very easy to track suspicious user activity before it becomes a problem or a security issue. A security alert is generated by the plugin when:
|
57 |
|
58 |
Refer to the complete list of [WordPress Security Audit Alerts](http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/) for more information on what other WordPress user activity can be monitored with the WP Security Audit Log WordPress plugin.
|
59 |
|
60 |
+
= Get Notified Instantly of Changes on Your WordPress =
|
61 |
+
<strong>Get notified instantly via email of important changes happening on your blogs and websites running on WordPress and WordPress multisite.</strong>
|
62 |
+
|
63 |
+
Use the [WSAL Notifications Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/) to configure monitoring rules and get notified via email of specific actions. For example you can setup notifications rules to be alerted via email should any WordPress user logs in to your WordPress outside office hours. The email alerts include all the details a WordPress administrator or owner might need, such as the source IP address, user, user role, date, time, details about the actual action and much more.
|
64 |
+
|
65 |
= WP Security Audit Log for WordPress Multisite =
|
66 |
WP Security Audit Log is the first tracking and audit WordPress security monitoring plugin that supports WordPress multisite network installations and can monitor activity on such WordPress multisite network installations.
|
67 |
|
82 |
= Other Noteworthy Features =
|
83 |
WP Security Audit Log plugin also has a number of features that make WordPress and WordPress multisite monitoring and auditing easier, such as:
|
84 |
|
85 |
+
* Realtime Audit Log viewer to watch user activity as it happens without any delays
|
86 |
* Limit who can view the security alerts by users or roles
|
87 |
* Limit who can manage the plugin by users or roles
|
88 |
* Configurable WordPress dashboard widget highlighting the most recent critical activity
|
89 |
+
* Configurable WordPress security alerts pruning rules
|
90 |
* User role is reported in alerts for a complete overview of what is happening
|
91 |
* User avatar is reported in the alerts for better recognizability
|
92 |
* Enable or disable any security alerts
|
144 |
|
145 |
== Changelog ==
|
146 |
|
147 |
+
= 1.2.8 (2014-10-14) =
|
148 |
+
* New Feature
|
149 |
+
* Added new Extensions page to allow users to see which extensions they can use to increase the functionality of the plugin
|
150 |
+
* Included licensing mechanism to support premium extensions
|
151 |
+
|
152 |
+
* Improvements
|
153 |
+
* Updated latest language files for German and Italian translations (also include corrections for some old translations)
|
154 |
+
|
155 |
+
* Bug Fixes
|
156 |
+
* Fixed a problem with the pruning of WordPress Security Alerts [support ticket](https://wordpress.org/support/topic/security-alerts-pruning-not-working-as-intended)
|
157 |
+
* Fixed pagination issue in the Audit Log Viewer when running on WordPress multisite
|
158 |
+
|
159 |
= 1.2.7 (2014-09-26) =
|
160 |
* New Feature
|
161 |
* New option "Restrict Plugin Access" that allows WordPress administrators to further restrict access to the plugin and the WordPress security alerts
|
225 |
* Italian translation available thanks to [Leonardo Musumeci](http://leonardomusumeci.net/)
|
226 |
|
227 |
* Improvements
|
228 |
+
* Added a warning for developer options
|
229 |
* "Hidden" developer options from default settings; user has to click link to access developer settings
|
230 |
* Backtrace logging now made optional from a developer setting
|
231 |
|
wp-security-audit-log.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP Security Audit Log
|
|
4 |
Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
|
5 |
Description: Identify WordPress security issues before they become a problem and keep track of everything happening on your WordPress, including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log will generate a security alert for everything that happens on your WordPress blog or website. Use the Audit Log Viewer included in the plugin to see all the security alerts.
|
6 |
Author: WP White Security
|
7 |
-
Version: 1.2.
|
8 |
Text Domain: wp-security-audit-log
|
9 |
Author URI: http://www.wpwhitesecurity.com/
|
10 |
License: GPL2
|
@@ -134,14 +134,38 @@ class WpSecurityAuditLog {
|
|
134 |
// listen for cleanup event
|
135 |
add_action('wsal_cleanup', array($this, 'CleanUp'));
|
136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
// hide plugin
|
138 |
if($this->settings->IsIncognito())
|
139 |
add_action('admin_head', array($this, 'HidePlugin'));
|
140 |
}
|
141 |
|
142 |
/**
|
143 |
-
*
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
*/
|
146 |
public function Load(){
|
147 |
// load translations
|
@@ -370,8 +394,8 @@ class WpSecurityAuditLog {
|
|
370 |
*/
|
371 |
public function CleanUp(){
|
372 |
$s = $this->profiler->Start('Clean Up');
|
373 |
-
|
374 |
-
|
375 |
$s->Stop();
|
376 |
}
|
377 |
|
4 |
Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
|
5 |
Description: Identify WordPress security issues before they become a problem and keep track of everything happening on your WordPress, including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log will generate a security alert for everything that happens on your WordPress blog or website. Use the Audit Log Viewer included in the plugin to see all the security alerts.
|
6 |
Author: WP White Security
|
7 |
+
Version: 1.2.8
|
8 |
Text Domain: wp-security-audit-log
|
9 |
Author URI: http://www.wpwhitesecurity.com/
|
10 |
License: GPL2
|
134 |
// listen for cleanup event
|
135 |
add_action('wsal_cleanup', array($this, 'CleanUp'));
|
136 |
|
137 |
+
// render wsal header
|
138 |
+
add_action('admin_enqueue_scripts', array($this, 'RenderHeader'));
|
139 |
+
|
140 |
+
// render wsal footer
|
141 |
+
add_action('admin_footer', array($this, 'RenderFooter'));
|
142 |
+
|
143 |
// hide plugin
|
144 |
if($this->settings->IsIncognito())
|
145 |
add_action('admin_head', array($this, 'HidePlugin'));
|
146 |
}
|
147 |
|
148 |
/**
|
149 |
+
* @internal Render plugin stuff in page header.
|
150 |
+
*/
|
151 |
+
public function RenderHeader(){
|
152 |
+
// common.css?
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* @internal Render plugin stuff in page footer.
|
157 |
+
*/
|
158 |
+
public function RenderFooter(){
|
159 |
+
wp_enqueue_script(
|
160 |
+
'wsal-common',
|
161 |
+
$this->GetBaseUrl() . '/js/common.js',
|
162 |
+
array('jquery'),
|
163 |
+
filemtime($this->GetBaseDir() . '/js/common.js')
|
164 |
+
);
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* @internal Load the rest of the system.
|
169 |
*/
|
170 |
public function Load(){
|
171 |
// load translations
|
394 |
*/
|
395 |
public function CleanUp(){
|
396 |
$s = $this->profiler->Start('Clean Up');
|
397 |
+
foreach($this->_cleanup_hooks as $hook)
|
398 |
+
call_user_func($hook);
|
399 |
$s->Stop();
|
400 |
}
|
401 |
|