WP Security Audit Log - Version 1.4

Version Description

(2015-02-24) = * New Features * WordPress username is now reported when a failed login is recorded - More Details * Plugin is now available in Romanian thanks to Artmotion

  • Improvements

    • Improved IP Address validation checks - if IP address format is incorrect the plugin reports "incorrect format" and not "unknown" - This will help us improve troubleshooting
    • Alerts pruning options are now added during activation of the plugin, making pruning options more reliable - existing pruning options will be retained
  • Bug Fixes

    • Fixed issue with the option "auto / manual" refresh of Audit Log Viewer
    • Fixed plugin uninstallation process (added new option to purge all plugin data from WordPress database upon uninstall)
Download this release

Release Info

Developer WPWhiteSecurity
Plugin Icon 128x128 WP Security Audit Log
Version 1.4
Comparing to
See all releases

Code changes from version 1.3.3 to 1.4

classes/DB/ActiveRecord.php CHANGED
@@ -160,9 +160,11 @@ abstract class WSAL_DB_ActiveRecord {
160
  /**
161
  * Remove this ActiveRecord structure into DB.
162
  */
163
- public function Uninstall(){
 
 
164
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
165
- dbDelta($this->_GetUninstallQuery());
166
  }
167
 
168
  /**
@@ -386,7 +388,7 @@ abstract class WSAL_DB_ActiveRecord {
386
  $plugin = WpSecurityAuditLog::GetInstance();
387
  foreach(glob(dirname(__FILE__) . '/*.php') as $file){
388
  $class = $plugin->GetClassFileClassName($file);
389
- if(is_subclass_of($class, __CLASS__)){
390
  $class = new $class();
391
  $class->Uninstall();
392
  }
160
  /**
161
  * Remove this ActiveRecord structure into DB.
162
  */
163
+ public function Uninstall()
164
+ {
165
+ global $wpdb;
166
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
167
+ $wpdb->query($this->_GetUninstallQuery());
168
  }
169
 
170
  /**
388
  $plugin = WpSecurityAuditLog::GetInstance();
389
  foreach(glob(dirname(__FILE__) . '/*.php') as $file){
390
  $class = $plugin->GetClassFileClassName($file);
391
+ if(is_subclass_of($class, __CLASS__)) {
392
  $class = new $class();
393
  $class->Uninstall();
394
  }
classes/Sensors/LogInOut.php CHANGED
@@ -30,8 +30,16 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
30
  ), true);
31
  }
32
  }
 
 
 
 
 
 
 
33
 
34
- const TRANSIENT_FAILEDLOGINS = 'wsal-failedlogins';
 
35
 
36
  protected function GetLoginFailureLogLimit(){
37
  return 10;
@@ -41,17 +49,33 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
41
  return 12 * 60 * 60;
42
  }
43
 
44
- protected function IsPastLoginFailureLimit($ip){
45
- $data = get_transient(self::TRANSIENT_FAILEDLOGINS);
46
- return ($data !== false) && isset($data[$ip]) && ($data[$ip] > $this->GetLoginFailureLogLimit());
 
 
 
 
 
 
47
  }
48
 
49
- protected function IncrementLoginFailure($ip){
50
- $data = get_transient(self::TRANSIENT_FAILEDLOGINS);
51
- if(!$data)$data = array();
52
- if(!isset($data[$ip]))$data[$ip] = 0;
53
- $data[$ip]++;
54
- set_transient(self::TRANSIENT_FAILEDLOGINS, $data, $this->GetLoginFailureExpiration());
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
  public function EventLoginFailure($username){
@@ -62,47 +86,94 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
62
  $tt1 = new WSAL_DB_Occurrence();
63
  $tt2 = new WSAL_DB_Meta();
64
 
65
- if($this->IsPastLoginFailureLimit($ip))return;
66
-
67
- $this->IncrementLoginFailure($ip);
68
-
69
- $occ = WSAL_DB_Occurrence::LoadMultiQuery('
70
- SELECT * FROM `' . $tt1->GetTable() . '`
71
- WHERE alert_id = %d AND site_id = %d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  AND (created_on BETWEEN %d AND %d)
73
- AND id IN (
74
- SELECT occurrence_id as id
75
- FROM `' . $tt2->GetTable() . '`
76
- WHERE (name = "ClientIP" AND value = %s)
77
- GROUP BY occurrence_id
78
- HAVING COUNT(*) = 1
 
 
79
  )
80
- ', array(
81
- 1002,
82
- (function_exists('get_current_blog_id') ? get_current_blog_id() : 0),
83
- mktime(0, 0, 0, $m, $d, $y),
84
- mktime(0, 0, 0, $m, $d + 1, $y) - 1,
85
- json_encode($ip),
86
- ));
87
-
88
- $occ = count($occ) ? $occ[0] : null;
89
-
90
- if($occ && $occ->IsLoaded()){
91
- // update existing record
92
- $new = $occ->GetMetaValue('Attempts', 0) + 1;
93
-
94
- if($new > $this->GetLoginFailureLogLimit())
95
- $new = $this->GetLoginFailureLogLimit() . '+';
96
-
97
- $occ->SetMetaValue('Attempts', $new);
98
- $occ->created_on = null;
99
- $occ->Save();
100
- }else{
101
- // create a new record
102
- $this->plugin->alerts->Trigger(1002, array(
103
- 'Attempts' => 1
104
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  }
106
- }
107
-
108
  }
30
  ), true);
31
  }
32
  }
33
+
34
+ /**
35
+ * @return boolean Whether we are running on multisite or not.
36
+ */
37
+ public function IsMultisite(){
38
+ return function_exists('is_multisite') && is_multisite();
39
+ }
40
 
41
+ const TRANSIENT_FAILEDLOGINS = 'wsal-failedlogins-known';
42
+ const TRANSIENT_FAILEDLOGINS_UNKNOWN = 'wsal-failedlogins-unknown';
43
 
44
  protected function GetLoginFailureLogLimit(){
45
  return 10;
49
  return 12 * 60 * 60;
50
  }
51
 
52
+ protected function IsPastLoginFailureLimit($ip, $site_id, $user){
53
+ $get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
54
+ if($user) {
55
+ $dataKnown = $get_fn(self::TRANSIENT_FAILEDLOGINS);
56
+ return ($dataKnown !== false) && isset($dataKnown[$site_id.":".$user->ID.":".$ip]) && ($dataKnown[$site_id.":".$user->ID.":".$ip] > $this->GetLoginFailureLogLimit());
57
+ } else {
58
+ $dataUnknown = $get_fn(self::TRANSIENT_FAILEDLOGINS_UNKNOWN);
59
+ return ($dataUnknown !== false) && isset($dataUnknown[$site_id.":".$ip]) && ($dataUnknown[$site_id.":".$ip] > $this->GetLoginFailureLogLimit());
60
+ }
61
  }
62
 
63
+ protected function IncrementLoginFailure($ip, $site_id, $user){
64
+ $get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
65
+ $set_fn = $this->IsMultisite() ? 'set_site_transient' : 'set_transient';
66
+ if($user) {
67
+ $dataKnown = $get_fn(self::TRANSIENT_FAILEDLOGINS);
68
+ if(!$dataKnown)$dataKnown = array();
69
+ if(!isset($dataKnown[$site_id.":".$user->ID.":".$ip]))$dataKnown[$site_id.":".$user->ID.":".$ip] = 1;
70
+ $dataKnown[$site_id.":".$user->ID.":".$ip]++;
71
+ $set_fn(self::TRANSIENT_FAILEDLOGINS, $dataKnown, $this->GetLoginFailureExpiration());
72
+ } else {
73
+ $dataUnknown = $get_fn(self::TRANSIENT_FAILEDLOGINS_UNKNOWN);
74
+ if(!$dataUnknown)$dataUnknown = array();
75
+ if(!isset($dataUnknown[$site_id.":".$ip]))$dataUnknown[$site_id.":".$ip] = 1;
76
+ $dataUnknown[$site_id.":".$ip]++;
77
+ $set_fn(self::TRANSIENT_FAILEDLOGINS_UNKNOWN, $dataUnknown, $this->GetLoginFailureExpiration());
78
+ }
79
  }
80
 
81
  public function EventLoginFailure($username){
86
  $tt1 = new WSAL_DB_Occurrence();
87
  $tt2 = new WSAL_DB_Meta();
88
 
89
+ $username = $_POST["log"];
90
+ $newAlertCode = 1003;
91
+ $user = get_user_by('login', $username);
92
+ $site_id = (function_exists('get_current_blog_id') ? get_current_blog_id() : 0);
93
+ if ($user) {
94
+ $newAlertCode = 1002;
95
+ $userRoles = $this->plugin->settings->GetCurrentUserRoles($user->roles);
96
+ }
97
+
98
+ if($this->IsPastLoginFailureLimit($ip, $site_id, $user))return;
99
+
100
+ if ($newAlertCode == 1002) {
101
+ $occ = WSAL_DB_Occurrence::LoadMultiQuery('
102
+ SELECT occurrence.* FROM `' . $tt1->GetTable() . '` occurrence
103
+ INNER JOIN `' . $tt2->GetTable() . '` ipMeta on ipMeta.occurrence_id = occurrence.id
104
+ and ipMeta.name = "ClientIP"
105
+ and ipMeta.value = %s
106
+ INNER JOIN `' . $tt2->GetTable() . '` usernameMeta on usernameMeta.occurrence_id = occurrence.id
107
+ and usernameMeta.name = "Username"
108
+ and usernameMeta.value = %s
109
+ WHERE occurrence.alert_id = %d AND occurrence.site_id = %d
110
  AND (created_on BETWEEN %d AND %d)
111
+ GROUP BY occurrence.id',
112
+ array(
113
+ json_encode($ip),
114
+ json_encode($username),
115
+ 1002,
116
+ $site_id,
117
+ mktime(0, 0, 0, $m, $d, $y),
118
+ mktime(0, 0, 0, $m, $d + 1, $y) - 1
119
  )
120
+ );
121
+
122
+ $occ = count($occ) ? $occ[0] : null;
123
+ if($occ && $occ->IsLoaded()){
124
+ // update existing record exists user
125
+ $this->IncrementLoginFailure($ip, $site_id, $user);
126
+ $new = $occ->GetMetaValue('Attempts', 0) + 1;
127
+
128
+ if($new > $this->GetLoginFailureLogLimit())
129
+ $new = $this->GetLoginFailureLogLimit() . '+';
130
+
131
+ $occ->SetMetaValue('Attempts', $new);
132
+ $occ->SetMetaValue('Username', $username);
133
+ //$occ->SetMetaValue('CurrentUserRoles', $userRoles);
134
+ $occ->created_on = null;
135
+ $occ->Save();
136
+ } else {
137
+ // create a new record exists user
138
+ $this->plugin->alerts->Trigger($newAlertCode, array(
139
+ 'Attempts' => 1,
140
+ 'Username' => $_POST["log"],
141
+ 'CurrentUserRoles' => $userRoles
142
+ ));
143
+ }
144
+ } else {
145
+ $occUnknown = WSAL_DB_Occurrence::LoadMultiQuery('
146
+ SELECT occurrence.* FROM `' . $tt1->GetTable() . '` occurrence
147
+ INNER JOIN `' . $tt2->GetTable() . '` ipMeta on ipMeta.occurrence_id = occurrence.id
148
+ and ipMeta.name = "ClientIP" and ipMeta.value = %s
149
+ WHERE occurrence.alert_id = %d AND occurrence.site_id = %d
150
+ AND (created_on BETWEEN %d AND %d)
151
+ GROUP BY occurrence.id',
152
+ array(
153
+ json_encode($ip),
154
+ 1003,
155
+ $site_id,
156
+ mktime(0, 0, 0, $m, $d, $y),
157
+ mktime(0, 0, 0, $m, $d + 1, $y) - 1
158
+ )
159
+ );
160
+
161
+ $occUnknown = count($occUnknown) ? $occUnknown[0] : null;
162
+ if($occUnknown && $occUnknown->IsLoaded()) {
163
+ // update existing record not exists user
164
+ $this->IncrementLoginFailure($ip, $site_id, false);
165
+ $new = $occUnknown->GetMetaValue('Attempts', 0) + 1;
166
+
167
+ if($new > $this->GetLoginFailureLogLimit())
168
+ $new = $this->GetLoginFailureLogLimit() . '+';
169
+
170
+ $occUnknown->SetMetaValue('Attempts', $new);
171
+ $occUnknown->created_on = null;
172
+ $occUnknown->Save();
173
+ } else {
174
+ // create a new record not exists user
175
+ $this->plugin->alerts->Trigger($newAlertCode, array('Attempts' => 1));
176
+ }
177
  }
178
+ }
 
179
  }
classes/Settings.php CHANGED
@@ -1,31 +1,28 @@
1
  <?php
2
-
3
  class WSAL_Settings {
4
  /**
5
  * @var WpSecurityAuditLog
6
  */
7
  protected $_plugin;
8
-
9
  public function __construct(WpSecurityAuditLog $plugin){
10
  $this->_plugin = $plugin;
11
  }
12
 
13
  // <editor-fold desc="Developer Options">
14
-
15
  const OPT_DEV_DATA_INSPECTOR = 'd';
16
  const OPT_DEV_PHP_ERRORS = 'p';
17
  const OPT_DEV_REQUEST_LOG = 'r';
18
  const OPT_DEV_BACKTRACE_LOG = 'b';
19
 
20
- protected $_devoption = null;
21
 
 
22
  /**
23
  * @return array Array of developer options to be enabled by default.
24
  */
25
  public function GetDefaultDevOptions(){
26
  return array();
27
  }
28
-
29
  /**
30
  * Returns whether a developer option is enabled or not.
31
  * @param string $option See self::OPT_DEV_* constants.
@@ -41,14 +38,12 @@ class WSAL_Settings {
41
  }
42
  return in_array($option, $this->_devoption);
43
  }
44
-
45
  /**
46
  * @return boolean Whether any developer option has been enabled or not.
47
  */
48
  public function IsAnyDevOptionEnabled(){
49
  return !!$this->_plugin->GetGlobalOption('dev-options', null);
50
  }
51
-
52
  /**
53
  * Sets whether a developer option is enabled or not.
54
  * @param string $option See self::OPT_DEV_* constants.
@@ -69,7 +64,6 @@ class WSAL_Settings {
69
  implode(',', $this->_devoption)
70
  );
71
  }
72
-
73
  /**
74
  * Remove all enabled developer options.
75
  */
@@ -77,28 +71,24 @@ class WSAL_Settings {
77
  $this->_devoption = array();
78
  $this->_plugin->SetGlobalOption('dev-options', '');
79
  }
80
-
81
  /**
82
  * @return boolean Whether to enable data inspector or not.
83
  */
84
  public function IsDataInspectorEnabled(){
85
  return $this->IsDevOptionEnabled(self::OPT_DEV_DATA_INSPECTOR);
86
  }
87
-
88
  /**
89
  * @return boolean Whether to PHP error logging or not.
90
  */
91
  public function IsPhpErrorLoggingEnabled(){
92
  return $this->IsDevOptionEnabled(self::OPT_DEV_PHP_ERRORS);
93
  }
94
-
95
  /**
96
  * @return boolean Whether to log requests to file or not.
97
  */
98
  public function IsRequestLoggingEnabled(){
99
  return $this->IsDevOptionEnabled(self::OPT_DEV_REQUEST_LOG);
100
  }
101
-
102
  /**
103
  * @return boolean Whether to store debug backtrace for PHP alerts or not.
104
  */
@@ -107,35 +97,30 @@ class WSAL_Settings {
107
  }
108
 
109
  // </editor-fold>
110
-
111
  /**
112
  * @return boolean Whether dashboard widgets are enabled or not.
113
  */
114
  public function IsWidgetsEnabled(){
115
  return !$this->_plugin->GetGlobalOption('disable-widgets');
116
  }
117
-
118
  /**
119
  * @param boolean $newvalue Whether dashboard widgets are enabled or not.
120
  */
121
  public function SetWidgetsEnabled($newvalue){
122
  $this->_plugin->SetGlobalOption('disable-widgets', !$newvalue);
123
  }
124
-
125
  /**
126
  * @return boolean Whether alerts in audit log view refresh automatically or not.
127
  */
128
  public function IsRefreshAlertsEnabled(){
129
  return !$this->_plugin->GetGlobalOption('disable-refresh');
130
  }
131
-
132
  /**
133
  * @param boolean $newvalue Whether alerts in audit log view refresh automatically or not.
134
  */
135
  public function SetRefreshAlertsEnabled($newvalue){
136
  $this->_plugin->SetGlobalOption('disable-refresh', !$newvalue);
137
  }
138
-
139
  /**
140
  * @return int Maximum number of alerts to show in dashboard widget.
141
  */
@@ -144,23 +129,19 @@ class WSAL_Settings {
144
  }
145
 
146
  // <editor-fold desc="Pruning Settings">
147
-
148
  /**
149
  * @return int The maximum number of alerts allowable.
150
  */
151
  public function GetMaxAllowedAlerts(){
152
  return 5000;
153
  }
154
-
155
  /**
156
  * @return string The default pruning date.
157
  */
158
  public function GetDefaultPruningDate(){
159
  return '1 month';
160
  }
161
-
162
  protected $_pruning = 0;
163
-
164
  /**
165
  * @return string The current pruning date.
166
  */
@@ -172,7 +153,6 @@ class WSAL_Settings {
172
  }
173
  return $this->_pruning;
174
  }
175
-
176
  /**
177
  * @param string $newvalue The new pruning date.
178
  */
@@ -182,7 +162,6 @@ class WSAL_Settings {
182
  $this->_pruning = $newvalue;
183
  }
184
  }
185
-
186
  /**
187
  * @return integer Maximum number of alerts to keep.
188
  */
@@ -190,7 +169,6 @@ class WSAL_Settings {
190
  $val = (int)$this->_plugin->GetGlobalOption('pruning-limit');
191
  return $val ? $val : $this->GetMaxAllowedAlerts();
192
  }
193
-
194
  /**
195
  * @param integer $newvalue The new maximum number of alerts.
196
  */
@@ -198,27 +176,21 @@ class WSAL_Settings {
198
  $newvalue = max(/*min(*/(int)$newvalue/*, $this->GetMaxAllowedAlerts())*/, 1);
199
  $this->_plugin->SetGlobalOption('pruning-limit', $newvalue);
200
  }
201
-
202
  public function SetPruningDateEnabled($enabled){
203
  $this->_plugin->SetGlobalOption('pruning-date-e', $enabled);
204
  }
205
-
206
  public function SetPruningLimitEnabled($enabled){
207
  $this->_plugin->SetGlobalOption('pruning-limit-e', $enabled);
208
  }
209
-
210
  public function IsPruningDateEnabled(){
211
  return $this->_plugin->GetGlobalOption('pruning-date-e', true);
212
  }
213
-
214
  public function IsPruningLimitEnabled(){
215
  return $this->_plugin->GetGlobalOption('pruning-limit-e', true);
216
  }
217
-
218
  public function IsRestrictAdmins(){
219
  return $this->_plugin->GetGlobalOption('restrict-admins', false);
220
  }
221
-
222
  /**
223
  * @deprecated Sandbox functionality is now in an external plugin.
224
  */
@@ -226,19 +198,15 @@ class WSAL_Settings {
226
  $plugins = $this->_plugin->licensing->plugins();
227
  return isset($plugins['wsal-sandbox-extensionphp']);
228
  }
229
-
230
  public function SetRestrictAdmins($enable){
231
  $this->_plugin->SetGlobalOption('restrict-admins', (bool)$enable);
232
  }
233
 
234
  // </editor-fold>
235
-
236
  protected $_disabled = null;
237
-
238
  public function GetDefaultDisabledAlerts(){
239
  return array(0000, 0001, 0002, 0003, 0004, 0005);
240
  }
241
-
242
  /**
243
  * @return array IDs of disabled alerts.
244
  */
@@ -251,7 +219,6 @@ class WSAL_Settings {
251
  }
252
  return $this->_disabled;
253
  }
254
-
255
  /**
256
  * @param array $types IDs alerts to disable.
257
  */
@@ -259,59 +226,59 @@ class WSAL_Settings {
259
  $this->_disabled = array_unique(array_map('intval', $types));
260
  $this->_plugin->SetGlobalOption('disabled-alerts', implode(',', $this->_disabled));
261
  }
262
-
263
  public function IsIncognito(){
264
  return $this->_plugin->GetGlobalOption('hide-plugin');
265
  }
266
-
267
  public function SetIncognito($enabled){
268
  return $this->_plugin->SetGlobalOption('hide-plugin', $enabled);
269
  }
270
 
 
 
 
 
 
 
 
 
 
 
 
271
  // <editor-fold desc="Access Control">
272
 
273
  protected $_viewers = null;
274
-
275
  public function SetAllowedPluginViewers($usersOrRoles){
276
  $this->_viewers = $usersOrRoles;
277
  $this->_plugin->SetGlobalOption('plugin-viewers', implode(',', $this->_viewers));
278
  }
279
-
280
  public function GetAllowedPluginViewers(){
281
  if(is_null($this->_viewers)){
282
  $this->_viewers = array_unique(array_filter(explode(',', $this->_plugin->GetGlobalOption('plugin-viewers'))));
283
  }
284
  return $this->_viewers;
285
  }
286
-
287
  protected $_editors = null;
288
-
289
  public function SetAllowedPluginEditors($usersOrRoles){
290
  $this->_editors = $usersOrRoles;
291
  $this->_plugin->SetGlobalOption('plugin-editors', implode(',', $this->_editors));
292
  }
293
-
294
  public function GetAllowedPluginEditors(){
295
  if(is_null($this->_editors)){
296
  $this->_editors = array_unique(array_filter(explode(',', $this->_plugin->GetGlobalOption('plugin-editors'))));
297
  }
298
  return $this->_editors;
299
  }
300
-
301
  protected $_perpage = null;
302
-
303
  public function SetViewPerPage($newvalue){
304
  $this->_perpage = max($newvalue, 1);
305
  $this->_plugin->SetGlobalOption('items-per-page', $this->_perpage);
306
  }
307
-
308
  public function GetViewPerPage(){
309
  if(is_null($this->_perpage)){
310
  $this->_perpage = (int)$this->_plugin->GetGlobalOption('items-per-page', 10);
311
  }
312
  return $this->_perpage;
313
  }
314
-
315
  /**
316
  * @param string $action Type of action, either 'view' or 'edit'.
317
  * @return boolean If user has access or not.
@@ -319,14 +286,12 @@ class WSAL_Settings {
319
  public function CurrentUserCan($action){
320
  return $this->UserCan(wp_get_current_user(), $action);
321
  }
322
-
323
  /**
324
  * @return string[] List of superadmin usernames.
325
  */
326
  protected function GetSuperAdmins(){
327
  return $this->_plugin->IsMultisite() ? get_super_admins() : array();
328
  }
329
-
330
  /**
331
  * @return string[] List of admin usernames.
332
  */
@@ -348,7 +313,6 @@ class WSAL_Settings {
348
  return $result;
349
  }
350
  }
351
-
352
  /**
353
  * Returns access tokens for a particular action.
354
  * @param string $action Type of action.
@@ -356,7 +320,6 @@ class WSAL_Settings {
356
  */
357
  public function GetAccessTokens($action){
358
  $allowed = array();
359
-
360
  switch($action){
361
  case 'view':
362
  $allowed = $this->GetAllowedPluginViewers();
@@ -377,7 +340,6 @@ class WSAL_Settings {
377
  default:
378
  throw new Exception('Unknown action "'.$action.'".');
379
  }
380
-
381
  if (!$this->IsRestrictAdmins()) {
382
  if(is_multisite()){
383
  $allowed = array_merge($allowed, get_super_admins());
@@ -385,10 +347,8 @@ class WSAL_Settings {
385
  $allowed[] = 'administrator';
386
  }
387
  }
388
-
389
  return array_unique($allowed);
390
  }
391
-
392
  /**
393
  * @param integer|WP_user $user User object to check.
394
  * @param string $action Type of action, either 'view' or 'edit'.
@@ -396,14 +356,11 @@ class WSAL_Settings {
396
  */
397
  public function UserCan($user, $action){
398
  if(is_int($user))$user = get_userdata($user);
399
-
400
  $allowed = $this->GetAccessTokens($action);
401
-
402
  $check = array_merge(
403
  $user->roles,
404
  array($user->user_login)
405
  );
406
-
407
  foreach($check as $item){
408
  if(in_array($item, $allowed)){
409
  return true;
@@ -411,7 +368,6 @@ class WSAL_Settings {
411
  }
412
  return false;
413
  }
414
-
415
  public function GetCurrentUserRoles($baseRoles = null){
416
  if ($baseRoles == null) $baseRoles = wp_get_current_user()->roles;
417
  if (function_exists('is_super_admin') && is_super_admin()) $baseRoles[] = 'superadmin';
@@ -421,57 +377,47 @@ class WSAL_Settings {
421
  // </editor-fold>
422
 
423
  // <editor-fold desc="Licensing">
424
-
425
  public function GetLicenses(){
426
  return $this->_plugin->GetGlobalOption('licenses');
427
  }
428
-
429
  public function GetLicense($name){
430
  $data = $this->GetLicenses();
431
  $name = sanitize_key(basename($name));
432
  return isset($data[$name]) ? $data[$name] : array();
433
  }
434
-
435
  public function SetLicenses($data){
436
  $this->_plugin->SetGlobalOption('licenses', $data);
437
  }
438
-
439
  public function GetLicenseKey($name){
440
  $data = $this->GetLicense($name);
441
  return isset($data['key']) ? $data['key'] : '';
442
  }
443
-
444
  public function GetLicenseStatus($name){
445
  $data = $this->GetLicense($name);
446
  return isset($data['sts']) ? $data['sts'] : '';
447
  }
448
-
449
  public function GetLicenseErrors($name){
450
  $data = $this->GetLicense($name);
451
  return isset($data['err']) ? $data['err'] : '';
452
  }
453
-
454
  public function SetLicenseKey($name, $key){
455
  $data = $this->GetLicenses();
456
  if (!isset($data[$name])) $data[$name] = array();
457
  $data[$name]['key'] = $key;
458
  $this->SetLicenses($data);
459
  }
460
-
461
  public function SetLicenseStatus($name, $status){
462
  $data = $this->GetLicenses();
463
  if (!isset($data[$name])) $data[$name] = array();
464
  $data[$name]['sts'] = $status;
465
  $this->SetLicenses($data);
466
  }
467
-
468
  public function SetLicenseErrors($name, $errors){
469
  $data = $this->GetLicenses();
470
  if (!isset($data[$name])) $data[$name] = array();
471
  $data[$name]['err'] = $errors;
472
  $this->SetLicenses($data);
473
  }
474
-
475
  public function ClearLicenses(){
476
  $this->SetLicenses(array());
477
  }
@@ -483,7 +429,6 @@ class WSAL_Settings {
483
  public function IsMainIPFromProxy(){
484
  return $this->_plugin->GetGlobalOption('use-proxy-ip');
485
  }
486
-
487
  public function SetMainIPFromProxy($enabled){
488
  return $this->_plugin->SetGlobalOption('use-proxy-ip', $enabled);
489
  }
@@ -491,7 +436,6 @@ class WSAL_Settings {
491
  public function IsInternalIPsFiltered(){
492
  return $this->_plugin->GetGlobalOption('filter-internal-ip');
493
  }
494
-
495
  public function SetInternalIPsFiltering($enabled){
496
  return $this->_plugin->SetGlobalOption('filter-internal-ip', $enabled);
497
  }
@@ -505,7 +449,9 @@ class WSAL_Settings {
505
  $result = isset($result[0]) ? $result[0] : null;
506
  } elseif(isset($_SERVER['REMOTE_ADDR'])) {
507
  $result = $this->NormalizeIP($_SERVER['REMOTE_ADDR']);
508
- if (!$this->ValidateIP($result)) $result = null;
 
 
509
  }
510
  return $result;
511
  }
1
  <?php
 
2
  class WSAL_Settings {
3
  /**
4
  * @var WpSecurityAuditLog
5
  */
6
  protected $_plugin;
 
7
  public function __construct(WpSecurityAuditLog $plugin){
8
  $this->_plugin = $plugin;
9
  }
10
 
11
  // <editor-fold desc="Developer Options">
 
12
  const OPT_DEV_DATA_INSPECTOR = 'd';
13
  const OPT_DEV_PHP_ERRORS = 'p';
14
  const OPT_DEV_REQUEST_LOG = 'r';
15
  const OPT_DEV_BACKTRACE_LOG = 'b';
16
 
17
+ const ERROR_CODE_INVALID_IP = 901;
18
 
19
+ protected $_devoption = null;
20
  /**
21
  * @return array Array of developer options to be enabled by default.
22
  */
23
  public function GetDefaultDevOptions(){
24
  return array();
25
  }
 
26
  /**
27
  * Returns whether a developer option is enabled or not.
28
  * @param string $option See self::OPT_DEV_* constants.
38
  }
39
  return in_array($option, $this->_devoption);
40
  }
 
41
  /**
42
  * @return boolean Whether any developer option has been enabled or not.
43
  */
44
  public function IsAnyDevOptionEnabled(){
45
  return !!$this->_plugin->GetGlobalOption('dev-options', null);
46
  }
 
47
  /**
48
  * Sets whether a developer option is enabled or not.
49
  * @param string $option See self::OPT_DEV_* constants.
64
  implode(',', $this->_devoption)
65
  );
66
  }
 
67
  /**
68
  * Remove all enabled developer options.
69
  */
71
  $this->_devoption = array();
72
  $this->_plugin->SetGlobalOption('dev-options', '');
73
  }
 
74
  /**
75
  * @return boolean Whether to enable data inspector or not.
76
  */
77
  public function IsDataInspectorEnabled(){
78
  return $this->IsDevOptionEnabled(self::OPT_DEV_DATA_INSPECTOR);
79
  }
 
80
  /**
81
  * @return boolean Whether to PHP error logging or not.
82
  */
83
  public function IsPhpErrorLoggingEnabled(){
84
  return $this->IsDevOptionEnabled(self::OPT_DEV_PHP_ERRORS);
85
  }
 
86
  /**
87
  * @return boolean Whether to log requests to file or not.
88
  */
89
  public function IsRequestLoggingEnabled(){
90
  return $this->IsDevOptionEnabled(self::OPT_DEV_REQUEST_LOG);
91
  }
 
92
  /**
93
  * @return boolean Whether to store debug backtrace for PHP alerts or not.
94
  */
97
  }
98
 
99
  // </editor-fold>
 
100
  /**
101
  * @return boolean Whether dashboard widgets are enabled or not.
102
  */
103
  public function IsWidgetsEnabled(){
104
  return !$this->_plugin->GetGlobalOption('disable-widgets');
105
  }
 
106
  /**
107
  * @param boolean $newvalue Whether dashboard widgets are enabled or not.
108
  */
109
  public function SetWidgetsEnabled($newvalue){
110
  $this->_plugin->SetGlobalOption('disable-widgets', !$newvalue);
111
  }
 
112
  /**
113
  * @return boolean Whether alerts in audit log view refresh automatically or not.
114
  */
115
  public function IsRefreshAlertsEnabled(){
116
  return !$this->_plugin->GetGlobalOption('disable-refresh');
117
  }
 
118
  /**
119
  * @param boolean $newvalue Whether alerts in audit log view refresh automatically or not.
120
  */
121
  public function SetRefreshAlertsEnabled($newvalue){
122
  $this->_plugin->SetGlobalOption('disable-refresh', !$newvalue);
123
  }
 
124
  /**
125
  * @return int Maximum number of alerts to show in dashboard widget.
126
  */
129
  }
130
 
131
  // <editor-fold desc="Pruning Settings">
 
132
  /**
133
  * @return int The maximum number of alerts allowable.
134
  */
135
  public function GetMaxAllowedAlerts(){
136
  return 5000;
137
  }
 
138
  /**
139
  * @return string The default pruning date.
140
  */
141
  public function GetDefaultPruningDate(){
142
  return '1 month';
143
  }
 
144
  protected $_pruning = 0;
 
145
  /**
146
  * @return string The current pruning date.
147
  */
153
  }
154
  return $this->_pruning;
155
  }
 
156
  /**
157
  * @param string $newvalue The new pruning date.
158
  */
162
  $this->_pruning = $newvalue;
163
  }
164
  }
 
165
  /**
166
  * @return integer Maximum number of alerts to keep.
167
  */
169
  $val = (int)$this->_plugin->GetGlobalOption('pruning-limit');
170
  return $val ? $val : $this->GetMaxAllowedAlerts();
171
  }
 
172
  /**
173
  * @param integer $newvalue The new maximum number of alerts.
174
  */
176
  $newvalue = max(/*min(*/(int)$newvalue/*, $this->GetMaxAllowedAlerts())*/, 1);
177
  $this->_plugin->SetGlobalOption('pruning-limit', $newvalue);
178
  }
 
179
  public function SetPruningDateEnabled($enabled){
180
  $this->_plugin->SetGlobalOption('pruning-date-e', $enabled);
181
  }
 
182
  public function SetPruningLimitEnabled($enabled){
183
  $this->_plugin->SetGlobalOption('pruning-limit-e', $enabled);
184
  }
 
185
  public function IsPruningDateEnabled(){
186
  return $this->_plugin->GetGlobalOption('pruning-date-e', true);
187
  }
 
188
  public function IsPruningLimitEnabled(){
189
  return $this->_plugin->GetGlobalOption('pruning-limit-e', true);
190
  }
 
191
  public function IsRestrictAdmins(){
192
  return $this->_plugin->GetGlobalOption('restrict-admins', false);
193
  }
 
194
  /**
195
  * @deprecated Sandbox functionality is now in an external plugin.
196
  */
198
  $plugins = $this->_plugin->licensing->plugins();
199
  return isset($plugins['wsal-sandbox-extensionphp']);
200
  }
 
201
  public function SetRestrictAdmins($enable){
202
  $this->_plugin->SetGlobalOption('restrict-admins', (bool)$enable);
203
  }
204
 
205
  // </editor-fold>
 
206
  protected $_disabled = null;
 
207
  public function GetDefaultDisabledAlerts(){
208
  return array(0000, 0001, 0002, 0003, 0004, 0005);
209
  }
 
210
  /**
211
  * @return array IDs of disabled alerts.
212
  */
219
  }
220
  return $this->_disabled;
221
  }
 
222
  /**
223
  * @param array $types IDs alerts to disable.
224
  */
226
  $this->_disabled = array_unique(array_map('intval', $types));
227
  $this->_plugin->SetGlobalOption('disabled-alerts', implode(',', $this->_disabled));
228
  }
 
229
  public function IsIncognito(){
230
  return $this->_plugin->GetGlobalOption('hide-plugin');
231
  }
 
232
  public function SetIncognito($enabled){
233
  return $this->_plugin->SetGlobalOption('hide-plugin', $enabled);
234
  }
235
 
236
+ /**
237
+ * Checking if the data will be removed.
238
+ */
239
+ public function IsDeleteData(){
240
+ return $this->_plugin->GetGlobalOption('delete-data');
241
+ }
242
+
243
+ public function SetDeleteData($enabled){
244
+ return $this->_plugin->SetGlobalOption('delete-data', $enabled);
245
+ }
246
+
247
  // <editor-fold desc="Access Control">
248
 
249
  protected $_viewers = null;
 
250
  public function SetAllowedPluginViewers($usersOrRoles){
251
  $this->_viewers = $usersOrRoles;
252
  $this->_plugin->SetGlobalOption('plugin-viewers', implode(',', $this->_viewers));
253
  }
 
254
  public function GetAllowedPluginViewers(){
255
  if(is_null($this->_viewers)){
256
  $this->_viewers = array_unique(array_filter(explode(',', $this->_plugin->GetGlobalOption('plugin-viewers'))));
257
  }
258
  return $this->_viewers;
259
  }
 
260
  protected $_editors = null;
 
261
  public function SetAllowedPluginEditors($usersOrRoles){
262
  $this->_editors = $usersOrRoles;
263
  $this->_plugin->SetGlobalOption('plugin-editors', implode(',', $this->_editors));
264
  }
 
265
  public function GetAllowedPluginEditors(){
266
  if(is_null($this->_editors)){
267
  $this->_editors = array_unique(array_filter(explode(',', $this->_plugin->GetGlobalOption('plugin-editors'))));
268
  }
269
  return $this->_editors;
270
  }
 
271
  protected $_perpage = null;
 
272
  public function SetViewPerPage($newvalue){
273
  $this->_perpage = max($newvalue, 1);
274
  $this->_plugin->SetGlobalOption('items-per-page', $this->_perpage);
275
  }
 
276
  public function GetViewPerPage(){
277
  if(is_null($this->_perpage)){
278
  $this->_perpage = (int)$this->_plugin->GetGlobalOption('items-per-page', 10);
279
  }
280
  return $this->_perpage;
281
  }
 
282
  /**
283
  * @param string $action Type of action, either 'view' or 'edit'.
284
  * @return boolean If user has access or not.
286
  public function CurrentUserCan($action){
287
  return $this->UserCan(wp_get_current_user(), $action);
288
  }
 
289
  /**
290
  * @return string[] List of superadmin usernames.
291
  */
292
  protected function GetSuperAdmins(){
293
  return $this->_plugin->IsMultisite() ? get_super_admins() : array();
294
  }
 
295
  /**
296
  * @return string[] List of admin usernames.
297
  */
313
  return $result;
314
  }
315
  }
 
316
  /**
317
  * Returns access tokens for a particular action.
318
  * @param string $action Type of action.
320
  */
321
  public function GetAccessTokens($action){
322
  $allowed = array();
 
323
  switch($action){
324
  case 'view':
325
  $allowed = $this->GetAllowedPluginViewers();
340
  default:
341
  throw new Exception('Unknown action "'.$action.'".');
342
  }
 
343
  if (!$this->IsRestrictAdmins()) {
344
  if(is_multisite()){
345
  $allowed = array_merge($allowed, get_super_admins());
347
  $allowed[] = 'administrator';
348
  }
349
  }
 
350
  return array_unique($allowed);
351
  }
 
352
  /**
353
  * @param integer|WP_user $user User object to check.
354
  * @param string $action Type of action, either 'view' or 'edit'.
356
  */
357
  public function UserCan($user, $action){
358
  if(is_int($user))$user = get_userdata($user);
 
359
  $allowed = $this->GetAccessTokens($action);
 
360
  $check = array_merge(
361
  $user->roles,
362
  array($user->user_login)
363
  );
 
364
  foreach($check as $item){
365
  if(in_array($item, $allowed)){
366
  return true;
368
  }
369
  return false;
370
  }
 
371
  public function GetCurrentUserRoles($baseRoles = null){
372
  if ($baseRoles == null) $baseRoles = wp_get_current_user()->roles;
373
  if (function_exists('is_super_admin') && is_super_admin()) $baseRoles[] = 'superadmin';
377
  // </editor-fold>
378
 
379
  // <editor-fold desc="Licensing">
 
380
  public function GetLicenses(){
381
  return $this->_plugin->GetGlobalOption('licenses');
382
  }
 
383
  public function GetLicense($name){
384
  $data = $this->GetLicenses();
385
  $name = sanitize_key(basename($name));
386
  return isset($data[$name]) ? $data[$name] : array();
387
  }
 
388
  public function SetLicenses($data){
389
  $this->_plugin->SetGlobalOption('licenses', $data);
390
  }
 
391
  public function GetLicenseKey($name){
392
  $data = $this->GetLicense($name);
393
  return isset($data['key']) ? $data['key'] : '';
394
  }
 
395
  public function GetLicenseStatus($name){
396
  $data = $this->GetLicense($name);
397
  return isset($data['sts']) ? $data['sts'] : '';
398
  }
 
399
  public function GetLicenseErrors($name){
400
  $data = $this->GetLicense($name);
401
  return isset($data['err']) ? $data['err'] : '';
402
  }
 
403
  public function SetLicenseKey($name, $key){
404
  $data = $this->GetLicenses();
405
  if (!isset($data[$name])) $data[$name] = array();
406
  $data[$name]['key'] = $key;
407
  $this->SetLicenses($data);
408
  }
 
409
  public function SetLicenseStatus($name, $status){
410
  $data = $this->GetLicenses();
411
  if (!isset($data[$name])) $data[$name] = array();
412
  $data[$name]['sts'] = $status;
413
  $this->SetLicenses($data);
414
  }
 
415
  public function SetLicenseErrors($name, $errors){
416
  $data = $this->GetLicenses();
417
  if (!isset($data[$name])) $data[$name] = array();
418
  $data[$name]['err'] = $errors;
419
  $this->SetLicenses($data);
420
  }
 
421
  public function ClearLicenses(){
422
  $this->SetLicenses(array());
423
  }
429
  public function IsMainIPFromProxy(){
430
  return $this->_plugin->GetGlobalOption('use-proxy-ip');
431
  }
 
432
  public function SetMainIPFromProxy($enabled){
433
  return $this->_plugin->SetGlobalOption('use-proxy-ip', $enabled);
434
  }
436
  public function IsInternalIPsFiltered(){
437
  return $this->_plugin->GetGlobalOption('filter-internal-ip');
438
  }
 
439
  public function SetInternalIPsFiltering($enabled){
440
  return $this->_plugin->SetGlobalOption('filter-internal-ip', $enabled);
441
  }
449
  $result = isset($result[0]) ? $result[0] : null;
450
  } elseif(isset($_SERVER['REMOTE_ADDR'])) {
451
  $result = $this->NormalizeIP($_SERVER['REMOTE_ADDR']);
452
+ if (!$this->ValidateIP($result)) {
453
+ $result = "Error " . self::ERROR_CODE_INVALID_IP . ": Invalid IP Address";
454
+ }
455
  }
456
  return $result;
457
  }
classes/Views/Settings.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
-
3
  class WSAL_Views_Settings extends WSAL_AbstractView {
4
 
5
  public function __construct(WpSecurityAuditLog $plugin) {
@@ -51,10 +50,11 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
51
  $this->_plugin->settings->SetAllowedPluginViewers(isset($_REQUEST['Viewers']) ? $_REQUEST['Viewers'] : array());
52
  $this->_plugin->settings->SetAllowedPluginEditors(isset($_REQUEST['Editors']) ? $_REQUEST['Editors'] : array());
53
  $this->_plugin->settings->SetRestrictAdmins(isset($_REQUEST['RestrictAdmins']));
54
- $this->_plugin->settings->SetRefreshAlertsEnabled(isset($_REQUEST['EnableAuditViewRefresh']));
55
  $this->_plugin->settings->SetMainIPFromProxy(isset($_REQUEST['EnableProxyIpCapture']));
56
  $this->_plugin->settings->SetInternalIPsFiltering(isset($_REQUEST['EnableIpFiltering']));
57
  $this->_plugin->settings->SetIncognito(isset($_REQUEST['Incognito']));
 
58
  $this->_plugin->settings->ClearDevOptions();
59
  if(isset($_REQUEST['DevOptions']))
60
  foreach($_REQUEST['DevOptions'] as $opt)
@@ -259,7 +259,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
259
  </td>
260
  </tr>
261
  <tr>
262
- <th><label for="aroption_on"><?php _e('Refresh Audit View', 'wp-security-audit-log'); ?></label></th>
263
  <td>
264
  <fieldset>
265
  <?php $are = $this->_plugin->settings->IsRefreshAlertsEnabled(); ?>
@@ -267,13 +267,13 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
267
  <input type="radio" name="EnableAuditViewRefresh" id="aroption_on" style="margin-top: 2px;" <?php if($are)echo 'checked="checked"'; ?> value="1">
268
  <span><?php _e('Automatic', 'wp-security-audit-log'); ?></span>
269
  </label>
270
- <span class="description"> &mdash; <?php _e('Refresh Audit View as soon as there are new events.', 'wp-security-audit-log'); ?></span>
271
  <br/>
272
  <label for="aroption_off">
273
  <input type="radio" name="EnableAuditViewRefresh" id="aroption_off" style="margin-top: 2px;" <?php if(!$are)echo 'checked="checked"'; ?> value="0">
274
  <span><?php _e('Manual', 'wp-security-audit-log'); ?></span>
275
  </label>
276
- <span class="description"> &mdash; <?php _e('Refresh Audit View only when page is reloaded.', 'wp-security-audit-log'); ?></span>
277
  <br/>
278
  </fieldset>
279
  </td>
@@ -337,11 +337,35 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
337
  </fieldset>
338
  </td>
339
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
340
  </tbody>
341
  </table>
342
 
343
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Save Changes"></p>
344
- </form><?php
 
 
 
 
 
 
 
 
 
 
 
 
345
  }
346
 
347
  public function Header(){
1
  <?php
 
2
  class WSAL_Views_Settings extends WSAL_AbstractView {
3
 
4
  public function __construct(WpSecurityAuditLog $plugin) {
50
  $this->_plugin->settings->SetAllowedPluginViewers(isset($_REQUEST['Viewers']) ? $_REQUEST['Viewers'] : array());
51
  $this->_plugin->settings->SetAllowedPluginEditors(isset($_REQUEST['Editors']) ? $_REQUEST['Editors'] : array());
52
  $this->_plugin->settings->SetRestrictAdmins(isset($_REQUEST['RestrictAdmins']));
53
+ $this->_plugin->settings->SetRefreshAlertsEnabled($_REQUEST['EnableAuditViewRefresh']);
54
  $this->_plugin->settings->SetMainIPFromProxy(isset($_REQUEST['EnableProxyIpCapture']));
55
  $this->_plugin->settings->SetInternalIPsFiltering(isset($_REQUEST['EnableIpFiltering']));
56
  $this->_plugin->settings->SetIncognito(isset($_REQUEST['Incognito']));
57
+ $this->_plugin->settings->SetDeleteData(isset($_REQUEST['DeleteData']));
58
  $this->_plugin->settings->ClearDevOptions();
59
  if(isset($_REQUEST['DevOptions']))
60
  foreach($_REQUEST['DevOptions'] as $opt)
259
  </td>
260
  </tr>
261
  <tr>
262
+ <th><label for="aroption_on"><?php _e('Refresh Audit Log Viewer', 'wp-security-audit-log'); ?></label></th>
263
  <td>
264
  <fieldset>
265
  <?php $are = $this->_plugin->settings->IsRefreshAlertsEnabled(); ?>
267
  <input type="radio" name="EnableAuditViewRefresh" id="aroption_on" style="margin-top: 2px;" <?php if($are)echo 'checked="checked"'; ?> value="1">
268
  <span><?php _e('Automatic', 'wp-security-audit-log'); ?></span>
269
  </label>
270
+ <span class="description"> &mdash; <?php _e('Refresh Audit Log Viewer as soon as there are new alerts.', 'wp-security-audit-log'); ?></span>
271
  <br/>
272
  <label for="aroption_off">
273
  <input type="radio" name="EnableAuditViewRefresh" id="aroption_off" style="margin-top: 2px;" <?php if(!$are)echo 'checked="checked"'; ?> value="0">
274
  <span><?php _e('Manual', 'wp-security-audit-log'); ?></span>
275
  </label>
276
+ <span class="description"> &mdash; <?php _e('Refresh Audit Log Viewer only when the page is reloaded.', 'wp-security-audit-log'); ?></span>
277
  <br/>
278
  </fieldset>
279
  </td>
337
  </fieldset>
338
  </td>
339
  </tr>
340
+ <tr>
341
+ <th><label for="DeleteData"><?php _e('Remove Data on Unistall', 'wp-security-audit-log'); ?></label></th>
342
+ <td>
343
+ <fieldset>
344
+ <label for="DeleteData">
345
+ <input type="checkbox" name="DeleteData" value="1" id="DeleteData" onclick="return delete_confirm(this);"<?php
346
+ if($this->_plugin->settings->IsDeleteData())echo ' checked="checked"';
347
+ ?>/> <span class="description">Check this box if you would like remove all data when the plugin is deleted.</span>
348
+ </label>
349
+ </fieldset>
350
+ </td>
351
+ </tr>
352
  </tbody>
353
  </table>
354
 
355
  <p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="Save Changes"></p>
356
+ </form>
357
+ <script type="text/javascript">
358
+ <!--
359
+ function delete_confirm(elementRef)
360
+ {
361
+ if ( elementRef.checked )
362
+ {
363
+ if ( window.confirm('Do you want remove all data when the plugin is deleted?') == false )
364
+ elementRef.checked = false;
365
+ }
366
+ }
367
+ // -->
368
+ </script><?php
369
  }
370
 
371
  public function Header(){
classes/Views/ToggleAlerts.php CHANGED
@@ -1,5 +1,4 @@
1
  <?php
2
-
3
  class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
4
 
5
  public function GetTitle() {
@@ -141,4 +140,4 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
141
  </script><?php
142
  }
143
 
144
- }
1
  <?php
 
2
  class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
3
 
4
  public function GetTitle() {
140
  </script><?php
141
  }
142
 
143
+ }
defaults.php CHANGED
@@ -39,6 +39,7 @@ function wsaldefaults_wsal_init(WpSecurityAuditLog $wsal){
39
  array(1000, E_NOTICE, __('User logs in', 'wp-security-audit-log'), __('Successfully logged in', 'wp-security-audit-log')),
40
  array(1001, E_NOTICE, __('User logs out', 'wp-security-audit-log'), __('Successfully logged out', 'wp-security-audit-log')),
41
  array(1002, E_WARNING, __('Login failed', 'wp-security-audit-log'), __('%Attempts% failed login(s) detected', 'wp-security-audit-log')),
 
42
  array(2010, E_NOTICE, __('User uploaded file from Uploads directory', 'wp-security-audit-log'), __('Uploaded the file %FileName% in %FilePath%', 'wp-security-audit-log')),
43
  array(2011, E_WARNING, __('User deleted file from Uploads directory', 'wp-security-audit-log'), __('Deleted the file %FileName% from %FilePath%', 'wp-security-audit-log')),
44
  array(2046, E_CRITICAL, __('User changed a file using the theme editor', 'wp-security-audit-log'), __('Modified %File% with the Theme Editor', 'wp-security-audit-log')),
39
  array(1000, E_NOTICE, __('User logs in', 'wp-security-audit-log'), __('Successfully logged in', 'wp-security-audit-log')),
40
  array(1001, E_NOTICE, __('User logs out', 'wp-security-audit-log'), __('Successfully logged out', 'wp-security-audit-log')),
41
  array(1002, E_WARNING, __('Login failed', 'wp-security-audit-log'), __('%Attempts% failed login(s) detected', 'wp-security-audit-log')),
42
+ array(1003, E_WARNING, __('Login failed', 'wp-security-audit-log'), __('%Attempts% failed login(s) detected using non existing user.', 'wp-security-audit-log')),
43
  array(2010, E_NOTICE, __('User uploaded file from Uploads directory', 'wp-security-audit-log'), __('Uploaded the file %FileName% in %FilePath%', 'wp-security-audit-log')),
44
  array(2011, E_WARNING, __('User deleted file from Uploads directory', 'wp-security-audit-log'), __('Deleted the file %FileName% from %FilePath%', 'wp-security-audit-log')),
45
  array(2046, E_CRITICAL, __('User changed a file using the theme editor', 'wp-security-audit-log'), __('Modified %File% with the Theme Editor', 'wp-security-audit-log')),
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-ro_RO.mo ADDED
Binary file
languages/wp-security-audit-log.pot CHANGED
@@ -2,9 +2,10 @@
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.3.3\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-security-audit-log\n"
7
- "POT-Creation-Date: 2015-01-21 08:46:06+00:00\n"
 
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -32,11 +33,11 @@ msgstr ""
32
  msgid "All Sites"
33
  msgstr ""
34
 
35
- #: classes/AuditLogListView.php:113 classes/Views/ToggleAlerts.php:70
36
  msgid "Code"
37
  msgstr ""
38
 
39
- #: classes/AuditLogListView.php:114 classes/Views/ToggleAlerts.php:71
40
  msgid "Type"
41
  msgstr ""
42
 
@@ -221,7 +222,7 @@ msgid "Audit Log Viewer"
221
  msgstr ""
222
 
223
  #: classes/Views/AuditLog.php:64 classes/Views/Licensing.php:34
224
- #: classes/Views/Settings.php:82 classes/Views/ToggleAlerts.php:29
225
  msgid "You do not have sufficient permissions to access this page."
226
  msgstr ""
227
 
@@ -420,12 +421,12 @@ msgid "Licensing"
420
  msgstr ""
421
 
422
  #: classes/Views/Licensing.php:39 classes/Views/Settings.php:87
423
- #: classes/Views/ToggleAlerts.php:44
424
  msgid "Settings have been saved."
425
  msgstr ""
426
 
427
  #: classes/Views/Licensing.php:41 classes/Views/Settings.php:89
428
- #: classes/Views/ToggleAlerts.php:46
429
  msgid "Error: "
430
  msgstr ""
431
 
@@ -441,7 +442,7 @@ msgstr ""
441
  msgid "Inactive"
442
  msgstr ""
443
 
444
- #: classes/Views/Settings.php:18 classes/Views/Settings.php:26
445
  msgid "Settings"
446
  msgstr ""
447
 
@@ -554,7 +555,7 @@ msgid ""
554
  msgstr ""
555
 
556
  #: classes/Views/Settings.php:262
557
- msgid "Refresh Audit View"
558
  msgstr ""
559
 
560
  #: classes/Views/Settings.php:268
@@ -562,7 +563,7 @@ msgid "Automatic"
562
  msgstr ""
563
 
564
  #: classes/Views/Settings.php:270
565
- msgid "Refresh Audit View as soon as there are new events."
566
  msgstr ""
567
 
568
  #: classes/Views/Settings.php:274
@@ -570,7 +571,7 @@ msgid "Manual"
570
  msgstr ""
571
 
572
  #: classes/Views/Settings.php:276
573
- msgid "Refresh Audit View only when page is reloaded."
574
  msgstr ""
575
 
576
  #: classes/Views/Settings.php:282
@@ -630,23 +631,27 @@ msgid ""
630
  "0 in the wp_options table."
631
  msgstr ""
632
 
633
- #: classes/Views/ToggleAlerts.php:6 classes/Views/ToggleAlerts.php:14
 
 
 
 
634
  msgid "Enable/Disable Alerts"
635
  msgstr ""
636
 
637
- #: classes/Views/ToggleAlerts.php:72 classes/WidgetManager.php:38
638
  msgid "Description"
639
  msgstr ""
640
 
641
- #: classes/Views/ToggleAlerts.php:81
642
  msgid "Not Implemented"
643
  msgstr ""
644
 
645
- #: classes/Views/ToggleAlerts.php:84
646
  msgid "Not Available"
647
  msgstr ""
648
 
649
- #: classes/Views/ToggleAlerts.php:98
650
  msgid "Save Changes"
651
  msgstr ""
652
 
@@ -750,7 +755,7 @@ msgstr ""
750
  msgid "Successfully logged out"
751
  msgstr ""
752
 
753
- #: defaults.php:41
754
  msgid "Login failed"
755
  msgstr ""
756
 
@@ -759,991 +764,995 @@ msgid "%Attempts% failed login(s) detected"
759
  msgstr ""
760
 
761
  #: defaults.php:42
 
 
 
 
762
  msgid "User uploaded file from Uploads directory"
763
  msgstr ""
764
 
765
- #: defaults.php:42
766
  msgid "Uploaded the file %FileName% in %FilePath%"
767
  msgstr ""
768
 
769
- #: defaults.php:43
770
  msgid "User deleted file from Uploads directory"
771
  msgstr ""
772
 
773
- #: defaults.php:43
774
  msgid "Deleted the file %FileName% from %FilePath%"
775
  msgstr ""
776
 
777
- #: defaults.php:44
778
  msgid "User changed a file using the theme editor"
779
  msgstr ""
780
 
781
- #: defaults.php:44
782
  msgid "Modified %File% with the Theme Editor"
783
  msgstr ""
784
 
785
- #: defaults.php:45
786
  msgid "User changed a file using the plugin editor"
787
  msgstr ""
788
 
789
- #: defaults.php:45
790
  msgid "Modified %File% with the Plugin Editor"
791
  msgstr ""
792
 
793
- #: defaults.php:47
794
  msgid "Blog Posts"
795
  msgstr ""
796
 
797
- #: defaults.php:48
798
  msgid "User created a new blog post and saved it as draft"
799
  msgstr ""
800
 
801
- #: defaults.php:48
802
  msgid "Created a new blog post called %PostTitle%. Blog post ID is %PostID%"
803
  msgstr ""
804
 
805
- #: defaults.php:49
806
  msgid "User published a blog post"
807
  msgstr ""
808
 
809
- #: defaults.php:49
810
  msgid "Published a blog post called %PostTitle%. Blog post URL is %PostUrl%"
811
  msgstr ""
812
 
813
- #: defaults.php:50
814
  msgid "User modified a published blog post"
815
  msgstr ""
816
 
817
- #: defaults.php:50
818
  msgid ""
819
  "Modified the published blog post %PostTitle%. Blog post URL is %PostUrl%"
820
  msgstr ""
821
 
822
- #: defaults.php:51
823
  msgid "User modified a draft blog post"
824
  msgstr ""
825
 
826
- #: defaults.php:51
827
  msgid "Modified the draft blog post %PostTitle%. Blog post ID is %PostID%"
828
  msgstr ""
829
 
830
- #: defaults.php:52
831
  msgid "User permanently deleted a blog post from the trash"
832
  msgstr ""
833
 
834
- #: defaults.php:52
835
  msgid "Permanently deleted the post %PostTitle%. Blog post ID is %PostID%"
836
  msgstr ""
837
 
838
- #: defaults.php:53
839
  msgid "User moved a blog post to the trash"
840
  msgstr ""
841
 
842
- #: defaults.php:53
843
  msgid "Moved the blog post %PostTitle% to trash"
844
  msgstr ""
845
 
846
- #: defaults.php:54
847
  msgid "User restored a blog post from trash"
848
  msgstr ""
849
 
850
- #: defaults.php:54
851
  msgid "Restored post %PostTitle% from trash"
852
  msgstr ""
853
 
854
- #: defaults.php:55
855
  msgid "User changed blog post category"
856
  msgstr ""
857
 
858
- #: defaults.php:55
859
  msgid ""
860
  "Changed the category of the post %PostTitle% from %OldCategories% to "
861
  "%NewCategories%"
862
  msgstr ""
863
 
864
- #: defaults.php:56
865
  msgid "User changed blog post URL"
866
  msgstr ""
867
 
868
- #: defaults.php:56
869
  msgid "Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%"
870
  msgstr ""
871
 
872
- #: defaults.php:57
873
  msgid "User changed blog post author"
874
  msgstr ""
875
 
876
- #: defaults.php:57
877
  msgid "Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%"
878
  msgstr ""
879
 
880
- #: defaults.php:58
881
  msgid "User changed blog post status"
882
  msgstr ""
883
 
884
- #: defaults.php:58
885
  msgid "Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%"
886
  msgstr ""
887
 
888
- #: defaults.php:59
889
  msgid "User created new category"
890
  msgstr ""
891
 
892
- #: defaults.php:59
893
  msgid "Created a new category called %CategoryName%"
894
  msgstr ""
895
 
896
- #: defaults.php:60
897
  msgid "User deleted category"
898
  msgstr ""
899
 
900
- #: defaults.php:60
901
  msgid "Deleted the %CategoryName% category"
902
  msgstr ""
903
 
904
- #: defaults.php:61
905
  msgid "User changed the visibility of a blog post"
906
  msgstr ""
907
 
908
- #: defaults.php:61
909
  msgid ""
910
  "Changed the visibility of %PostTitle% blog post from %OldVisibility% to "
911
  "%NewVisibility%"
912
  msgstr ""
913
 
914
- #: defaults.php:62
915
  msgid "User changed the date of a blog post"
916
  msgstr ""
917
 
918
- #: defaults.php:62
919
  msgid "Changed the date of %PostTitle% blog post from %OldDate% to %NewDate%"
920
  msgstr ""
921
 
922
- #: defaults.php:63
923
  msgid "User sets a post as sticky"
924
  msgstr ""
925
 
926
- #: defaults.php:63
927
  msgid "Set the post %PostTitle% as Sticky"
928
  msgstr ""
929
 
930
- #: defaults.php:64
931
  msgid "User removes post from sticky"
932
  msgstr ""
933
 
934
- #: defaults.php:64
935
  msgid "Removed the post %PostTitle% from Sticky"
936
  msgstr ""
937
 
938
- #: defaults.php:65
939
  msgid "User creates a custom field for a post"
940
  msgstr ""
941
 
942
- #: defaults.php:65
943
  msgid ""
944
  "Created custom field %MetaKey% with value %MetaValue% in post %PostTitle%"
945
  msgstr ""
946
 
947
- #: defaults.php:66
948
  msgid "User updates a custom field value for a post"
949
  msgstr ""
950
 
951
- #: defaults.php:66
952
  msgid ""
953
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
954
  "%MetaValueNew% in post %PostTitle%"
955
  msgstr ""
956
 
957
- #: defaults.php:67
958
  msgid "User deletes a custom field from a post"
959
  msgstr ""
960
 
961
- #: defaults.php:67
962
  msgid ""
963
  "Deleted custom field %MetaKey% with value %MetaValue% from post %PostTitle%"
964
  msgstr ""
965
 
966
- #: defaults.php:68
967
  msgid "User updates a custom field name for a post"
968
  msgstr ""
969
 
970
- #: defaults.php:68
971
  msgid ""
972
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in post "
973
  "%PostTitle%"
974
  msgstr ""
975
 
976
- #: defaults.php:69
977
  msgid "User modifies content for a published post"
978
  msgstr ""
979
 
980
- #: defaults.php:69
981
  msgid "Modified the content of published post %PostTitle%"
982
  msgstr ""
983
 
984
- #: defaults.php:70
985
  msgid "User modifies content for a draft post"
986
  msgstr ""
987
 
988
- #: defaults.php:70
989
  msgid "Modified the content of draft post %PostTitle%"
990
  msgstr ""
991
 
992
- #: defaults.php:72
993
  msgid "Pages"
994
  msgstr ""
995
 
996
- #: defaults.php:73
997
  msgid "User created a new WordPress page and saved it as draft"
998
  msgstr ""
999
 
1000
- #: defaults.php:73
1001
  msgid "Created a new page called %PostTitle%. Page ID is %PostID%"
1002
  msgstr ""
1003
 
1004
- #: defaults.php:74
1005
  msgid "User published a WorPress page"
1006
  msgstr ""
1007
 
1008
- #: defaults.php:74
1009
  msgid "Published a page called %PostTitle%. Page URL is %PostUrl%"
1010
  msgstr ""
1011
 
1012
- #: defaults.php:75
1013
  msgid "User modified a published WordPress page"
1014
  msgstr ""
1015
 
1016
- #: defaults.php:75
1017
  msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%"
1018
  msgstr ""
1019
 
1020
- #: defaults.php:76
1021
  msgid "User modified a draft WordPress page"
1022
  msgstr ""
1023
 
1024
- #: defaults.php:76
1025
  msgid "Modified the draft page %PostTitle%. Page ID is %PostID%"
1026
  msgstr ""
1027
 
1028
- #: defaults.php:77
1029
  msgid "User permanently deleted a page from the trash"
1030
  msgstr ""
1031
 
1032
- #: defaults.php:77
1033
  msgid "Permanently deleted the page %PostTitle%. Page ID is %PostID%"
1034
  msgstr ""
1035
 
1036
- #: defaults.php:78
1037
  msgid "User moved WordPress page to the trash"
1038
  msgstr ""
1039
 
1040
- #: defaults.php:78
1041
  msgid "Moved the page %PostTitle% to trash"
1042
  msgstr ""
1043
 
1044
- #: defaults.php:79
1045
  msgid "User restored a WordPress page from trash"
1046
  msgstr ""
1047
 
1048
- #: defaults.php:79
1049
  msgid "Restored page %PostTitle% from trash"
1050
  msgstr ""
1051
 
1052
- #: defaults.php:80
1053
  msgid "User changed page URL"
1054
  msgstr ""
1055
 
1056
- #: defaults.php:80
1057
  msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%"
1058
  msgstr ""
1059
 
1060
- #: defaults.php:81
1061
  msgid "User changed page author"
1062
  msgstr ""
1063
 
1064
- #: defaults.php:81
1065
  msgid "Changed the author of %PostTitle% page from %OldAuthor% to %NewAuthor%"
1066
  msgstr ""
1067
 
1068
- #: defaults.php:82
1069
  msgid "User changed page status"
1070
  msgstr ""
1071
 
1072
- #: defaults.php:82
1073
  msgid "Changed the status of %PostTitle% page from %OldStatus% to %NewStatus%"
1074
  msgstr ""
1075
 
1076
- #: defaults.php:83
1077
  msgid "User changed the visibility of a page post"
1078
  msgstr ""
1079
 
1080
- #: defaults.php:83
1081
  msgid ""
1082
  "Changed the visibility of %PostTitle% page from %OldVisibility% to "
1083
  "%NewVisibility%"
1084
  msgstr ""
1085
 
1086
- #: defaults.php:84
1087
  msgid "User changed the date of a page post"
1088
  msgstr ""
1089
 
1090
- #: defaults.php:84
1091
  msgid "Changed the date of %PostTitle% page from %OldDate% to %NewDate%"
1092
  msgstr ""
1093
 
1094
- #: defaults.php:85
1095
  msgid "User changed the parent of a page"
1096
  msgstr ""
1097
 
1098
- #: defaults.php:85
1099
  msgid ""
1100
  "Changed the parent of %PostTitle% page from %OldParentName% to %NewParentName"
1101
  "%"
1102
  msgstr ""
1103
 
1104
- #: defaults.php:86
1105
  msgid "User changes the template of a page"
1106
  msgstr ""
1107
 
1108
- #: defaults.php:86
1109
  msgid ""
1110
  "Changed the template of %PostTitle% page from %OldTemplate% to %NewTemplate%"
1111
  msgstr ""
1112
 
1113
- #: defaults.php:87
1114
  msgid "User creates a custom field for a page"
1115
  msgstr ""
1116
 
1117
- #: defaults.php:87
1118
  msgid ""
1119
  "Created custom field %MetaKey% with value %MetaValue% in page %PostTitle%"
1120
  msgstr ""
1121
 
1122
- #: defaults.php:88
1123
  msgid "User updates a custom field value for a page"
1124
  msgstr ""
1125
 
1126
- #: defaults.php:88
1127
  msgid ""
1128
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
1129
  "%MetaValueNew% in page %PostTitle%"
1130
  msgstr ""
1131
 
1132
- #: defaults.php:89
1133
  msgid "User deletes a custom field from a page"
1134
  msgstr ""
1135
 
1136
- #: defaults.php:89
1137
  msgid ""
1138
  "Deleted custom field %MetaKey% with value %MetaValue% from page %PostTitle%"
1139
  msgstr ""
1140
 
1141
- #: defaults.php:90
1142
  msgid "User updates a custom field name for a page"
1143
  msgstr ""
1144
 
1145
- #: defaults.php:90
1146
  msgid ""
1147
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in page "
1148
  "%PostTitle%"
1149
  msgstr ""
1150
 
1151
- #: defaults.php:91
1152
  msgid "User modifies content for a published page"
1153
  msgstr ""
1154
 
1155
- #: defaults.php:91
1156
  msgid "Modified the content of published page %PostTitle%"
1157
  msgstr ""
1158
 
1159
- #: defaults.php:92
1160
  msgid "User modifies content for a draft page"
1161
  msgstr ""
1162
 
1163
- #: defaults.php:92
1164
  msgid "Modified the content of draft page %PostTitle%"
1165
  msgstr ""
1166
 
1167
- #: defaults.php:94
1168
  msgid "Custom Posts"
1169
  msgstr ""
1170
 
1171
- #: defaults.php:95
1172
  msgid "User created a new post with custom post type and saved it as draft"
1173
  msgstr ""
1174
 
1175
- #: defaults.php:95
1176
  msgid ""
1177
  "Created a new custom post called %PostTitle% of type %PostType%. Post ID is "
1178
  "%PostID%"
1179
  msgstr ""
1180
 
1181
- #: defaults.php:96
1182
  msgid "User published a post with custom post type"
1183
  msgstr ""
1184
 
1185
- #: defaults.php:96
1186
  msgid ""
1187
  "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
1188
  msgstr ""
1189
 
1190
- #: defaults.php:97
1191
  msgid "User modified a post with custom post type"
1192
  msgstr ""
1193
 
1194
- #: defaults.php:97
1195
  msgid ""
1196
  "Modified custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
1197
  msgstr ""
1198
 
1199
- #: defaults.php:98
1200
  msgid "User modified a draft post with custom post type"
1201
  msgstr ""
1202
 
1203
- #: defaults.php:98
1204
  msgid ""
1205
  "Modified draft custom post %PostTitle% of type is %PostType%. Post URL is "
1206
  "%PostUrl%"
1207
  msgstr ""
1208
 
1209
- #: defaults.php:99
1210
  msgid "User permanently deleted post with custom post type"
1211
  msgstr ""
1212
 
1213
- #: defaults.php:99
1214
  msgid "Permanently Deleted custom post %PostTitle% of type %PostType%"
1215
  msgstr ""
1216
 
1217
- #: defaults.php:100
1218
  msgid "User moved post with custom post type to trash"
1219
  msgstr ""
1220
 
1221
- #: defaults.php:100
1222
  msgid "Moved custom post %PostTitle% to trash. Post type is %PostType%"
1223
  msgstr ""
1224
 
1225
- #: defaults.php:101
1226
  msgid "User restored post with custom post type from trash"
1227
  msgstr ""
1228
 
1229
- #: defaults.php:101
1230
  msgid "Restored custom post %PostTitle% of type %PostType% from trash"
1231
  msgstr ""
1232
 
1233
- #: defaults.php:102
1234
  msgid "User changed the category of a post with custom post type"
1235
  msgstr ""
1236
 
1237
- #: defaults.php:102
1238
  msgid ""
1239
  "Changed the category(ies) of custom post %PostTitle% of type %PostType% from "
1240
  "%OldCategories% to %NewCategories%"
1241
  msgstr ""
1242
 
1243
- #: defaults.php:103
1244
  msgid "User changed the URL of a post with custom post type"
1245
  msgstr ""
1246
 
1247
- #: defaults.php:103
1248
  msgid ""
1249
  "Changed the URL of custom post %PostTitle% of type %PostType% from %OldUrl% "
1250
  "to %NewUrl%"
1251
  msgstr ""
1252
 
1253
- #: defaults.php:104
1254
  msgid "User changed the author or post with custom post type"
1255
  msgstr ""
1256
 
1257
- #: defaults.php:104
1258
  msgid ""
1259
  "Changed the author of custom post %PostTitle% of type %PostType% from "
1260
  "%OldAuthor% to %NewAuthor%"
1261
  msgstr ""
1262
 
1263
- #: defaults.php:105
1264
  msgid "User changed the status of post with custom post type"
1265
  msgstr ""
1266
 
1267
- #: defaults.php:105
1268
  msgid ""
1269
  "Changed the status of custom post %PostTitle% of type %PostType% from "
1270
  "%OldStatus% to %NewStatus%"
1271
  msgstr ""
1272
 
1273
- #: defaults.php:106
1274
  msgid "User changed the visibility of a post with custom post type"
1275
  msgstr ""
1276
 
1277
- #: defaults.php:106
1278
  msgid ""
1279
  "Changed the visibility of custom post %PostTitle% of type %PostType% from "
1280
  "%OldVisibility% to %NewVisibility%"
1281
  msgstr ""
1282
 
1283
- #: defaults.php:107
1284
  msgid "User changed the date of post with custom post type"
1285
  msgstr ""
1286
 
1287
- #: defaults.php:107
1288
  msgid ""
1289
  "Changed the date of custom post %PostTitle% of type %PostType% from %OldDate"
1290
  "% to %NewDate%"
1291
  msgstr ""
1292
 
1293
- #: defaults.php:108
1294
  msgid "User creates a custom field for a custom post"
1295
  msgstr ""
1296
 
1297
- #: defaults.php:108
1298
  msgid ""
1299
  "Created custom field %MetaKey% with value %MetaValue% in custom post "
1300
  "%PostTitle% of type %PostType%"
1301
  msgstr ""
1302
 
1303
- #: defaults.php:109
1304
  msgid "User updates a custom field for a custom post"
1305
  msgstr ""
1306
 
1307
- #: defaults.php:109
1308
  msgid ""
1309
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
1310
  "%MetaValueNew% in custom post %PostTitle% of type %PostType%"
1311
  msgstr ""
1312
 
1313
- #: defaults.php:110
1314
  msgid "User deletes a custom field from a custom post"
1315
  msgstr ""
1316
 
1317
- #: defaults.php:110
1318
  msgid ""
1319
  "Deleted custom field %MetaKey% with value %MetaValue% from custom post "
1320
  "%PostTitle% of type %PostType%"
1321
  msgstr ""
1322
 
1323
- #: defaults.php:111
1324
  msgid "User updates a custom field name for a custom post"
1325
  msgstr ""
1326
 
1327
- #: defaults.php:111
1328
  msgid ""
1329
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
1330
  "post %PostTitle% of type %PostType%"
1331
  msgstr ""
1332
 
1333
- #: defaults.php:112
1334
  msgid "User modifies content for a published custom post"
1335
  msgstr ""
1336
 
1337
- #: defaults.php:112
1338
  msgid "Modified the content of published custom post type %PostTitle%"
1339
  msgstr ""
1340
 
1341
- #: defaults.php:113
1342
  msgid "User modifies content for a draft custom post"
1343
  msgstr ""
1344
 
1345
- #: defaults.php:113
1346
  msgid "Modified the content of draft custom post type %PostTitle%"
1347
  msgstr ""
1348
 
1349
- #: defaults.php:115
1350
  msgid "Widgets"
1351
  msgstr ""
1352
 
1353
- #: defaults.php:116
1354
  msgid "User added a new widget"
1355
  msgstr ""
1356
 
1357
- #: defaults.php:116
1358
  msgid "Added a new %WidgetName% widget in %Sidebar%"
1359
  msgstr ""
1360
 
1361
- #: defaults.php:117
1362
  msgid "User modified a widget"
1363
  msgstr ""
1364
 
1365
- #: defaults.php:117
1366
  msgid "Modified the %WidgetName% widget in %Sidebar%"
1367
  msgstr ""
1368
 
1369
- #: defaults.php:118
1370
  msgid "User deleted widget"
1371
  msgstr ""
1372
 
1373
- #: defaults.php:118
1374
  msgid "Deleted the %WidgetName% widget from %Sidebar%"
1375
  msgstr ""
1376
 
1377
- #: defaults.php:119
1378
  msgid "User moved widget"
1379
  msgstr ""
1380
 
1381
- #: defaults.php:119
1382
  msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%"
1383
  msgstr ""
1384
 
1385
- #: defaults.php:120
1386
  msgid "User changed widget position"
1387
  msgstr ""
1388
 
1389
- #: defaults.php:120
1390
  msgid ""
1391
  "Moved the %WidgetName% widget from position %OldPosition% to position "
1392
  "%NewPosition% in sidebar %Sidebar%"
1393
  msgstr ""
1394
 
1395
- #: defaults.php:122
1396
  msgid "User Profiles"
1397
  msgstr ""
1398
 
1399
- #: defaults.php:123
1400
  msgid "A new user was created on WordPress"
1401
  msgstr ""
1402
 
1403
- #: defaults.php:123
1404
  msgid ""
1405
  "User %NewUserData->Username% subscribed with a role of %NewUserData->Roles%"
1406
  msgstr ""
1407
 
1408
- #: defaults.php:124
1409
  msgid "A user created another WordPress user"
1410
  msgstr ""
1411
 
1412
- #: defaults.php:124
1413
  msgid ""
1414
  "Created a new user %NewUserData->Username% with the role of %NewUserData-"
1415
  ">Roles%"
1416
  msgstr ""
1417
 
1418
- #: defaults.php:125
1419
  msgid "The role of a user was changed by another WordPress user"
1420
  msgstr ""
1421
 
1422
- #: defaults.php:125
1423
  msgid "Changed the role of user %TargetUsername% from %OldRole% to %NewRole%"
1424
  msgstr ""
1425
 
1426
- #: defaults.php:126
1427
  msgid "User has changed his or her password"
1428
  msgstr ""
1429
 
1430
- #: defaults.php:126
1431
  msgid "Changed the password"
1432
  msgstr ""
1433
 
1434
- #: defaults.php:127
1435
  msgid "A user changed another user's password"
1436
  msgstr ""
1437
 
1438
- #: defaults.php:127
1439
  msgid ""
1440
  "Changed the password for user %TargetUserData->Username% with the role of "
1441
  "%TargetUserData->Roles%"
1442
  msgstr ""
1443
 
1444
- #: defaults.php:128
1445
  msgid "User changed his or her email address"
1446
  msgstr ""
1447
 
1448
- #: defaults.php:128
1449
  msgid "Changed the email address from %OldEmail% to %NewEmail%"
1450
  msgstr ""
1451
 
1452
- #: defaults.php:129
1453
  msgid "A user changed another user's email address"
1454
  msgstr ""
1455
 
1456
- #: defaults.php:129
1457
  msgid ""
1458
  "Changed the email address of user account %TargetUsername% from %OldEmail% "
1459
  "to %NewEmail%"
1460
  msgstr ""
1461
 
1462
- #: defaults.php:130
1463
  msgid "A user was deleted by another user"
1464
  msgstr ""
1465
 
1466
- #: defaults.php:130
1467
  msgid ""
1468
  "Deleted User %TargetUserData->Username% with the role of %TargetUserData-"
1469
  ">Roles%"
1470
  msgstr ""
1471
 
1472
- #: defaults.php:132
1473
  msgid "Plugins & Themes"
1474
  msgstr ""
1475
 
1476
- #: defaults.php:133
1477
  msgid "User installed a plugin"
1478
  msgstr ""
1479
 
1480
- #: defaults.php:133
1481
  msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%"
1482
  msgstr ""
1483
 
1484
- #: defaults.php:134
1485
  msgid "User activated a WordPress plugin"
1486
  msgstr ""
1487
 
1488
- #: defaults.php:134
1489
  msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%"
1490
  msgstr ""
1491
 
1492
- #: defaults.php:135
1493
  msgid "User deactivated a WordPress plugin"
1494
  msgstr ""
1495
 
1496
- #: defaults.php:135
1497
  msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%"
1498
  msgstr ""
1499
 
1500
- #: defaults.php:136
1501
  msgid "User uninstalled a plugin"
1502
  msgstr ""
1503
 
1504
- #: defaults.php:136
1505
  msgid ""
1506
  "Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%"
1507
  msgstr ""
1508
 
1509
- #: defaults.php:137
1510
  msgid "User upgraded a plugin"
1511
  msgstr ""
1512
 
1513
- #: defaults.php:137
1514
  msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%"
1515
  msgstr ""
1516
 
1517
- #: defaults.php:138
1518
  msgid "User installed a theme"
1519
  msgstr ""
1520
 
1521
- #: defaults.php:138
1522
  msgid "Installed theme \"%Theme->Name%\" in %Theme->get_template_directory%"
1523
  msgstr ""
1524
 
1525
- #: defaults.php:139
1526
  msgid "User activated a theme"
1527
  msgstr ""
1528
 
1529
- #: defaults.php:139
1530
  msgid ""
1531
  "Activated theme \"%Theme->Name%\", installed in %Theme-"
1532
  ">get_template_directory%"
1533
  msgstr ""
1534
 
1535
- #: defaults.php:140
1536
  msgid "User uninstalled a theme"
1537
  msgstr ""
1538
 
1539
- #: defaults.php:140
1540
  msgid ""
1541
  "Deleted theme \"%Theme->Name%\" installed in %Theme->get_template_directory%"
1542
  msgstr ""
1543
 
1544
- #: defaults.php:142
1545
  msgid "System Activity"
1546
  msgstr ""
1547
 
1548
- #: defaults.php:143
1549
  msgid "Unknown Error"
1550
  msgstr ""
1551
 
1552
- #: defaults.php:143
1553
  msgid "An unexpected error has occurred"
1554
  msgstr ""
1555
 
1556
- #: defaults.php:144
1557
  msgid "PHP error"
1558
  msgstr ""
1559
 
1560
- #: defaults.php:144 defaults.php:145 defaults.php:146 defaults.php:147
1561
- #: defaults.php:148
1562
  msgid "%Message%"
1563
  msgstr ""
1564
 
1565
- #: defaults.php:145
1566
  msgid "PHP warning"
1567
  msgstr ""
1568
 
1569
- #: defaults.php:146
1570
  msgid "PHP notice"
1571
  msgstr ""
1572
 
1573
- #: defaults.php:147
1574
  msgid "PHP exception"
1575
  msgstr ""
1576
 
1577
- #: defaults.php:148
1578
  msgid "PHP shutdown error"
1579
  msgstr ""
1580
 
1581
- #: defaults.php:149
1582
  msgid "Events automatically pruned by system"
1583
  msgstr ""
1584
 
1585
- #: defaults.php:149
1586
  msgid "%EventCount% event(s) automatically deleted by system"
1587
  msgstr ""
1588
 
1589
- #: defaults.php:150
1590
  msgid "Option Anyone Can Register in WordPress settings changed"
1591
  msgstr ""
1592
 
1593
- #: defaults.php:150
1594
  msgid "%NewValue% the option \"Anyone can register\""
1595
  msgstr ""
1596
 
1597
- #: defaults.php:151
1598
  msgid "New User Default Role changed"
1599
  msgstr ""
1600
 
1601
- #: defaults.php:151
1602
  msgid "Changed the New User Default Role from %OldRole% to %NewRole%"
1603
  msgstr ""
1604
 
1605
- #: defaults.php:152
1606
  msgid "WordPress Administrator Notification email changed"
1607
  msgstr ""
1608
 
1609
- #: defaults.php:152
1610
  msgid ""
1611
  "Changed the WordPress administrator notifications email address from "
1612
  "%OldEmail% to %NewEmail%"
1613
  msgstr ""
1614
 
1615
- #: defaults.php:153
1616
  msgid "WordPress was updated"
1617
  msgstr ""
1618
 
1619
- #: defaults.php:153
1620
  msgid "Updated WordPress from version %OldVersion% to %NewVersion%"
1621
  msgstr ""
1622
 
1623
- #: defaults.php:154
1624
  msgid "User changes the WordPress Permalinks"
1625
  msgstr ""
1626
 
1627
- #: defaults.php:154
1628
  msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%"
1629
  msgstr ""
1630
 
1631
- #: defaults.php:156
1632
  msgid "MultiSite"
1633
  msgstr ""
1634
 
1635
- #: defaults.php:157
1636
  msgid "User granted Super Admin privileges"
1637
  msgstr ""
1638
 
1639
- #: defaults.php:157
1640
  msgid "Granted Super Admin privileges to %TargetUsername%"
1641
  msgstr ""
1642
 
1643
- #: defaults.php:158
1644
  msgid "User revoked from Super Admin privileges"
1645
  msgstr ""
1646
 
1647
- #: defaults.php:158
1648
  msgid "Revoked Super Admin privileges from %TargetUsername%"
1649
  msgstr ""
1650
 
1651
- #: defaults.php:159
1652
  msgid "Existing user added to a site"
1653
  msgstr ""
1654
 
1655
- #: defaults.php:159
1656
  msgid ""
1657
  "Added existing user %TargetUsername% with %TargetUserRole% role to site "
1658
  "%SiteName%"
1659
  msgstr ""
1660
 
1661
- #: defaults.php:160
1662
  msgid "User removed from site"
1663
  msgstr ""
1664
 
1665
- #: defaults.php:160
1666
  msgid ""
1667
  "Removed user %TargetUsername% with role %TargetUserRole% from %SiteName% site"
1668
  msgstr ""
1669
 
1670
- #: defaults.php:161
1671
  msgid "New network user created"
1672
  msgstr ""
1673
 
1674
- #: defaults.php:161
1675
  msgid "Created a new network user %NewUserData->Username%"
1676
  msgstr ""
1677
 
1678
- #: defaults.php:162
1679
  msgid "New site added on network"
1680
  msgstr ""
1681
 
1682
- #: defaults.php:162
1683
  msgid "Added site %SiteName% to the network"
1684
  msgstr ""
1685
 
1686
- #: defaults.php:163
1687
  msgid "Existing site archived"
1688
  msgstr ""
1689
 
1690
- #: defaults.php:163
1691
  msgid "Archived site %SiteName%"
1692
  msgstr ""
1693
 
1694
- #: defaults.php:164
1695
  msgid "Archived site has been unarchived"
1696
  msgstr ""
1697
 
1698
- #: defaults.php:164
1699
  msgid "Unarchived site %SiteName%"
1700
  msgstr ""
1701
 
1702
- #: defaults.php:165
1703
  msgid "Deactivated site has been activated"
1704
  msgstr ""
1705
 
1706
- #: defaults.php:165
1707
  msgid "Activated site %SiteName%"
1708
  msgstr ""
1709
 
1710
- #: defaults.php:166
1711
  msgid "Site has been deactivated"
1712
  msgstr ""
1713
 
1714
- #: defaults.php:166
1715
  msgid "Deactivated site %SiteName%"
1716
  msgstr ""
1717
 
1718
- #: defaults.php:167
1719
  msgid "Existing site deleted from network"
1720
  msgstr ""
1721
 
1722
- #: defaults.php:167
1723
  msgid "Deleted site %SiteName%"
1724
  msgstr ""
1725
 
1726
- #: defaults.php:168
1727
  msgid "Activated theme on network"
1728
  msgstr ""
1729
 
1730
- #: defaults.php:168
1731
  msgid ""
1732
  "Network activated %Theme->Name% theme installed in %Theme-"
1733
  ">get_template_directory%"
1734
  msgstr ""
1735
 
1736
- #: defaults.php:169
1737
  msgid "Deactivated theme from network"
1738
  msgstr ""
1739
 
1740
- #: defaults.php:169
1741
  msgid ""
1742
  "Network deactivated %Theme->Name% theme installed in %Theme-"
1743
  ">get_template_directory%"
1744
  msgstr ""
1745
 
1746
- #: wp-security-audit-log.php:193
1747
  msgid ""
1748
  "You are using a version of PHP that is older than %s, which is no longer "
1749
  "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.4.0\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/wp-security-audit-"
7
+ "log\n"
8
+ "POT-Creation-Date: 2015-02-24 09:09:21+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
33
  msgid "All Sites"
34
  msgstr ""
35
 
36
+ #: classes/AuditLogListView.php:113 classes/Views/ToggleAlerts.php:69
37
  msgid "Code"
38
  msgstr ""
39
 
40
+ #: classes/AuditLogListView.php:114 classes/Views/ToggleAlerts.php:70
41
  msgid "Type"
42
  msgstr ""
43
 
222
  msgstr ""
223
 
224
  #: classes/Views/AuditLog.php:64 classes/Views/Licensing.php:34
225
+ #: classes/Views/Settings.php:82 classes/Views/ToggleAlerts.php:28
226
  msgid "You do not have sufficient permissions to access this page."
227
  msgstr ""
228
 
421
  msgstr ""
422
 
423
  #: classes/Views/Licensing.php:39 classes/Views/Settings.php:87
424
+ #: classes/Views/ToggleAlerts.php:43
425
  msgid "Settings have been saved."
426
  msgstr ""
427
 
428
  #: classes/Views/Licensing.php:41 classes/Views/Settings.php:89
429
+ #: classes/Views/ToggleAlerts.php:45
430
  msgid "Error: "
431
  msgstr ""
432
 
442
  msgid "Inactive"
443
  msgstr ""
444
 
445
+ #: classes/Views/Settings.php:17 classes/Views/Settings.php:25
446
  msgid "Settings"
447
  msgstr ""
448
 
555
  msgstr ""
556
 
557
  #: classes/Views/Settings.php:262
558
+ msgid "Refresh Audit Log Viewer"
559
  msgstr ""
560
 
561
  #: classes/Views/Settings.php:268
563
  msgstr ""
564
 
565
  #: classes/Views/Settings.php:270
566
+ msgid "Refresh Audit Log Viewer as soon as there are new alerts."
567
  msgstr ""
568
 
569
  #: classes/Views/Settings.php:274
571
  msgstr ""
572
 
573
  #: classes/Views/Settings.php:276
574
+ msgid "Refresh Audit Log Viewer only when the page is reloaded."
575
  msgstr ""
576
 
577
  #: classes/Views/Settings.php:282
631
  "0 in the wp_options table."
632
  msgstr ""
633
 
634
+ #: classes/Views/Settings.php:341
635
+ msgid "Remove Data on Unistall"
636
+ msgstr ""
637
+
638
+ #: classes/Views/ToggleAlerts.php:5 classes/Views/ToggleAlerts.php:13
639
  msgid "Enable/Disable Alerts"
640
  msgstr ""
641
 
642
+ #: classes/Views/ToggleAlerts.php:71 classes/WidgetManager.php:38
643
  msgid "Description"
644
  msgstr ""
645
 
646
+ #: classes/Views/ToggleAlerts.php:80
647
  msgid "Not Implemented"
648
  msgstr ""
649
 
650
+ #: classes/Views/ToggleAlerts.php:83
651
  msgid "Not Available"
652
  msgstr ""
653
 
654
+ #: classes/Views/ToggleAlerts.php:97
655
  msgid "Save Changes"
656
  msgstr ""
657
 
755
  msgid "Successfully logged out"
756
  msgstr ""
757
 
758
+ #: defaults.php:41 defaults.php:42
759
  msgid "Login failed"
760
  msgstr ""
761
 
764
  msgstr ""
765
 
766
  #: defaults.php:42
767
+ msgid "%Attempts% failed login(s) detected using non existing user."
768
+ msgstr ""
769
+
770
+ #: defaults.php:43
771
  msgid "User uploaded file from Uploads directory"
772
  msgstr ""
773
 
774
+ #: defaults.php:43
775
  msgid "Uploaded the file %FileName% in %FilePath%"
776
  msgstr ""
777
 
778
+ #: defaults.php:44
779
  msgid "User deleted file from Uploads directory"
780
  msgstr ""
781
 
782
+ #: defaults.php:44
783
  msgid "Deleted the file %FileName% from %FilePath%"
784
  msgstr ""
785
 
786
+ #: defaults.php:45
787
  msgid "User changed a file using the theme editor"
788
  msgstr ""
789
 
790
+ #: defaults.php:45
791
  msgid "Modified %File% with the Theme Editor"
792
  msgstr ""
793
 
794
+ #: defaults.php:46
795
  msgid "User changed a file using the plugin editor"
796
  msgstr ""
797
 
798
+ #: defaults.php:46
799
  msgid "Modified %File% with the Plugin Editor"
800
  msgstr ""
801
 
802
+ #: defaults.php:48
803
  msgid "Blog Posts"
804
  msgstr ""
805
 
806
+ #: defaults.php:49
807
  msgid "User created a new blog post and saved it as draft"
808
  msgstr ""
809
 
810
+ #: defaults.php:49
811
  msgid "Created a new blog post called %PostTitle%. Blog post ID is %PostID%"
812
  msgstr ""
813
 
814
+ #: defaults.php:50
815
  msgid "User published a blog post"
816
  msgstr ""
817
 
818
+ #: defaults.php:50
819
  msgid "Published a blog post called %PostTitle%. Blog post URL is %PostUrl%"
820
  msgstr ""
821
 
822
+ #: defaults.php:51
823
  msgid "User modified a published blog post"
824
  msgstr ""
825
 
826
+ #: defaults.php:51
827
  msgid ""
828
  "Modified the published blog post %PostTitle%. Blog post URL is %PostUrl%"
829
  msgstr ""
830
 
831
+ #: defaults.php:52
832
  msgid "User modified a draft blog post"
833
  msgstr ""
834
 
835
+ #: defaults.php:52
836
  msgid "Modified the draft blog post %PostTitle%. Blog post ID is %PostID%"
837
  msgstr ""
838
 
839
+ #: defaults.php:53
840
  msgid "User permanently deleted a blog post from the trash"
841
  msgstr ""
842
 
843
+ #: defaults.php:53
844
  msgid "Permanently deleted the post %PostTitle%. Blog post ID is %PostID%"
845
  msgstr ""
846
 
847
+ #: defaults.php:54
848
  msgid "User moved a blog post to the trash"
849
  msgstr ""
850
 
851
+ #: defaults.php:54
852
  msgid "Moved the blog post %PostTitle% to trash"
853
  msgstr ""
854
 
855
+ #: defaults.php:55
856
  msgid "User restored a blog post from trash"
857
  msgstr ""
858
 
859
+ #: defaults.php:55
860
  msgid "Restored post %PostTitle% from trash"
861
  msgstr ""
862
 
863
+ #: defaults.php:56
864
  msgid "User changed blog post category"
865
  msgstr ""
866
 
867
+ #: defaults.php:56
868
  msgid ""
869
  "Changed the category of the post %PostTitle% from %OldCategories% to "
870
  "%NewCategories%"
871
  msgstr ""
872
 
873
+ #: defaults.php:57
874
  msgid "User changed blog post URL"
875
  msgstr ""
876
 
877
+ #: defaults.php:57
878
  msgid "Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%"
879
  msgstr ""
880
 
881
+ #: defaults.php:58
882
  msgid "User changed blog post author"
883
  msgstr ""
884
 
885
+ #: defaults.php:58
886
  msgid "Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%"
887
  msgstr ""
888
 
889
+ #: defaults.php:59
890
  msgid "User changed blog post status"
891
  msgstr ""
892
 
893
+ #: defaults.php:59
894
  msgid "Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%"
895
  msgstr ""
896
 
897
+ #: defaults.php:60
898
  msgid "User created new category"
899
  msgstr ""
900
 
901
+ #: defaults.php:60
902
  msgid "Created a new category called %CategoryName%"
903
  msgstr ""
904
 
905
+ #: defaults.php:61
906
  msgid "User deleted category"
907
  msgstr ""
908
 
909
+ #: defaults.php:61
910
  msgid "Deleted the %CategoryName% category"
911
  msgstr ""
912
 
913
+ #: defaults.php:62
914
  msgid "User changed the visibility of a blog post"
915
  msgstr ""
916
 
917
+ #: defaults.php:62
918
  msgid ""
919
  "Changed the visibility of %PostTitle% blog post from %OldVisibility% to "
920
  "%NewVisibility%"
921
  msgstr ""
922
 
923
+ #: defaults.php:63
924
  msgid "User changed the date of a blog post"
925
  msgstr ""
926
 
927
+ #: defaults.php:63
928
  msgid "Changed the date of %PostTitle% blog post from %OldDate% to %NewDate%"
929
  msgstr ""
930
 
931
+ #: defaults.php:64
932
  msgid "User sets a post as sticky"
933
  msgstr ""
934
 
935
+ #: defaults.php:64
936
  msgid "Set the post %PostTitle% as Sticky"
937
  msgstr ""
938
 
939
+ #: defaults.php:65
940
  msgid "User removes post from sticky"
941
  msgstr ""
942
 
943
+ #: defaults.php:65
944
  msgid "Removed the post %PostTitle% from Sticky"
945
  msgstr ""
946
 
947
+ #: defaults.php:66
948
  msgid "User creates a custom field for a post"
949
  msgstr ""
950
 
951
+ #: defaults.php:66
952
  msgid ""
953
  "Created custom field %MetaKey% with value %MetaValue% in post %PostTitle%"
954
  msgstr ""
955
 
956
+ #: defaults.php:67
957
  msgid "User updates a custom field value for a post"
958
  msgstr ""
959
 
960
+ #: defaults.php:67
961
  msgid ""
962
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
963
  "%MetaValueNew% in post %PostTitle%"
964
  msgstr ""
965
 
966
+ #: defaults.php:68
967
  msgid "User deletes a custom field from a post"
968
  msgstr ""
969
 
970
+ #: defaults.php:68
971
  msgid ""
972
  "Deleted custom field %MetaKey% with value %MetaValue% from post %PostTitle%"
973
  msgstr ""
974
 
975
+ #: defaults.php:69
976
  msgid "User updates a custom field name for a post"
977
  msgstr ""
978
 
979
+ #: defaults.php:69
980
  msgid ""
981
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in post "
982
  "%PostTitle%"
983
  msgstr ""
984
 
985
+ #: defaults.php:70
986
  msgid "User modifies content for a published post"
987
  msgstr ""
988
 
989
+ #: defaults.php:70
990
  msgid "Modified the content of published post %PostTitle%"
991
  msgstr ""
992
 
993
+ #: defaults.php:71
994
  msgid "User modifies content for a draft post"
995
  msgstr ""
996
 
997
+ #: defaults.php:71
998
  msgid "Modified the content of draft post %PostTitle%"
999
  msgstr ""
1000
 
1001
+ #: defaults.php:73
1002
  msgid "Pages"
1003
  msgstr ""
1004
 
1005
+ #: defaults.php:74
1006
  msgid "User created a new WordPress page and saved it as draft"
1007
  msgstr ""
1008
 
1009
+ #: defaults.php:74
1010
  msgid "Created a new page called %PostTitle%. Page ID is %PostID%"
1011
  msgstr ""
1012
 
1013
+ #: defaults.php:75
1014
  msgid "User published a WorPress page"
1015
  msgstr ""
1016
 
1017
+ #: defaults.php:75
1018
  msgid "Published a page called %PostTitle%. Page URL is %PostUrl%"
1019
  msgstr ""
1020
 
1021
+ #: defaults.php:76
1022
  msgid "User modified a published WordPress page"
1023
  msgstr ""
1024
 
1025
+ #: defaults.php:76
1026
  msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%"
1027
  msgstr ""
1028
 
1029
+ #: defaults.php:77
1030
  msgid "User modified a draft WordPress page"
1031
  msgstr ""
1032
 
1033
+ #: defaults.php:77
1034
  msgid "Modified the draft page %PostTitle%. Page ID is %PostID%"
1035
  msgstr ""
1036
 
1037
+ #: defaults.php:78
1038
  msgid "User permanently deleted a page from the trash"
1039
  msgstr ""
1040
 
1041
+ #: defaults.php:78
1042
  msgid "Permanently deleted the page %PostTitle%. Page ID is %PostID%"
1043
  msgstr ""
1044
 
1045
+ #: defaults.php:79
1046
  msgid "User moved WordPress page to the trash"
1047
  msgstr ""
1048
 
1049
+ #: defaults.php:79
1050
  msgid "Moved the page %PostTitle% to trash"
1051
  msgstr ""
1052
 
1053
+ #: defaults.php:80
1054
  msgid "User restored a WordPress page from trash"
1055
  msgstr ""
1056
 
1057
+ #: defaults.php:80
1058
  msgid "Restored page %PostTitle% from trash"
1059
  msgstr ""
1060
 
1061
+ #: defaults.php:81
1062
  msgid "User changed page URL"
1063
  msgstr ""
1064
 
1065
+ #: defaults.php:81
1066
  msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%"
1067
  msgstr ""
1068
 
1069
+ #: defaults.php:82
1070
  msgid "User changed page author"
1071
  msgstr ""
1072
 
1073
+ #: defaults.php:82
1074
  msgid "Changed the author of %PostTitle% page from %OldAuthor% to %NewAuthor%"
1075
  msgstr ""
1076
 
1077
+ #: defaults.php:83
1078
  msgid "User changed page status"
1079
  msgstr ""
1080
 
1081
+ #: defaults.php:83
1082
  msgid "Changed the status of %PostTitle% page from %OldStatus% to %NewStatus%"
1083
  msgstr ""
1084
 
1085
+ #: defaults.php:84
1086
  msgid "User changed the visibility of a page post"
1087
  msgstr ""
1088
 
1089
+ #: defaults.php:84
1090
  msgid ""
1091
  "Changed the visibility of %PostTitle% page from %OldVisibility% to "
1092
  "%NewVisibility%"
1093
  msgstr ""
1094
 
1095
+ #: defaults.php:85
1096
  msgid "User changed the date of a page post"
1097
  msgstr ""
1098
 
1099
+ #: defaults.php:85
1100
  msgid "Changed the date of %PostTitle% page from %OldDate% to %NewDate%"
1101
  msgstr ""
1102
 
1103
+ #: defaults.php:86
1104
  msgid "User changed the parent of a page"
1105
  msgstr ""
1106
 
1107
+ #: defaults.php:86
1108
  msgid ""
1109
  "Changed the parent of %PostTitle% page from %OldParentName% to %NewParentName"
1110
  "%"
1111
  msgstr ""
1112
 
1113
+ #: defaults.php:87
1114
  msgid "User changes the template of a page"
1115
  msgstr ""
1116
 
1117
+ #: defaults.php:87
1118
  msgid ""
1119
  "Changed the template of %PostTitle% page from %OldTemplate% to %NewTemplate%"
1120
  msgstr ""
1121
 
1122
+ #: defaults.php:88
1123
  msgid "User creates a custom field for a page"
1124
  msgstr ""
1125
 
1126
+ #: defaults.php:88
1127
  msgid ""
1128
  "Created custom field %MetaKey% with value %MetaValue% in page %PostTitle%"
1129
  msgstr ""
1130
 
1131
+ #: defaults.php:89
1132
  msgid "User updates a custom field value for a page"
1133
  msgstr ""
1134
 
1135
+ #: defaults.php:89
1136
  msgid ""
1137
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
1138
  "%MetaValueNew% in page %PostTitle%"
1139
  msgstr ""
1140
 
1141
+ #: defaults.php:90
1142
  msgid "User deletes a custom field from a page"
1143
  msgstr ""
1144
 
1145
+ #: defaults.php:90
1146
  msgid ""
1147
  "Deleted custom field %MetaKey% with value %MetaValue% from page %PostTitle%"
1148
  msgstr ""
1149
 
1150
+ #: defaults.php:91
1151
  msgid "User updates a custom field name for a page"
1152
  msgstr ""
1153
 
1154
+ #: defaults.php:91
1155
  msgid ""
1156
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in page "
1157
  "%PostTitle%"
1158
  msgstr ""
1159
 
1160
+ #: defaults.php:92
1161
  msgid "User modifies content for a published page"
1162
  msgstr ""
1163
 
1164
+ #: defaults.php:92
1165
  msgid "Modified the content of published page %PostTitle%"
1166
  msgstr ""
1167
 
1168
+ #: defaults.php:93
1169
  msgid "User modifies content for a draft page"
1170
  msgstr ""
1171
 
1172
+ #: defaults.php:93
1173
  msgid "Modified the content of draft page %PostTitle%"
1174
  msgstr ""
1175
 
1176
+ #: defaults.php:95
1177
  msgid "Custom Posts"
1178
  msgstr ""
1179
 
1180
+ #: defaults.php:96
1181
  msgid "User created a new post with custom post type and saved it as draft"
1182
  msgstr ""
1183
 
1184
+ #: defaults.php:96
1185
  msgid ""
1186
  "Created a new custom post called %PostTitle% of type %PostType%. Post ID is "
1187
  "%PostID%"
1188
  msgstr ""
1189
 
1190
+ #: defaults.php:97
1191
  msgid "User published a post with custom post type"
1192
  msgstr ""
1193
 
1194
+ #: defaults.php:97
1195
  msgid ""
1196
  "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
1197
  msgstr ""
1198
 
1199
+ #: defaults.php:98
1200
  msgid "User modified a post with custom post type"
1201
  msgstr ""
1202
 
1203
+ #: defaults.php:98
1204
  msgid ""
1205
  "Modified custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
1206
  msgstr ""
1207
 
1208
+ #: defaults.php:99
1209
  msgid "User modified a draft post with custom post type"
1210
  msgstr ""
1211
 
1212
+ #: defaults.php:99
1213
  msgid ""
1214
  "Modified draft custom post %PostTitle% of type is %PostType%. Post URL is "
1215
  "%PostUrl%"
1216
  msgstr ""
1217
 
1218
+ #: defaults.php:100
1219
  msgid "User permanently deleted post with custom post type"
1220
  msgstr ""
1221
 
1222
+ #: defaults.php:100
1223
  msgid "Permanently Deleted custom post %PostTitle% of type %PostType%"
1224
  msgstr ""
1225
 
1226
+ #: defaults.php:101
1227
  msgid "User moved post with custom post type to trash"
1228
  msgstr ""
1229
 
1230
+ #: defaults.php:101
1231
  msgid "Moved custom post %PostTitle% to trash. Post type is %PostType%"
1232
  msgstr ""
1233
 
1234
+ #: defaults.php:102
1235
  msgid "User restored post with custom post type from trash"
1236
  msgstr ""
1237
 
1238
+ #: defaults.php:102
1239
  msgid "Restored custom post %PostTitle% of type %PostType% from trash"
1240
  msgstr ""
1241
 
1242
+ #: defaults.php:103
1243
  msgid "User changed the category of a post with custom post type"
1244
  msgstr ""
1245
 
1246
+ #: defaults.php:103
1247
  msgid ""
1248
  "Changed the category(ies) of custom post %PostTitle% of type %PostType% from "
1249
  "%OldCategories% to %NewCategories%"
1250
  msgstr ""
1251
 
1252
+ #: defaults.php:104
1253
  msgid "User changed the URL of a post with custom post type"
1254
  msgstr ""
1255
 
1256
+ #: defaults.php:104
1257
  msgid ""
1258
  "Changed the URL of custom post %PostTitle% of type %PostType% from %OldUrl% "
1259
  "to %NewUrl%"
1260
  msgstr ""
1261
 
1262
+ #: defaults.php:105
1263
  msgid "User changed the author or post with custom post type"
1264
  msgstr ""
1265
 
1266
+ #: defaults.php:105
1267
  msgid ""
1268
  "Changed the author of custom post %PostTitle% of type %PostType% from "
1269
  "%OldAuthor% to %NewAuthor%"
1270
  msgstr ""
1271
 
1272
+ #: defaults.php:106
1273
  msgid "User changed the status of post with custom post type"
1274
  msgstr ""
1275
 
1276
+ #: defaults.php:106
1277
  msgid ""
1278
  "Changed the status of custom post %PostTitle% of type %PostType% from "
1279
  "%OldStatus% to %NewStatus%"
1280
  msgstr ""
1281
 
1282
+ #: defaults.php:107
1283
  msgid "User changed the visibility of a post with custom post type"
1284
  msgstr ""
1285
 
1286
+ #: defaults.php:107
1287
  msgid ""
1288
  "Changed the visibility of custom post %PostTitle% of type %PostType% from "
1289
  "%OldVisibility% to %NewVisibility%"
1290
  msgstr ""
1291
 
1292
+ #: defaults.php:108
1293
  msgid "User changed the date of post with custom post type"
1294
  msgstr ""
1295
 
1296
+ #: defaults.php:108
1297
  msgid ""
1298
  "Changed the date of custom post %PostTitle% of type %PostType% from %OldDate"
1299
  "% to %NewDate%"
1300
  msgstr ""
1301
 
1302
+ #: defaults.php:109
1303
  msgid "User creates a custom field for a custom post"
1304
  msgstr ""
1305
 
1306
+ #: defaults.php:109
1307
  msgid ""
1308
  "Created custom field %MetaKey% with value %MetaValue% in custom post "
1309
  "%PostTitle% of type %PostType%"
1310
  msgstr ""
1311
 
1312
+ #: defaults.php:110
1313
  msgid "User updates a custom field for a custom post"
1314
  msgstr ""
1315
 
1316
+ #: defaults.php:110
1317
  msgid ""
1318
  "Modified the value of custom field %MetaKey% from %MetaValueOld% to "
1319
  "%MetaValueNew% in custom post %PostTitle% of type %PostType%"
1320
  msgstr ""
1321
 
1322
+ #: defaults.php:111
1323
  msgid "User deletes a custom field from a custom post"
1324
  msgstr ""
1325
 
1326
+ #: defaults.php:111
1327
  msgid ""
1328
  "Deleted custom field %MetaKey% with value %MetaValue% from custom post "
1329
  "%PostTitle% of type %PostType%"
1330
  msgstr ""
1331
 
1332
+ #: defaults.php:112
1333
  msgid "User updates a custom field name for a custom post"
1334
  msgstr ""
1335
 
1336
+ #: defaults.php:112
1337
  msgid ""
1338
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
1339
  "post %PostTitle% of type %PostType%"
1340
  msgstr ""
1341
 
1342
+ #: defaults.php:113
1343
  msgid "User modifies content for a published custom post"
1344
  msgstr ""
1345
 
1346
+ #: defaults.php:113
1347
  msgid "Modified the content of published custom post type %PostTitle%"
1348
  msgstr ""
1349
 
1350
+ #: defaults.php:114
1351
  msgid "User modifies content for a draft custom post"
1352
  msgstr ""
1353
 
1354
+ #: defaults.php:114
1355
  msgid "Modified the content of draft custom post type %PostTitle%"
1356
  msgstr ""
1357
 
1358
+ #: defaults.php:116
1359
  msgid "Widgets"
1360
  msgstr ""
1361
 
1362
+ #: defaults.php:117
1363
  msgid "User added a new widget"
1364
  msgstr ""
1365
 
1366
+ #: defaults.php:117
1367
  msgid "Added a new %WidgetName% widget in %Sidebar%"
1368
  msgstr ""
1369
 
1370
+ #: defaults.php:118
1371
  msgid "User modified a widget"
1372
  msgstr ""
1373
 
1374
+ #: defaults.php:118
1375
  msgid "Modified the %WidgetName% widget in %Sidebar%"
1376
  msgstr ""
1377
 
1378
+ #: defaults.php:119
1379
  msgid "User deleted widget"
1380
  msgstr ""
1381
 
1382
+ #: defaults.php:119
1383
  msgid "Deleted the %WidgetName% widget from %Sidebar%"
1384
  msgstr ""
1385
 
1386
+ #: defaults.php:120
1387
  msgid "User moved widget"
1388
  msgstr ""
1389
 
1390
+ #: defaults.php:120
1391
  msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%"
1392
  msgstr ""
1393
 
1394
+ #: defaults.php:121
1395
  msgid "User changed widget position"
1396
  msgstr ""
1397
 
1398
+ #: defaults.php:121
1399
  msgid ""
1400
  "Moved the %WidgetName% widget from position %OldPosition% to position "
1401
  "%NewPosition% in sidebar %Sidebar%"
1402
  msgstr ""
1403
 
1404
+ #: defaults.php:123
1405
  msgid "User Profiles"
1406
  msgstr ""
1407
 
1408
+ #: defaults.php:124
1409
  msgid "A new user was created on WordPress"
1410
  msgstr ""
1411
 
1412
+ #: defaults.php:124
1413
  msgid ""
1414
  "User %NewUserData->Username% subscribed with a role of %NewUserData->Roles%"
1415
  msgstr ""
1416
 
1417
+ #: defaults.php:125
1418
  msgid "A user created another WordPress user"
1419
  msgstr ""
1420
 
1421
+ #: defaults.php:125
1422
  msgid ""
1423
  "Created a new user %NewUserData->Username% with the role of %NewUserData-"
1424
  ">Roles%"
1425
  msgstr ""
1426
 
1427
+ #: defaults.php:126
1428
  msgid "The role of a user was changed by another WordPress user"
1429
  msgstr ""
1430
 
1431
+ #: defaults.php:126
1432
  msgid "Changed the role of user %TargetUsername% from %OldRole% to %NewRole%"
1433
  msgstr ""
1434
 
1435
+ #: defaults.php:127
1436
  msgid "User has changed his or her password"
1437
  msgstr ""
1438
 
1439
+ #: defaults.php:127
1440
  msgid "Changed the password"
1441
  msgstr ""
1442
 
1443
+ #: defaults.php:128
1444
  msgid "A user changed another user's password"
1445
  msgstr ""
1446
 
1447
+ #: defaults.php:128
1448
  msgid ""
1449
  "Changed the password for user %TargetUserData->Username% with the role of "
1450
  "%TargetUserData->Roles%"
1451
  msgstr ""
1452
 
1453
+ #: defaults.php:129
1454
  msgid "User changed his or her email address"
1455
  msgstr ""
1456
 
1457
+ #: defaults.php:129
1458
  msgid "Changed the email address from %OldEmail% to %NewEmail%"
1459
  msgstr ""
1460
 
1461
+ #: defaults.php:130
1462
  msgid "A user changed another user's email address"
1463
  msgstr ""
1464
 
1465
+ #: defaults.php:130
1466
  msgid ""
1467
  "Changed the email address of user account %TargetUsername% from %OldEmail% "
1468
  "to %NewEmail%"
1469
  msgstr ""
1470
 
1471
+ #: defaults.php:131
1472
  msgid "A user was deleted by another user"
1473
  msgstr ""
1474
 
1475
+ #: defaults.php:131
1476
  msgid ""
1477
  "Deleted User %TargetUserData->Username% with the role of %TargetUserData-"
1478
  ">Roles%"
1479
  msgstr ""
1480
 
1481
+ #: defaults.php:133
1482
  msgid "Plugins & Themes"
1483
  msgstr ""
1484
 
1485
+ #: defaults.php:134
1486
  msgid "User installed a plugin"
1487
  msgstr ""
1488
 
1489
+ #: defaults.php:134
1490
  msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%"
1491
  msgstr ""
1492
 
1493
+ #: defaults.php:135
1494
  msgid "User activated a WordPress plugin"
1495
  msgstr ""
1496
 
1497
+ #: defaults.php:135
1498
  msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%"
1499
  msgstr ""
1500
 
1501
+ #: defaults.php:136
1502
  msgid "User deactivated a WordPress plugin"
1503
  msgstr ""
1504
 
1505
+ #: defaults.php:136
1506
  msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%"
1507
  msgstr ""
1508
 
1509
+ #: defaults.php:137
1510
  msgid "User uninstalled a plugin"
1511
  msgstr ""
1512
 
1513
+ #: defaults.php:137
1514
  msgid ""
1515
  "Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%"
1516
  msgstr ""
1517
 
1518
+ #: defaults.php:138
1519
  msgid "User upgraded a plugin"
1520
  msgstr ""
1521
 
1522
+ #: defaults.php:138
1523
  msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%"
1524
  msgstr ""
1525
 
1526
+ #: defaults.php:139
1527
  msgid "User installed a theme"
1528
  msgstr ""
1529
 
1530
+ #: defaults.php:139
1531
  msgid "Installed theme \"%Theme->Name%\" in %Theme->get_template_directory%"
1532
  msgstr ""
1533
 
1534
+ #: defaults.php:140
1535
  msgid "User activated a theme"
1536
  msgstr ""
1537
 
1538
+ #: defaults.php:140
1539
  msgid ""
1540
  "Activated theme \"%Theme->Name%\", installed in %Theme-"
1541
  ">get_template_directory%"
1542
  msgstr ""
1543
 
1544
+ #: defaults.php:141
1545
  msgid "User uninstalled a theme"
1546
  msgstr ""
1547
 
1548
+ #: defaults.php:141
1549
  msgid ""
1550
  "Deleted theme \"%Theme->Name%\" installed in %Theme->get_template_directory%"
1551
  msgstr ""
1552
 
1553
+ #: defaults.php:143
1554
  msgid "System Activity"
1555
  msgstr ""
1556
 
1557
+ #: defaults.php:144
1558
  msgid "Unknown Error"
1559
  msgstr ""
1560
 
1561
+ #: defaults.php:144
1562
  msgid "An unexpected error has occurred"
1563
  msgstr ""
1564
 
1565
+ #: defaults.php:145
1566
  msgid "PHP error"
1567
  msgstr ""
1568
 
1569
+ #: defaults.php:145 defaults.php:146 defaults.php:147 defaults.php:148
1570
+ #: defaults.php:149
1571
  msgid "%Message%"
1572
  msgstr ""
1573
 
1574
+ #: defaults.php:146
1575
  msgid "PHP warning"
1576
  msgstr ""
1577
 
1578
+ #: defaults.php:147
1579
  msgid "PHP notice"
1580
  msgstr ""
1581
 
1582
+ #: defaults.php:148
1583
  msgid "PHP exception"
1584
  msgstr ""
1585
 
1586
+ #: defaults.php:149
1587
  msgid "PHP shutdown error"
1588
  msgstr ""
1589
 
1590
+ #: defaults.php:150
1591
  msgid "Events automatically pruned by system"
1592
  msgstr ""
1593
 
1594
+ #: defaults.php:150
1595
  msgid "%EventCount% event(s) automatically deleted by system"
1596
  msgstr ""
1597
 
1598
+ #: defaults.php:151
1599
  msgid "Option Anyone Can Register in WordPress settings changed"
1600
  msgstr ""
1601
 
1602
+ #: defaults.php:151
1603
  msgid "%NewValue% the option \"Anyone can register\""
1604
  msgstr ""
1605
 
1606
+ #: defaults.php:152
1607
  msgid "New User Default Role changed"
1608
  msgstr ""
1609
 
1610
+ #: defaults.php:152
1611
  msgid "Changed the New User Default Role from %OldRole% to %NewRole%"
1612
  msgstr ""
1613
 
1614
+ #: defaults.php:153
1615
  msgid "WordPress Administrator Notification email changed"
1616
  msgstr ""
1617
 
1618
+ #: defaults.php:153
1619
  msgid ""
1620
  "Changed the WordPress administrator notifications email address from "
1621
  "%OldEmail% to %NewEmail%"
1622
  msgstr ""
1623
 
1624
+ #: defaults.php:154
1625
  msgid "WordPress was updated"
1626
  msgstr ""
1627
 
1628
+ #: defaults.php:154
1629
  msgid "Updated WordPress from version %OldVersion% to %NewVersion%"
1630
  msgstr ""
1631
 
1632
+ #: defaults.php:155
1633
  msgid "User changes the WordPress Permalinks"
1634
  msgstr ""
1635
 
1636
+ #: defaults.php:155
1637
  msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%"
1638
  msgstr ""
1639
 
1640
+ #: defaults.php:157
1641
  msgid "MultiSite"
1642
  msgstr ""
1643
 
1644
+ #: defaults.php:158
1645
  msgid "User granted Super Admin privileges"
1646
  msgstr ""
1647
 
1648
+ #: defaults.php:158
1649
  msgid "Granted Super Admin privileges to %TargetUsername%"
1650
  msgstr ""
1651
 
1652
+ #: defaults.php:159
1653
  msgid "User revoked from Super Admin privileges"
1654
  msgstr ""
1655
 
1656
+ #: defaults.php:159
1657
  msgid "Revoked Super Admin privileges from %TargetUsername%"
1658
  msgstr ""
1659
 
1660
+ #: defaults.php:160
1661
  msgid "Existing user added to a site"
1662
  msgstr ""
1663
 
1664
+ #: defaults.php:160
1665
  msgid ""
1666
  "Added existing user %TargetUsername% with %TargetUserRole% role to site "
1667
  "%SiteName%"
1668
  msgstr ""
1669
 
1670
+ #: defaults.php:161
1671
  msgid "User removed from site"
1672
  msgstr ""
1673
 
1674
+ #: defaults.php:161
1675
  msgid ""
1676
  "Removed user %TargetUsername% with role %TargetUserRole% from %SiteName% site"
1677
  msgstr ""
1678
 
1679
+ #: defaults.php:162
1680
  msgid "New network user created"
1681
  msgstr ""
1682
 
1683
+ #: defaults.php:162
1684
  msgid "Created a new network user %NewUserData->Username%"
1685
  msgstr ""
1686
 
1687
+ #: defaults.php:163
1688
  msgid "New site added on network"
1689
  msgstr ""
1690
 
1691
+ #: defaults.php:163
1692
  msgid "Added site %SiteName% to the network"
1693
  msgstr ""
1694
 
1695
+ #: defaults.php:164
1696
  msgid "Existing site archived"
1697
  msgstr ""
1698
 
1699
+ #: defaults.php:164
1700
  msgid "Archived site %SiteName%"
1701
  msgstr ""
1702
 
1703
+ #: defaults.php:165
1704
  msgid "Archived site has been unarchived"
1705
  msgstr ""
1706
 
1707
+ #: defaults.php:165
1708
  msgid "Unarchived site %SiteName%"
1709
  msgstr ""
1710
 
1711
+ #: defaults.php:166
1712
  msgid "Deactivated site has been activated"
1713
  msgstr ""
1714
 
1715
+ #: defaults.php:166
1716
  msgid "Activated site %SiteName%"
1717
  msgstr ""
1718
 
1719
+ #: defaults.php:167
1720
  msgid "Site has been deactivated"
1721
  msgstr ""
1722
 
1723
+ #: defaults.php:167
1724
  msgid "Deactivated site %SiteName%"
1725
  msgstr ""
1726
 
1727
+ #: defaults.php:168
1728
  msgid "Existing site deleted from network"
1729
  msgstr ""
1730
 
1731
+ #: defaults.php:168
1732
  msgid "Deleted site %SiteName%"
1733
  msgstr ""
1734
 
1735
+ #: defaults.php:169
1736
  msgid "Activated theme on network"
1737
  msgstr ""
1738
 
1739
+ #: defaults.php:169
1740
  msgid ""
1741
  "Network activated %Theme->Name% theme installed in %Theme-"
1742
  ">get_template_directory%"
1743
  msgstr ""
1744
 
1745
+ #: defaults.php:170
1746
  msgid "Deactivated theme from network"
1747
  msgstr ""
1748
 
1749
+ #: defaults.php:170
1750
  msgid ""
1751
  "Network deactivated %Theme->Name% theme installed in %Theme-"
1752
  ">get_template_directory%"
1753
  msgstr ""
1754
 
1755
+ #: wp-security-audit-log.php:194
1756
  msgid ""
1757
  "You are using a version of PHP that is older than %s, which is no longer "
1758
  "supported.<br/>Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
readme.txt CHANGED
@@ -6,10 +6,10 @@ 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, email notification, wordpress email alerts, tracking, user tracking, user activity report
8
  Requires at least: 3.6
9
- Tested up to: 4.1
10
- Stable tag: 1.3.3
11
 
12
- Identify WordPress issues before they become security problems - Keep an audit log of all users' changes and other under the hood WordPress activity.
13
 
14
  == Description ==
15
  Keep an audit log 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 to ensure user productivity and identify WordPress security issues before they become a security problem. WP Security Audit Log, WordPress' most comprehensive user monitoring and audit log plugin 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 WordPress user monitoring monitoring and security auditing plugin is developed by WordPress Security Consultants and Professionals [WP White Security](http://www.wpwhitesecurity.com/).
@@ -80,6 +80,7 @@ We need help translating the plugin and the WordPress Security Events. If you're
80
 
81
  * Italian translation by [Leonardo Musumeci](http://leonardomusumeci.net/)
82
  * German translation by [Mourad Louha](http://excel-translator.de)
 
83
  * Spanish translation by Andrew Kurtis
84
 
85
  = WordPress & PHP Errors Monitoring Tools =
@@ -152,6 +153,9 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
152
  = Can I receive an email notification when a specific change happens on WordPress? =
153
  Yes it is possible to do so with the [WSAL Notifications Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/). This plugin extension enables you to configure triggers to monitor for specific changes and when such changes take place an email is automatically sent to your email address of choice with all the details of such change such as the Alert ID, user, user role, date, time, details about the actual change and more.
154
 
 
 
 
155
  = Can I generate reports from the WordPress security audit log? =
156
  Yes it is possible to do so with the premium [WSAL Reporting Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/wordpress-reports-extension/). This plugin extension allows you to generate any type of WordPress report using any type of data source. Reports can be generated in HTML and CSV format.
157
 
@@ -167,6 +171,19 @@ Yes it is possible to do so with the premium [WSAL Reporting Extension](http://w
167
 
168
  == Changelog ==
169
 
 
 
 
 
 
 
 
 
 
 
 
 
 
170
  = 1.3.3 (2015-01-21) =
171
  * **New Features**
172
  * [Premium Add-ons](http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/extensions/) will be hidden from the WordPress plugins page when the Hide plugin option is enabled.
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, email notification, wordpress email alerts, tracking, user tracking, user activity report
8
  Requires at least: 3.6
9
+ Tested up to: 4.1.1
10
+ Stable tag: 1.4
11
 
12
+ Keep an WordPress audit log of all users' changes and other under the hood activity - Identify WordPress issues before they become security problems.
13
 
14
  == Description ==
15
  Keep an audit log 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 to ensure user productivity and identify WordPress security issues before they become a security problem. WP Security Audit Log, WordPress' most comprehensive user monitoring and audit log plugin 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 WordPress user monitoring monitoring and security auditing plugin is developed by WordPress Security Consultants and Professionals [WP White Security](http://www.wpwhitesecurity.com/).
80
 
81
  * Italian translation by [Leonardo Musumeci](http://leonardomusumeci.net/)
82
  * German translation by [Mourad Louha](http://excel-translator.de)
83
+ * Romanian translations by [Artmotion Secure Servers](http://www.artmotion.eu)
84
  * Spanish translation by Andrew Kurtis
85
 
86
  = WordPress & PHP Errors Monitoring Tools =
153
  = Can I receive an email notification when a specific change happens on WordPress? =
154
  Yes it is possible to do so with the [WSAL Notifications Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/email-notifications-wordpress/). This plugin extension enables you to configure triggers to monitor for specific changes and when such changes take place an email is automatically sent to your email address of choice with all the details of such change such as the Alert ID, user, user role, date, time, details about the actual change and more.
155
 
156
+ = How can I search for a specific WordPress security alert?
157
+ You can use the premium add-on [Security Audit Log Search](http://www.wpwhitesecurity.com/plugins-premium-extensions/search-filtering-extension/) to automatically search for a specific WordPress security alert. It supports free text based searches and you can also use the built-in filters to fine tune your searches.
158
+
159
  = Can I generate reports from the WordPress security audit log? =
160
  Yes it is possible to do so with the premium [WSAL Reporting Extension](http://www.wpwhitesecurity.com/plugins-premium-extensions/wordpress-reports-extension/). This plugin extension allows you to generate any type of WordPress report using any type of data source. Reports can be generated in HTML and CSV format.
161
 
171
 
172
  == Changelog ==
173
 
174
+ = 1.4 (2015-02-24) =
175
+ * **New Features**
176
+ * WordPress username is now reported when a failed login is recorded - [More Details](http://www.wpwhitesecurity.com/wordpress-plugins/wordpress-user-monitoring-plugin/wordpress-failed-logins-monitoring-improved/)
177
+ * Plugin is now available in Romanian thanks to [Artmotion](http://www.artmotion.eu)
178
+
179
+ * **Improvements**
180
+ * Improved IP Address validation checks - if IP address format is incorrect the plugin reports "incorrect format" and not "unknown" - This will help us improve troubleshooting
181
+ * Alerts pruning options are now added during activation of the plugin, making pruning options more reliable - existing pruning options will be retained
182
+
183
+ * **Bug Fixes**
184
+ * Fixed issue with the option "auto / manual" refresh of Audit Log Viewer
185
+ * Fixed plugin uninstallation process (added new option to purge all plugin data from WordPress database upon uninstall)
186
+
187
  = 1.3.3 (2015-01-21) =
188
  * **New Features**
189
  * [Premium Add-ons](http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/extensions/) will be hidden from the WordPress plugins page when the Hide plugin option is enabled.
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. Keep track of everything happening on your WordPress including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log generates a security alert for everything that happens on your WordPress blogs and websites. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  Author: WP White Security
7
- Version: 1.3.3
8
  Text Domain: wp-security-audit-log
9
  Author URI: http://www.wpwhitesecurity.com/
10
  License: GPL2
@@ -139,6 +139,7 @@ class WpSecurityAuditLog {
139
 
140
  // render wsal footer
141
  add_action('admin_footer', array($this, 'RenderFooter'));
 
142
  }
143
 
144
  /**
@@ -171,7 +172,7 @@ class WpSecurityAuditLog {
171
  $s = $this->profiler->Start('WSAL Init Hook');
172
  do_action('wsal_init', $this);
173
  $s->Stop();
174
-
175
  // hide plugin
176
  if($this->settings->IsIncognito())
177
  add_action('admin_head', array($this, 'HidePlugin'));
@@ -209,7 +210,17 @@ class WpSecurityAuditLog {
209
 
210
  // if system wasn't installed, try migration now
211
  if (!$PreInstalled && $this->CanMigrate()) $this->Migrate();
212
-
 
 
 
 
 
 
 
 
 
 
213
  // install cleanup hook (remove older one if it exists)
214
  wp_clear_scheduled_hook('wsal_cleanup');
215
  wp_schedule_event(current_time('timestamp') + 600, 'hourly', 'wsal_cleanup');
@@ -232,14 +243,42 @@ class WpSecurityAuditLog {
232
  // ... an example
233
  }
234
  }
235
-
236
  /**
237
  * Uninstall plugin.
238
  */
239
  public function Uninstall(){
240
- WSAL_DB_ActiveRecord::UninstallAll();
 
 
 
 
 
 
241
  wp_clear_scheduled_hook('wsal_cleanup');
242
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
 
244
  /**
245
  * Migrate data from old plugin.
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. Keep track of everything happening on your WordPress including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log generates a security alert for everything that happens on your WordPress blogs and websites. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  Author: WP White Security
7
+ Version: 1.4.0
8
  Text Domain: wp-security-audit-log
9
  Author URI: http://www.wpwhitesecurity.com/
10
  License: GPL2
139
 
140
  // render wsal footer
141
  add_action('admin_footer', array($this, 'RenderFooter'));
142
+
143
  }
144
 
145
  /**
172
  $s = $this->profiler->Start('WSAL Init Hook');
173
  do_action('wsal_init', $this);
174
  $s->Stop();
175
+
176
  // hide plugin
177
  if($this->settings->IsIncognito())
178
  add_action('admin_head', array($this, 'HidePlugin'));
210
 
211
  // if system wasn't installed, try migration now
212
  if (!$PreInstalled && $this->CanMigrate()) $this->Migrate();
213
+
214
+ //setting the prunig date with the old value or the default value
215
+ $pruningDate = $this->settings->GetPruningDate();
216
+ $this->settings->SetPruningDate($pruningDate);
217
+
218
+ $pruningEnabled = $this->settings->IsPruningLimitEnabled();
219
+ $this->settings->SetPruningLimitEnabled($pruningEnabled);
220
+ //setting the prunig limit with the old value or the default value
221
+ $pruningLimit = $this->settings->GetPruningLimit();
222
+ $this->settings->SetPruningLimit($pruningLimit);
223
+
224
  // install cleanup hook (remove older one if it exists)
225
  wp_clear_scheduled_hook('wsal_cleanup');
226
  wp_schedule_event(current_time('timestamp') + 600, 'hourly', 'wsal_cleanup');
243
  // ... an example
244
  }
245
  }
246
+
247
  /**
248
  * Uninstall plugin.
249
  */
250
  public function Uninstall(){
251
+ if ($this->GetGlobalOption("delete-data") == 1) {
252
+ WSAL_DB_ActiveRecord::UninstallAll();
253
+ $flag = true;
254
+ while ( $flag ) {
255
+ $flag = $this->delete_options_prefixed( 'wsal-' );
256
+ }
257
+ }
258
  wp_clear_scheduled_hook('wsal_cleanup');
259
  }
260
+
261
+ public function delete_options_prefixed( $prefix ) {
262
+ global $wpdb;
263
+ if ( $this->IsMultisite() ) {
264
+ $table_name = $wpdb->prefix .'sitemeta';
265
+ $result = $wpdb->query( "DELETE FROM {$table_name} WHERE meta_key LIKE '{$prefix}%'" );
266
+ } else {
267
+ $result = $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '{$prefix}%'" );
268
+ }
269
+ return ($result) ? true : false;
270
+ }
271
+
272
+ public function read_options_prefixed( $prefix ) {
273
+ global $wpdb;
274
+ if ( $this->IsMultisite() ) {
275
+ $table_name = $wpdb->prefix .'sitemeta';
276
+ $result = $wpdb->get_results( "SELECT site_id,meta_key,meta_value FROM {$table_name} WHERE meta_key LIKE '{$prefix}%'", ARRAY_A );
277
+ } else {
278
+ $result = $wpdb->get_results( "SELECT option_name,option_value FROM {$wpdb->options} WHERE option_name LIKE '{$prefix}%'", ARRAY_A );
279
+ }
280
+ return $result;
281
+ }
282
 
283
  /**
284
  * Migrate data from old plugin.