WP Security Audit Log - Version 1.2.2

Version Description

(2014-07-16) = * New Features * Italian translation available thanks to Leonardo Musumeci

  • Improvements

    • Added a warning to developer options
    • "Hidden" developer options from default settings. User has to click link to access developer plugins
  • Bug Fixes

    • Solved several issues related to translations. Now everything in the plugin is translatable
    • Fixed several other issues reported by email
  • Bug Fix

    • Fixed reported issue with ugrade (more info here)
Download this release

Release Info

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

Code changes from version 1.2.1 to 1.2.2

classes/AbstractView.php CHANGED
@@ -66,9 +66,9 @@ abstract class WSAL_AbstractView {
66
  * @return string Safe view menu name.
67
  */
68
  public function GetSafeViewName(){
69
- return 'wsal-' . strtolower(
70
- preg_replace('/[^A-Za-z0-9\-]/', '-', $this->GetName())
71
- );
72
  }
73
 
74
  /**
66
  * @return string Safe view menu name.
67
  */
68
  public function GetSafeViewName(){
69
+ $name = $this->GetName();
70
+ if(function_exists('iconv'))$name = iconv('utf-8', 'ascii//TRANSLIT', $name);
71
+ return 'wsal-' . strtolower(preg_replace('/[^A-Za-z0-9\-]/', '-', $name));
72
  }
73
 
74
  /**
classes/Alert.php CHANGED
@@ -40,4 +40,59 @@ final class WSAL_Alert {
40
  $this->mesg = $mesg;
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
40
  $this->mesg = $mesg;
41
  }
42
 
43
+ /**
44
+ * Retrieves a value for a particular meta variable expression.
45
+ * @param string $expr Expression, eg: User->Name looks for a Name property for meta named User.
46
+ * @param array $metaData (Optional) Meta data relevant to expression.
47
+ * @return mixed The value nearest to the expression.
48
+ */
49
+ protected function GetMetaExprValue($expr, $metaData = array()){
50
+ // TODO Handle function calls (and methods?)
51
+ $expr = explode('->', $expr);
52
+ $meta = array_shift($expr);
53
+ $meta = isset($metaData[$meta]) ? $metaData[$meta] : null;
54
+ foreach($expr as $part){
55
+ if(is_scalar($meta) || is_null($meta))return $meta; // this isn't 100% correct
56
+ $meta = is_array($meta) ? $meta[$part] : $meta->$part;
57
+ }
58
+ return is_scalar($meta) ? (string)$meta : var_export($meta, true);
59
+ }
60
+
61
+ /**
62
+ * Expands a message with variables by replacing variables with meta data values.
63
+ * @param string $mesg The original message.
64
+ * @param array $metaData (Optional) Meta data relevant to message.
65
+ * @param callable|null $metaFormatter (Optional) Callback for formatting meta values.
66
+ * @param string $afterMeta (Optional) Some text to put after meta values.
67
+ * @return string The expanded message.
68
+ */
69
+ protected function GetFormattedMesg($origMesg, $metaData = array(), $metaFormatter = null){
70
+ // tokenize message with regex
71
+ $mesg = preg_split('/(%.*?%)/', (string)$origMesg, -1, PREG_SPLIT_DELIM_CAPTURE);
72
+ if(!is_array($mesg))return (string)$origMesg;
73
+ // handle tokenized message
74
+ foreach($mesg as $i=>$token){
75
+ // handle escaped percent sign
76
+ if($token == '%%'){
77
+ $mesg[$i] = '%';
78
+ }else
79
+ // handle complex expressions
80
+ if(substr($token, 0, 1) == '%' && substr($token, -1, 1) == '%'){
81
+ $mesg[$i] = $this->GetMetaExprValue(substr($token, 1, -1), $metaData);
82
+ if($metaFormatter)$mesg[$i] = call_user_func($metaFormatter, $token, $mesg[$i]);
83
+ }
84
+ }
85
+ // compact message and return
86
+ return implode('', $mesg);
87
+ }
88
+
89
+ /**
90
+ * @param array $metaData (Optional) Meta data relevant to message.
91
+ * @param callable|null $metaFormatter (Optional) Meta formatter callback.
92
+ * @param string|null $mesg (Optional) Override message template to use.
93
+ * @return string Fully formatted message.
94
+ */
95
+ public function GetMessage($metaData = array(), $metaFormatter = null, $mesg = null){
96
+ return $this->GetFormattedMesg(is_null($mesg) ? $this->mesg : $mesg, $metaData, $metaFormatter);
97
+ }
98
  }
classes/AlertManager.php CHANGED
@@ -23,14 +23,36 @@ final class WSAL_AlertManager {
23
  */
24
  public function __construct(WpSecurityAuditLog $plugin){
25
  $this->plugin = $plugin;
26
- foreach(glob(dirname(__FILE__) . '/Loggers/*.php') as $file){
27
- $class = $plugin->GetClassFileClassName($file);
28
- $this->_loggers[] = new $class($plugin);
29
- }
30
 
31
  add_action('shutdown', array($this, '_CommitPipeline'));
32
  }
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  /**
35
  * Contains a list of alerts to trigger.
36
  * @var array
@@ -70,7 +92,6 @@ final class WSAL_AlertManager {
70
  );
71
  }
72
 
73
-
74
  /**
75
  * @internal Commit an alert now.
76
  */
@@ -173,6 +194,13 @@ final class WSAL_AlertManager {
173
  return $this->plugin->settings->GetDisabledAlerts();
174
  }
175
 
 
 
 
 
 
 
 
176
  /**
177
  * Converts an Alert into a Log entry (by invoking loggers).
178
  * You should not call this method directly.
@@ -189,6 +217,11 @@ final class WSAL_AlertManager {
189
  if(!isset($data['CurrentUserRoles']) && function_exists('is_user_logged_in') && is_user_logged_in())
190
  $data['CurrentUserRoles'] = wp_get_current_user()->roles;
191
 
 
 
 
 
 
192
  foreach($this->_loggers as $logger)
193
  $logger->Log($type, $data);
194
  }
23
  */
24
  public function __construct(WpSecurityAuditLog $plugin){
25
  $this->plugin = $plugin;
26
+ foreach(glob(dirname(__FILE__) . '/Loggers/*.php') as $file)
27
+ $this->AddFromFile ($file);
 
 
28
 
29
  add_action('shutdown', array($this, '_CommitPipeline'));
30
  }
31
 
32
+ /**
33
+ * Add new logger from file inside autoloader path.
34
+ * @param string $file Path to file.
35
+ */
36
+ public function AddFromFile($file){
37
+ $this->AddFromClass($this->plugin->GetClassFileClassName($file));
38
+ }
39
+
40
+ /**
41
+ * Add new logger given class name.
42
+ * @param string $class Class name.
43
+ */
44
+ public function AddFromClass($class){
45
+ $this->AddInstance(new $class($this->plugin));
46
+ }
47
+
48
+ /**
49
+ * Add newly created logger to list.
50
+ * @param WSAL_AbstractLogger $logger The new logger.
51
+ */
52
+ public function AddInstance(WSAL_AbstractLogger $logger){
53
+ $this->_loggers[] = $logger;
54
+ }
55
+
56
  /**
57
  * Contains a list of alerts to trigger.
58
  * @var array
92
  );
93
  }
94
 
 
95
  /**
96
  * @internal Commit an alert now.
97
  */
194
  return $this->plugin->settings->GetDisabledAlerts();
195
  }
196
 
197
+ /**
198
+ * @return WSAL_AbstractLogger[] Returns an array of loaded loggers.
199
+ */
200
+ public function GetLoggers(){
201
+ return $this->_loggers;
202
+ }
203
+
204
  /**
205
  * Converts an Alert into a Log entry (by invoking loggers).
206
  * You should not call this method directly.
217
  if(!isset($data['CurrentUserRoles']) && function_exists('is_user_logged_in') && is_user_logged_in())
218
  $data['CurrentUserRoles'] = wp_get_current_user()->roles;
219
 
220
+ //if(isset($_SERVER['REMOTE_HOST']) && $_SERVER['REMOTE_HOST'] != $data['ClientIP'])
221
+ // $data['ClientHost'] = $_SERVER['REMOTE_HOST'];
222
+
223
+ //$data['OtherIPs'] = $_SERVER['REMOTE_HOST'];
224
+
225
  foreach($this->_loggers as $logger)
226
  $logger->Log($type, $data);
227
  }
classes/DB/ActiveRecord.php CHANGED
@@ -257,11 +257,11 @@ abstract class WSAL_DB_ActiveRecord {
257
 
258
  /**
259
  * Load multiple records from DB.
260
- * @param string $cond (Optional) Load condition.
261
- * @param array $args (Optional) Load condition arguments.
262
  * @return self[] List of loaded records.
263
  */
264
- public static function LoadMulti($cond = '%d', $args = array(1)){
265
  global $wpdb;
266
  $class = get_called_class();
267
  $result = array();
257
 
258
  /**
259
  * Load multiple records from DB.
260
+ * @param string $cond (Optional) Load condition (eg: 'some_id = %d' ).
261
+ * @param array $args (Optional) Load condition arguments (rg: array(45) ).
262
  * @return self[] List of loaded records.
263
  */
264
+ public static function LoadMulti($cond, $args = array()){
265
  global $wpdb;
266
  $class = get_called_class();
267
  $result = array();
classes/DB/Occurrence.php CHANGED
@@ -101,50 +101,6 @@ class WSAL_DB_Occurrence extends WSAL_DB_ActiveRecord {
101
  $this->SetMetaValue($key, $val);
102
  }
103
 
104
- /**
105
- * Retrieves a value for a particular meta variable expression.
106
- * @param string $expr Expression, eg: User->Name looks for a Name property for meta named User.
107
- * @return mixed The value nearest to the expression.
108
- */
109
- protected function GetMetaExprValue($expr){
110
- // TODO Handle function calls (and methods?)
111
- $expr = explode('->', $expr);
112
- $meta = array_shift($expr);
113
- $meta = $this->GetMetaValue($meta, null);
114
- foreach($expr as $part){
115
- if(is_scalar($meta) || is_null($meta))return $meta; // this isn't 100% correct
116
- $meta = is_array($meta) ? $meta[$part] : $meta->$part;
117
- }
118
- return is_scalar($meta) ? (string)$meta : var_export($meta, true);
119
- }
120
-
121
- /**
122
- * Expands a message with variables by replacing variables with meta data values.
123
- * @param string $mesg The original message.
124
- * @param callable|null $metaFormatter (Optional) Callback for formatting meta values.
125
- * @param string $afterMeta (Optional) Some text to put after meta values.
126
- * @return string The expanded message.
127
- */
128
- protected function GetFormattedMesg($origMesg, $metaFormatter = null){
129
- // tokenize message with regex
130
- $mesg = preg_split('/(%.*?%)/', (string)$origMesg, -1, PREG_SPLIT_DELIM_CAPTURE);
131
- if(!is_array($mesg))return (string)$origMesg;
132
- // handle tokenized message
133
- foreach($mesg as $i=>$token){
134
- // handle escaped percent sign
135
- if($token == '%%'){
136
- $mesg[$i] = '%';
137
- }else
138
- // handle complex expressions
139
- if(substr($token, 0, 1) == '%' && substr($token, -1, 1) == '%'){
140
- $mesg[$i] = $this->GetMetaExprValue(substr($token, 1, -1));
141
- if($metaFormatter)$mesg[$i] = call_user_func($metaFormatter, $token, $mesg[$i]);
142
- }
143
- }
144
- // compact message and return
145
- return implode('', $mesg);
146
- }
147
-
148
  /**
149
  * @param callable|null $metaFormatter (Optional) Meta formatter callback.
150
  * @return string Full-formatted message.
@@ -159,7 +115,7 @@ class WSAL_DB_Occurrence extends WSAL_DB_ActiveRecord {
159
  $this->_cachedmessage = $this->GetAlert()->mesg;
160
  }
161
  // fill variables in message
162
- $this->_cachedmessage = $this->GetFormattedMesg($this->_cachedmessage, $metaFormatter);
163
  }
164
  return $this->_cachedmessage;
165
  }
101
  $this->SetMetaValue($key, $val);
102
  }
103
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  /**
105
  * @param callable|null $metaFormatter (Optional) Meta formatter callback.
106
  * @return string Full-formatted message.
115
  $this->_cachedmessage = $this->GetAlert()->mesg;
116
  }
117
  // fill variables in message
118
+ $this->_cachedmessage = $this->GetAlert()->GetMessage($this->GetMetaArray(), $metaFormatter, $this->_cachedmessage);
119
  }
120
  return $this->_cachedmessage;
121
  }
classes/SensorManager.php CHANGED
@@ -2,15 +2,16 @@
2
 
3
  final class WSAL_SensorManager extends WSAL_AbstractSensor {
4
 
 
 
 
5
  protected $sensors = array();
6
 
7
  public function __construct(WpSecurityAuditLog $plugin){
8
  parent::__construct($plugin);
9
 
10
- foreach(glob(dirname(__FILE__) . '/Sensors/*.php') as $file){
11
- $class = $plugin->GetClassFileClassName($file);
12
- $this->sensors[] = new $class($plugin);
13
- }
14
  }
15
 
16
  public function HookEvents() {
@@ -18,4 +19,32 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
18
  $sensor->HookEvents();
19
  }
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  }
2
 
3
  final class WSAL_SensorManager extends WSAL_AbstractSensor {
4
 
5
+ /**
6
+ * @var WSAL_AbstractSensor[]
7
+ */
8
  protected $sensors = array();
9
 
10
  public function __construct(WpSecurityAuditLog $plugin){
11
  parent::__construct($plugin);
12
 
13
+ foreach(glob(dirname(__FILE__) . '/Sensors/*.php') as $file)
14
+ $this->AddFromFile ($file);
 
 
15
  }
16
 
17
  public function HookEvents() {
19
  $sensor->HookEvents();
20
  }
21
 
22
+ public function GetSensors(){
23
+ return $this->sensors;
24
+ }
25
+
26
+ /**
27
+ * Add new sensor from file inside autoloader path.
28
+ * @param string $file Path to file.
29
+ */
30
+ public function AddFromFile($file){
31
+ $this->AddFromClass($this->plugin->GetClassFileClassName($file));
32
+ }
33
+
34
+ /**
35
+ * Add new sensor given class name.
36
+ * @param string $class Class name.
37
+ */
38
+ public function AddFromClass($class){
39
+ $this->AddInstance(new $class($this->plugin));
40
+ }
41
+
42
+ /**
43
+ * Add newly created sensor to list.
44
+ * @param WSAL_AbstractSensor $sensor The new sensor.
45
+ */
46
+ public function AddInstance(WSAL_AbstractSensor $sensor){
47
+ $this->sensors[] = $sensor;
48
+ }
49
+
50
  }
classes/Sensors/Content.php CHANGED
@@ -64,7 +64,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
64
  }
65
 
66
  protected function GetPostCategories($post){
67
- return wp_get_post_categories($post->ID, array('fields' => 'names'));;
68
  }
69
 
70
  public function EventPostChanged($newStatus, $oldStatus, $post){
@@ -159,12 +159,14 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
159
 
160
  $categoryIds = array();
161
 
162
- if($action == 'delete' && $_POST['taxonomy'] == 'category' && !empty($_POST['delete_tags'])){
163
- // bulk delete
164
- $categoryIds[] = $_POST['delete_tags'];
165
- }elseif($action == 'delete-tag' && $_POST['taxonomy'] == 'category' && !empty($_POST['tag_ID'])){
166
- // single delete
167
- $categoryIds[] = $_POST['tag_ID'];
 
 
168
  }
169
 
170
  foreach($categoryIds as $categoryID){
64
  }
65
 
66
  protected function GetPostCategories($post){
67
+ return wp_get_post_categories($post->ID, array('fields' => 'names'));
68
  }
69
 
70
  public function EventPostChanged($newStatus, $oldStatus, $post){
159
 
160
  $categoryIds = array();
161
 
162
+ if(isset($_POST['taxonomy'])){
163
+ if($action == 'delete' && $_POST['taxonomy'] == 'category' && !empty($_POST['delete_tags'])){
164
+ // bulk delete
165
+ $categoryIds[] = $_POST['delete_tags'];
166
+ }elseif($action == 'delete-tag' && $_POST['taxonomy'] == 'category' && !empty($_POST['tag_ID'])){
167
+ // single delete
168
+ $categoryIds[] = $_POST['tag_ID'];
169
+ }
170
  }
171
 
172
  foreach($categoryIds as $categoryID){
classes/Sensors/Multisite.php CHANGED
@@ -17,18 +17,19 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
17
  }
18
  }
19
 
20
- protected $old_allowedthemes;
21
 
22
  public function EventAdminInit(){
23
  $this->old_allowedthemes = array_keys((array)get_site_option('allowedthemes'));
24
  }
25
 
26
  public function EventAdminShutdown(){
 
27
  $new_allowedthemes = array_keys((array)get_site_option('allowedthemes'));
28
 
29
  // check for enabled themes
30
  foreach($new_allowedthemes as $theme)
31
- if(!in_array($theme, $this->old_allowedthemes)){
32
  $theme = wp_get_theme($theme);
33
  $this->plugin->alerts->Trigger(5008, array(
34
  'Theme' => (object)array(
@@ -43,7 +44,7 @@ class WSAL_Sensors_Multisite extends WSAL_AbstractSensor {
43
  }
44
 
45
  // check for disabled themes
46
- foreach($this->old_allowedthemes as $theme)
47
  if(!in_array($theme, $new_allowedthemes)){
48
  $theme = wp_get_theme($theme);
49
  $this->plugin->alerts->Trigger(5009, array(
17
  }
18
  }
19
 
20
+ protected $old_allowedthemes = null;
21
 
22
  public function EventAdminInit(){
23
  $this->old_allowedthemes = array_keys((array)get_site_option('allowedthemes'));
24
  }
25
 
26
  public function EventAdminShutdown(){
27
+ if(is_null($this->old_allowedthemes))return;
28
  $new_allowedthemes = array_keys((array)get_site_option('allowedthemes'));
29
 
30
  // check for enabled themes
31
  foreach($new_allowedthemes as $theme)
32
+ if(!in_array($theme, (array)$this->old_allowedthemes)){
33
  $theme = wp_get_theme($theme);
34
  $this->plugin->alerts->Trigger(5008, array(
35
  'Theme' => (object)array(
44
  }
45
 
46
  // check for disabled themes
47
+ foreach((array)$this->old_allowedthemes as $theme)
48
  if(!in_array($theme, $new_allowedthemes)){
49
  $theme = wp_get_theme($theme);
50
  $this->plugin->alerts->Trigger(5009, array(
classes/Sensors/PhpErrors.php CHANGED
@@ -27,9 +27,12 @@ class WSAL_Sensors_PhpErrors extends WSAL_AbstractSensor {
27
  public function EventError($errno, $errstr, $errfile = 'unknown', $errline = 0, $errcontext = array()){
28
  if($this->_avoid_error_recursion)return;
29
 
30
- ob_start();
31
- debug_print_backtrace();
32
- $errbacktrace = ob_get_clean();
 
 
 
33
 
34
  $data = array(
35
  'Code' => $errno,
@@ -57,13 +60,18 @@ class WSAL_Sensors_PhpErrors extends WSAL_AbstractSensor {
57
  public function EventException(Exception $ex){
58
  if($this->_avoid_error_recursion)return;
59
 
 
 
 
 
 
60
  $data = array(
61
  'Class' => get_class($ex),
62
  'Code' => $ex->getCode(),
63
  'Message' => $ex->getMessage(),
64
  'File' => $ex->getFile(),
65
  'Line' => $ex->getLine(),
66
- 'Trace' => $ex->getTraceAsString(),
67
  );
68
 
69
  if(method_exists($ex, 'getContext'))
27
  public function EventError($errno, $errstr, $errfile = 'unknown', $errline = 0, $errcontext = array()){
28
  if($this->_avoid_error_recursion)return;
29
 
30
+ $errbacktrace = 'No Backtrace';
31
+ if($this->plugin->settings->IsBacktraceLoggingEnabled()){
32
+ ob_start();
33
+ debug_print_backtrace();
34
+ $errbacktrace = ob_get_clean();
35
+ }
36
 
37
  $data = array(
38
  'Code' => $errno,
60
  public function EventException(Exception $ex){
61
  if($this->_avoid_error_recursion)return;
62
 
63
+ $errbacktrace = 'No Backtrace';
64
+ if($this->plugin->settings->IsBacktraceLoggingEnabled()){
65
+ $errbacktrace = $ex->getTraceAsString();
66
+ }
67
+
68
  $data = array(
69
  'Class' => get_class($ex),
70
  'Code' => $ex->getCode(),
71
  'Message' => $ex->getMessage(),
72
  'File' => $ex->getFile(),
73
  'Line' => $ex->getLine(),
74
+ 'Trace' => $errbacktrace,
75
  );
76
 
77
  if(method_exists($ex, 'getContext'))
classes/Settings.php CHANGED
@@ -39,6 +39,7 @@ class WSAL_Settings {
39
  const OPT_DEV_PHP_ERRORS = 'p';
40
  const OPT_DEV_REQUEST_LOG = 'r';
41
  const OPT_DEV_SANDBOX_PAGE = 's';
 
42
 
43
  protected $_devoption = null;
44
 
@@ -65,6 +66,13 @@ class WSAL_Settings {
65
  return in_array($option, $this->_devoption);
66
  }
67
 
 
 
 
 
 
 
 
68
  /**
69
  * Sets whether a developer option is enabled or not.
70
  * @param string $option See self::OPT_DEV_* constants.
@@ -122,6 +130,13 @@ class WSAL_Settings {
122
  return $this->IsDevOptionEnabled(self::OPT_DEV_SANDBOX_PAGE);
123
  }
124
 
 
 
 
 
 
 
 
125
  /**
126
  * @return boolean Whether dashboard widgets are enabled or not.
127
  */
39
  const OPT_DEV_PHP_ERRORS = 'p';
40
  const OPT_DEV_REQUEST_LOG = 'r';
41
  const OPT_DEV_SANDBOX_PAGE = 's';
42
+ const OPT_DEV_BACKTRACE_LOG = 'b';
43
 
44
  protected $_devoption = null;
45
 
66
  return in_array($option, $this->_devoption);
67
  }
68
 
69
+ /**
70
+ * @return boolean Whether any developer option has been enabled or not.
71
+ */
72
+ public function IsAnyDevOptionEnabled(){
73
+ return !!$this->GetGlobalOption(self::OPT_PRFX . 'dev-options', null);
74
+ }
75
+
76
  /**
77
  * Sets whether a developer option is enabled or not.
78
  * @param string $option See self::OPT_DEV_* constants.
130
  return $this->IsDevOptionEnabled(self::OPT_DEV_SANDBOX_PAGE);
131
  }
132
 
133
+ /**
134
+ * @return boolean Whether to store debug backtrace for PHP alerts or not.
135
+ */
136
+ public function IsBacktraceLoggingEnabled(){
137
+ return $this->IsDevOptionEnabled(self::OPT_DEV_BACKTRACE_LOG);
138
+ }
139
+
140
  /**
141
  * @return boolean Whether dashboard widgets are enabled or not.
142
  */
classes/ViewManager.php CHANGED
@@ -16,14 +16,8 @@ class WSAL_ViewManager {
16
  $this->_plugin = $plugin;
17
 
18
  // load views
19
- foreach(glob(dirname(__FILE__) . '/Views/*.php') as $file){
20
- $class = $this->_plugin->GetClassFileClassName($file);
21
- $tmp = new $class($this->_plugin);
22
- $this->views[] = $tmp;
23
- }
24
-
25
- // order views by weight
26
- usort($this->views, array($this, 'OrderByWeight'));
27
 
28
  // add menus
29
  add_action('admin_menu', array($this, 'AddAdminMenus'));
@@ -39,6 +33,43 @@ class WSAL_ViewManager {
39
  add_action('admin_footer', array($this, 'RenderViewFooter'));
40
  }
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  public function OrderByWeight(WSAL_AbstractView $a, WSAL_AbstractView $b){
43
  $wa = $a->GetWeight();
44
  $wb = $b->GetWeight();
@@ -52,7 +83,12 @@ class WSAL_ViewManager {
52
  }
53
  }
54
 
 
 
 
55
  public function AddAdminMenus(){
 
 
56
  if($this->_plugin->settings->CurrentUserCan('view') && count($this->views)){
57
  // add main menu
58
  add_menu_page(
@@ -81,7 +117,12 @@ class WSAL_ViewManager {
81
  }
82
  }
83
 
 
 
 
84
  public function AddPluginShortcuts($old_links){
 
 
85
  $new_links = array();
86
  foreach($this->views as $view){
87
  if($view->HasPluginShortcutLink()){
@@ -97,6 +138,9 @@ class WSAL_ViewManager {
97
  return array_merge($new_links, $old_links);
98
  }
99
 
 
 
 
100
  protected function GetBackendPageIndex(){
101
  if(isset($_REQUEST['page']))
102
  foreach($this->views as $i => $view)
@@ -105,16 +149,25 @@ class WSAL_ViewManager {
105
  return 0;
106
  }
107
 
 
 
 
108
  public function RenderViewHeader(){
109
  $view_id = $this->GetBackendPageIndex();
110
  $this->views[$view_id]->Header();
111
  }
112
 
 
 
 
113
  public function RenderViewFooter(){
114
  $view_id = $this->GetBackendPageIndex();
115
  $this->views[$view_id]->Footer();
116
  }
117
 
 
 
 
118
  public function RenderViewBody(){
119
  $view_id = $this->GetBackendPageIndex();
120
  ?><div class="wrap">
16
  $this->_plugin = $plugin;
17
 
18
  // load views
19
+ foreach(glob(dirname(__FILE__) . '/Views/*.php') as $file)
20
+ $this->AddFromFile($file);
 
 
 
 
 
 
21
 
22
  // add menus
23
  add_action('admin_menu', array($this, 'AddAdminMenus'));
33
  add_action('admin_footer', array($this, 'RenderViewFooter'));
34
  }
35
 
36
+ /**
37
+ * Add new view from file inside autoloader path.
38
+ * @param string $file Path to file.
39
+ */
40
+ public function AddFromFile($file){
41
+ $this->AddFromClass($this->_plugin->GetClassFileClassName($file));
42
+ }
43
+
44
+ /**
45
+ * Add new view given class name.
46
+ * @param string $class Class name.
47
+ */
48
+ public function AddFromClass($class){
49
+ $this->AddInstance(new $class($this->_plugin));
50
+ }
51
+
52
+ /**
53
+ * Add newly created view to list.
54
+ * @param WSAL_AbstractView $view The new view.
55
+ */
56
+ public function AddInstance(WSAL_AbstractView $view){
57
+ $this->views[] = $view;
58
+ }
59
+
60
+ /**
61
+ * Order views by their declared weight.
62
+ */
63
+ public function ReorderViews(){
64
+ usort($this->views, array($this, 'OrderByWeight'));
65
+ }
66
+
67
+ /**
68
+ * @internal This has to be public for PHP to call it.
69
+ * @param WSAL_AbstractView $a
70
+ * @param WSAL_AbstractView $b
71
+ * @return int
72
+ */
73
  public function OrderByWeight(WSAL_AbstractView $a, WSAL_AbstractView $b){
74
  $wa = $a->GetWeight();
75
  $wb = $b->GetWeight();
83
  }
84
  }
85
 
86
+ /**
87
+ * Wordpress Action
88
+ */
89
  public function AddAdminMenus(){
90
+ $this->ReorderViews();
91
+
92
  if($this->_plugin->settings->CurrentUserCan('view') && count($this->views)){
93
  // add main menu
94
  add_menu_page(
117
  }
118
  }
119
 
120
+ /**
121
+ * Wordpress Filter
122
+ */
123
  public function AddPluginShortcuts($old_links){
124
+ $this->ReorderViews();
125
+
126
  $new_links = array();
127
  foreach($this->views as $view){
128
  if($view->HasPluginShortcutLink()){
138
  return array_merge($new_links, $old_links);
139
  }
140
 
141
+ /**
142
+ * @return int Returns page id of current page (or 0 on error).
143
+ */
144
  protected function GetBackendPageIndex(){
145
  if(isset($_REQUEST['page']))
146
  foreach($this->views as $i => $view)
149
  return 0;
150
  }
151
 
152
+ /**
153
+ * Render header of the current view.
154
+ */
155
  public function RenderViewHeader(){
156
  $view_id = $this->GetBackendPageIndex();
157
  $this->views[$view_id]->Header();
158
  }
159
 
160
+ /**
161
+ * Render footer of the current view.
162
+ */
163
  public function RenderViewFooter(){
164
  $view_id = $this->GetBackendPageIndex();
165
  $this->views[$view_id]->Footer();
166
  }
167
 
168
+ /**
169
+ * Render content of the current view.
170
+ */
171
  public function RenderViewBody(){
172
  $view_id = $this->GetBackendPageIndex();
173
  ?><div class="wrap">
classes/Views/About.php CHANGED
@@ -25,25 +25,25 @@ class WSAL_Views_About extends WSAL_AbstractView {
25
  <!--h3 class="hndl"><span>About WP Security Audit Log</span></h3-->
26
  <div class="inside">
27
  <div class="activity-block">
28
- WP Security Audit Log enables WordPress administrators and owners to identify WordPress security issues before they become a security problem by keeping a security audit log. WP Security Audit Log is developed by WordPress security professionals WP White Security.
29
 
30
- <h2>Keep A WordPress Security Audit Log & Identify WordPress Security Issues</h2>
31
  <p>
32
- WP Security Audit Log logs everything happening on your WordPress blog or website and WordPress multisite network. By using WP Security Audit Log security plugin it is very easy to track suspicious user activity before it becomes a problem or a security issue. A WordPress security alert is generated by the plugin when:
33
  </p>
34
  <ul style="list-style-type: disc; margin-left: 2.5em; list-style-position: outside;">
35
- <li>User creates a new user or a new user is registered</li>
36
- <li>Existing user changes the role, password or other properties of another user</li>
37
- <li>Existing user on a WordPress multisite network is added to a site</li>
38
- <li>User uploads or deletes a file, changes a password or email address</li>
39
- <li>User installs, activates, deactivates, upgrades or uninstalls a plugin</li>
40
- <li>User creates, modifies or deletes a new post, page, category or a custom post type</li>
41
- <li>User installs or activates a WordPress theme</li>
42
- <li>User adds, modifies or deletes a widget</li>
43
- <li>User uses the dashboard file editor</li>
44
- <li>WordPress settings are changed</li>
45
- <li>Failed login attempts</li>
46
- <li>and much more&hellip;</li>
47
  </ul>
48
  <br/>
49
  Refer to the complete list of <a href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WordPress Security Alerts</a> for more information.
@@ -53,25 +53,25 @@ class WSAL_Views_About extends WSAL_AbstractView {
53
 
54
  <div style="position: absolute; right: 70px; width: 180px; top: 10px;">
55
  <div class="postbox">
56
- <h3 class="hndl"><span>WP Password Policy Manager</span></h3>
57
  <div class="inside">
58
  <p>
59
- Easily configure WordPress password policies and ensure users use strong passwords with our plugin WP Password Policy Manager.
60
  </p>
61
- <a class="button button-primary" href="http://wordpress.org/plugins/wp-password-policy-manager/" target="_blank">Download</a>
62
  </div>
63
  </div>
64
  <div class="postbox">
65
- <h3 class="hndl"><span>WP Security Audit Log in your Language!</span></h3>
66
  <div class="inside">
67
- If you are interested in translating our plugin please drop us an email on
68
  <a href="mailto:plugins@wpwhitesecurity.com">plugins@wpwhitesecurity.com</a>.
69
  </div>
70
  </div>
71
  <div class="postbox">
72
- <h3 class="hndl"><span>WordPress Security Services</span></h3>
73
  <div class="inside">
74
- Professional WordPress security services provided by WP White Security
75
  <ul>
76
  <li><a href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-hardening/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">Security Hardening</a></li>
77
  <li><a href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-audit/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">Security Audit</a></li>
25
  <!--h3 class="hndl"><span>About WP Security Audit Log</span></h3-->
26
  <div class="inside">
27
  <div class="activity-block">
28
+ <?php _e('WP Security Audit Log enables WordPress administrators and owners to identify WordPress security issues before they become a security problem by keeping a security audit log. WP Security Audit Log is developed by WordPress security professionals WP White Security.', 'wp-security-audit-log'); ?>
29
 
30
+ <h2><?php _e('Keep A WordPress Security Audit Log & Identify WordPress Security Issues', 'wp-security-audit-log'); ?></h2>
31
  <p>
32
+ <?php _e('WP Security Audit Log logs everything happening on your WordPress blog or website and WordPress multisite network. By using WP Security Audit Log security plugin it is very easy to track suspicious user activity before it becomes a problem or a security issue. A WordPress security alert is generated by the plugin when:', 'wp-security-audit-log'); ?>
33
  </p>
34
  <ul style="list-style-type: disc; margin-left: 2.5em; list-style-position: outside;">
35
+ <li><?php _e('User creates a new user or a new user is registered', 'wp-security-audit-log'); ?></li>
36
+ <li><?php _e('Existing user changes the role, password or other properties of another user', 'wp-security-audit-log'); ?></li>
37
+ <li><?php _e('Existing user on a WordPress multisite network is added to a site', 'wp-security-audit-log'); ?></li>
38
+ <li><?php _e('User uploads or deletes a file, changes a password or email address', 'wp-security-audit-log'); ?></li>
39
+ <li><?php _e('User installs, activates, deactivates, upgrades or uninstalls a plugin', 'wp-security-audit-log'); ?></li>
40
+ <li><?php _e('User creates, modifies or deletes a new post, page, category or a custom post type', 'wp-security-audit-log'); ?></li>
41
+ <li><?php _e('User installs or activates a WordPress theme', 'wp-security-audit-log'); ?></li>
42
+ <li><?php _e('User adds, modifies or deletes a widget', 'wp-security-audit-log'); ?></li>
43
+ <li><?php _e('User uses the dashboard file editor', 'wp-security-audit-log'); ?></li>
44
+ <li><?php _e('WordPress settings are changed', 'wp-security-audit-log'); ?></li>
45
+ <li><?php _e('Failed login attempts', 'wp-security-audit-log'); ?></li>
46
+ <li><?php _e('and much more&hellip;', 'wp-security-audit-log'); ?></li>
47
  </ul>
48
  <br/>
49
  Refer to the complete list of <a href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WordPress Security Alerts</a> for more information.
53
 
54
  <div style="position: absolute; right: 70px; width: 180px; top: 10px;">
55
  <div class="postbox">
56
+ <h3 class="hndl"><span><?php _e('WP Password Policy Manager', 'wp-security-audit-log'); ?></span></h3>
57
  <div class="inside">
58
  <p>
59
+ <?php _e('Easily configure WordPress password policies and ensure users use strong passwords with our plugin WP Password Policy Manager.', 'wp-security-audit-log'); ?>
60
  </p>
61
+ <a class="button button-primary" href="http://wordpress.org/plugins/wp-password-policy-manager/" target="_blank"><?php _e('Download', 'wp-security-audit-log'); ?></a>
62
  </div>
63
  </div>
64
  <div class="postbox">
65
+ <h3 class="hndl"><span><?php _e('WP Security Audit Log in your Language!', 'wp-security-audit-log'); ?></span></h3>
66
  <div class="inside">
67
+ <?php _e('If you are interested in translating our plugin please drop us an email on', 'wp-security-audit-log'); ?>
68
  <a href="mailto:plugins@wpwhitesecurity.com">plugins@wpwhitesecurity.com</a>.
69
  </div>
70
  </div>
71
  <div class="postbox">
72
+ <h3 class="hndl"><span><?php _e('WordPress Security Services', 'wp-security-audit-log'); ?></span></h3>
73
  <div class="inside">
74
+ <?php _e('Professional WordPress security services provided by WP White Security', 'wp-security-audit-log'); ?>
75
  <ul>
76
  <li><a href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-hardening/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">Security Hardening</a></li>
77
  <li><a href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-audit/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">Security Audit</a></li>
classes/Views/AuditLog.php CHANGED
@@ -269,17 +269,17 @@ class WSAL_Views_AuditLogList_Internal extends WP_List_Table {
269
  public function get_columns(){
270
  $cols = array(
271
  //'cb' => '<input type="checkbox" />',
272
- //'read' => 'Read',
273
- 'type' => 'Code',
274
- 'code' => 'Type',
275
- 'crtd' => 'Date',
276
- 'user' => 'Username',
277
- 'scip' => 'Source IP',
278
  );
279
  if($this->is_multisite() && $this->is_main_blog() && !$this->is_specific_view()){
280
- $cols['site'] = 'Site';
281
  }
282
- $cols['mesg'] = 'Message';
283
  if($this->_plugin->settings->IsDataInspectorEnabled()){
284
  $cols['data'] = '';
285
  }
@@ -308,13 +308,13 @@ class WSAL_Views_AuditLogList_Internal extends WP_List_Table {
308
  case 'read':
309
  return '<span class="log-read log-read-'
310
  . ($item->is_read ? 'old' : 'new')
311
- . '" title="Click to toggle."></span>';
312
  case 'type':
313
  return str_pad($item->alert_id, 4, '0', STR_PAD_LEFT);
314
  case 'code':
315
  $code = $this->_plugin->alerts->GetAlert($item->alert_id);
316
  $code = $code ? $code->code : 0;
317
- $const = (object)array('name' => 'E_UNKNOWN', 'value' => 0, 'description' => 'Unknown error code.');
318
  $const = $this->_plugin->constants->GetConstantBy('value', $code, $const);
319
  return '<span class="log-type log-type-' . $const->value
320
  . '" title="' . esc_html($const->name . ': ' . $const->description) . '"></span>';
@@ -334,7 +334,7 @@ class WSAL_Views_AuditLogList_Internal extends WP_List_Table {
334
  . '" target="_blank">' . esc_html($user->display_name) . '</a>';
335
  $roles = $item->GetUserRoles();
336
  $roles = (is_array($roles) && count($roles))
337
- ? esc_html(ucwords(implode(', ', $roles)))
338
  : '<i>' . __('Unknown', 'wp-security-audit-log') . '</i>';
339
  }else{
340
  $image = get_avatar(0, 32);
269
  public function get_columns(){
270
  $cols = array(
271
  //'cb' => '<input type="checkbox" />',
272
+ //'read' => __('Read', 'wp-security-audit-log'),
273
+ 'type' => __('Code', 'wp-security-audit-log'),
274
+ 'code' => __('Type', 'wp-security-audit-log'),
275
+ 'crtd' => __('Date', 'wp-security-audit-log'),
276
+ 'user' => __('Username', 'wp-security-audit-log'),
277
+ 'scip' => __('Source IP', 'wp-security-audit-log'),
278
  );
279
  if($this->is_multisite() && $this->is_main_blog() && !$this->is_specific_view()){
280
+ $cols['site'] = __('Site', 'wp-security-audit-log');
281
  }
282
+ $cols['mesg'] = __('Message', 'wp-security-audit-log');
283
  if($this->_plugin->settings->IsDataInspectorEnabled()){
284
  $cols['data'] = '';
285
  }
308
  case 'read':
309
  return '<span class="log-read log-read-'
310
  . ($item->is_read ? 'old' : 'new')
311
+ . '" title="' . __('Click to toggle.', 'wp-security-audit-log') . '"></span>';
312
  case 'type':
313
  return str_pad($item->alert_id, 4, '0', STR_PAD_LEFT);
314
  case 'code':
315
  $code = $this->_plugin->alerts->GetAlert($item->alert_id);
316
  $code = $code ? $code->code : 0;
317
+ $const = (object)array('name' => 'E_UNKNOWN', 'value' => 0, 'description' => __('Unknown error code.', 'wp-security-audit-log'));
318
  $const = $this->_plugin->constants->GetConstantBy('value', $code, $const);
319
  return '<span class="log-type log-type-' . $const->value
320
  . '" title="' . esc_html($const->name . ': ' . $const->description) . '"></span>';
334
  . '" target="_blank">' . esc_html($user->display_name) . '</a>';
335
  $roles = $item->GetUserRoles();
336
  $roles = (is_array($roles) && count($roles))
337
+ ? __(esc_html(ucwords(implode(', ', $roles))))
338
  : '<i>' . __('Unknown', 'wp-security-audit-log') . '</i>';
339
  }else{
340
  $image = get_avatar(0, 32);
classes/Views/Help.php CHANGED
@@ -22,73 +22,73 @@ class WSAL_Views_Help extends WSAL_AbstractView {
22
  ?><div class="metabox-holder" style="position: relative;">
23
 
24
  <div class="postbox" style="margin-right: 270px;">
25
- <h3 class="hndl"><span>Help</span></h3>
26
  <div class="inside">
27
  <div class="activity-block">
28
- <h2>Plugin Support</h2>
29
  <p>
30
- Have you encountered or noticed any issues while using WP Security Audit Log plugin?
31
- Or you want to report something to us? Click any of the options below to post on the plugin's forum or contact our support directly.
32
  </p><p>
33
- <a class="button" href="http://wordpress.org/support/plugin/wp-security-audit-log" target="_blank">Free Support Forum</a>
34
  &nbsp;&nbsp;&nbsp;&nbsp;
35
- <a class="button" href="mailto:plugins@wpwhitesecurity.com" target="_blank">Free Support Email</a>
36
  </p>
37
  </div>
38
 
39
  <div class="activity-block">
40
- <h2>Plugin Documentation</h2>
41
  <p>
42
- For more detailed information about WP Security Audit Log you can visit the official plugin page.
43
- You can also visit the official list of WordPress Security Alerts for more information about all of the activity you can monitor with WP Security Audit Log.
44
  </p><p>
45
- <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">Official Plugin Page</a>
46
  &nbsp;&nbsp;&nbsp;&nbsp;
47
- <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">List of WordPress Security Alerts</a>
48
  </p>
49
  </div>
50
 
51
  <div class="activity-block">
52
- <h2>Need Help Securing WordPress?</h2>
53
  <p>
54
- Is your WordPress website hackable?
55
- If you are not sure contact our WordPress security professionals to audit your WordPress or to simply secure your WordPress website.
56
- Click on any of the below service buttons for more information.
57
  </p><p>
58
- <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-hardening/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WordPress Security Hardening</a>
59
  &nbsp;&nbsp;&nbsp;&nbsp;
60
- <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-audit/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WordPress Security Audit</a>
61
  </p>
62
  </div>
63
 
64
  <div class="">
65
- <h2>WordPress Security Readings</h2>
66
  <p>
67
- New to WordPress security?
68
- Do not know from where to start or which is the best services for you?
69
- Visit our WordPress security blog or the WordPress Security category directly for more information and a number of tips and tricks about WordPress security.
70
  </p>
71
- <a class="button" href="http://www.wpwhitesecurity.com/blog/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WP White Security Blog</a>
72
  &nbsp;&nbsp;&nbsp;&nbsp;
73
- <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank">WordPress Security Category</a>
74
  </div>
75
  </div>
76
  </div>
77
 
78
  <div style="position: absolute; right: 70px; width: 180px; top: 10px;">
79
  <div class="postbox">
80
- <h3 class="hndl"><span>WP Password Policy Manager</span></h3>
81
  <div class="inside">
82
  <p>
83
- Easily configure WordPress password policies and ensure users use strong passwords with our plugin WP Password Policy Manager.
84
  </p>
85
- <a class="button button-primary" href="http://wordpress.org/plugins/wp-password-policy-manager/" target="_blank">Download</a>
86
  </div>
87
  </div>
88
  <div class="postbox">
89
- <h3 class="hndl"><span>WP Security Audit Log in your Language!</span></h3>
90
  <div class="inside">
91
- If you are interested in translating our plugin please drop us an email on
92
  <a href="mailto:plugins@wpwhitesecurity.com">plugins@wpwhitesecurity.com</a>.
93
  </div>
94
  </div>
22
  ?><div class="metabox-holder" style="position: relative;">
23
 
24
  <div class="postbox" style="margin-right: 270px;">
25
+ <h3 class="hndl"><span><?php _e('Help', 'wp-security-audit-log'); ?></span></h3>
26
  <div class="inside">
27
  <div class="activity-block">
28
+ <h2><?php _e('Plugin Support', 'wp-security-audit-log'); ?></h2>
29
  <p>
30
+ <?php _e('Have you encountered or noticed any issues while using WP Security Audit Log plugin?', 'wp-security-audit-log'); ?>
31
+ <?php _e('Or you want to report something to us? Click any of the options below to post on the plugin\'s forum or contact our support directly.', 'wp-security-audit-log'); ?>
32
  </p><p>
33
+ <a class="button" href="http://wordpress.org/support/plugin/wp-security-audit-log" target="_blank"><?php _e('Free Support Forum', 'wp-security-audit-log'); ?></a>
34
  &nbsp;&nbsp;&nbsp;&nbsp;
35
+ <a class="button" href="mailto:plugins@wpwhitesecurity.com" target="_blank"><?php _e('Free Support Email', 'wp-security-audit-log'); ?></a>
36
  </p>
37
  </div>
38
 
39
  <div class="activity-block">
40
+ <h2><?php _e('Plugin Documentation', 'wp-security-audit-log'); ?></h2>
41
  <p>
42
+ <?php _e('For more detailed information about WP Security Audit Log you can visit the official plugin page.', 'wp-security-audit-log'); ?>
43
+ <?php _e('You can also visit the official list of WordPress Security Alerts for more information about all of the activity you can monitor with WP Security Audit Log.', 'wp-security-audit-log'); ?>
44
  </p><p>
45
+ <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('Official Plugin Page', 'wp-security-audit-log'); ?></a>
46
  &nbsp;&nbsp;&nbsp;&nbsp;
47
+ <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/security-audit-alerts-logs/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('List of WordPress Security Alerts', 'wp-security-audit-log'); ?></a>
48
  </p>
49
  </div>
50
 
51
  <div class="activity-block">
52
+ <h2><?php _e('Need Help Securing WordPress?', 'wp-security-audit-log'); ?></h2>
53
  <p>
54
+ <?php _e('Is your WordPress website hackable?', 'wp-security-audit-log'); ?>
55
+ <?php _e('If you are not sure contact our WordPress security professionals to audit your WordPress or to simply secure your WordPress website.', 'wp-security-audit-log'); ?>
56
+ <?php _e('Click on any of the below service buttons for more information.', 'wp-security-audit-log'); ?>
57
  </p><p>
58
+ <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-hardening/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('WordPress Security Hardening', 'wp-security-audit-log'); ?></a>
59
  &nbsp;&nbsp;&nbsp;&nbsp;
60
+ <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security-services/wordpress-security-audit/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('WordPress Security Audit', 'wp-security-audit-log'); ?></a>
61
  </p>
62
  </div>
63
 
64
  <div class="">
65
+ <h2><?php _e('WordPress Security Readings', 'wp-security-audit-log'); ?></h2>
66
  <p>
67
+ <?php _e('New to WordPress security?', 'wp-security-audit-log'); ?>
68
+ <?php _e('Do not know from where to start or which is the best services for you?', 'wp-security-audit-log'); ?>
69
+ <?php _e('Visit our WordPress security blog or the WordPress Security category directly for more information and a number of tips and tricks about WordPress security.', 'wp-security-audit-log'); ?>
70
  </p>
71
+ <a class="button" href="http://www.wpwhitesecurity.com/blog/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('WP White Security Blog', 'wp-security-audit-log'); ?></a>
72
  &nbsp;&nbsp;&nbsp;&nbsp;
73
+ <a class="button" href="http://www.wpwhitesecurity.com/wordpress-security/?utm_source=wpsalabt&utm_medium=txtlink&utm_campaign=wpsal" target="_blank"><?php _e('WordPress Security Category', 'wp-security-audit-log'); ?></a>
74
  </div>
75
  </div>
76
  </div>
77
 
78
  <div style="position: absolute; right: 70px; width: 180px; top: 10px;">
79
  <div class="postbox">
80
+ <h3 class="hndl"><span><?php _e('WP Password Policy Manager', 'wp-security-audit-log'); ?></span></h3>
81
  <div class="inside">
82
  <p>
83
+ <?php _e('Easily configure WordPress password policies and ensure users use strong passwords with our plugin WP Password Policy Manager.', 'wp-security-audit-log'); ?>
84
  </p>
85
+ <a class="button button-primary" href="http://wordpress.org/plugins/wp-password-policy-manager/" target="_blank"><?php _e('Download', 'wp-security-audit-log'); ?></a>
86
  </div>
87
  </div>
88
  <div class="postbox">
89
+ <h3 class="hndl"><span><?php _e('WP Security Audit Log in your Language!', 'wp-security-audit-log'); ?></span></h3>
90
  <div class="inside">
91
+ <?php _e('If you are interested in translating our plugin please drop us an email on', 'wp-security-audit-log'); ?>
92
  <a href="mailto:plugins@wpwhitesecurity.com">plugins@wpwhitesecurity.com</a>.
93
  </div>
94
  </div>
classes/Views/Sandbox.php CHANGED
@@ -132,7 +132,7 @@ new DummySiteCreatorTask();',
132
 
133
  public function AjaxExecuteResponse(){
134
  echo '<!DOCTYPE html><html><head>';
135
- echo '<link rel="stylesheet" id="open-sans-css" href="' . $this->_plugin->GetBaseUrl() . '/css/nice_r.css" type="text/css" media="all">';
136
  echo '<script type="text/javascript" src="'.$this->_plugin->GetBaseUrl() . '/js/nice_r.js"></script>';
137
  echo '<style type="text/css">';
138
  echo 'html, body { margin: 0; padding: 0; }';
@@ -188,14 +188,14 @@ new DummySiteCreatorTask();',
188
  <textarea name="code" id="sandbox-code"><?php echo esc_html($code); ?></textarea>
189
  <iframe id="sandbox-result" name="execframe"></iframe>
190
  </div>
191
- <div id="sandbox-status">Ready.</div>
192
  </div>
193
  <label for="sandbox-snippet" style="float: left; line-height: 26px; display: inline-block; margin-right: 32px; border-right: 1px dotted #CCC; padding-right: 32px;">
194
  Use Snippet:
195
  <?php $code = json_encode(admin_url('admin.php?page=wsal-sandbox') . '&snippet='); ?>
196
  <select id="sandbox-snippet" onchange="location = <?php echo esc_attr($code); ?> + encodeURIComponent(this.value);"><?php
197
  foreach(array_keys($this->snippets) as $name){
198
- ?><option value="<?php echo esc_attr($name); ?>"<?php if($name == $snpt)echo ' selected="selected"'; ?>><?php _e($name, 'wp-security-audit-log'); ?></option><?php
199
  }
200
  ?></select>
201
  </label>
132
 
133
  public function AjaxExecuteResponse(){
134
  echo '<!DOCTYPE html><html><head>';
135
+ echo '<link rel="stylesheet" id="open-sans-css" href="' . $this->_plugin->GetBaseUrl() . '/css/nice_r.css" type="text/css" media="all"/>';
136
  echo '<script type="text/javascript" src="'.$this->_plugin->GetBaseUrl() . '/js/nice_r.js"></script>';
137
  echo '<style type="text/css">';
138
  echo 'html, body { margin: 0; padding: 0; }';
188
  <textarea name="code" id="sandbox-code"><?php echo esc_html($code); ?></textarea>
189
  <iframe id="sandbox-result" name="execframe"></iframe>
190
  </div>
191
+ <div id="sandbox-status"><?php _e('Ready.', 'wp-security-audit-log'); ?></div>
192
  </div>
193
  <label for="sandbox-snippet" style="float: left; line-height: 26px; display: inline-block; margin-right: 32px; border-right: 1px dotted #CCC; padding-right: 32px;">
194
  Use Snippet:
195
  <?php $code = json_encode(admin_url('admin.php?page=wsal-sandbox') . '&snippet='); ?>
196
  <select id="sandbox-snippet" onchange="location = <?php echo esc_attr($code); ?> + encodeURIComponent(this.value);"><?php
197
  foreach(array_keys($this->snippets) as $name){
198
+ ?><option value="<?php echo esc_attr($name); ?>"<?php if($name == $snpt)echo ' selected="selected"'; ?>><?php echo $name; ?></option><?php
199
  }
200
  ?></select>
201
  </label>
classes/Views/Settings.php CHANGED
@@ -206,23 +206,47 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
206
  <tr>
207
  <th><label><?php _e('Developer Options', 'wp-security-audit-log'); ?></label></th>
208
  <td>
209
- <fieldset><?php
210
- foreach(array(
211
- WSAL_Settings::OPT_DEV_DATA_INSPECTOR => array('Data Inspector', 'View data logged for each triggered alert.'),
212
- WSAL_Settings::OPT_DEV_PHP_ERRORS => array('PHP Errors', 'Enables sensor for alerts generated from PHP.'),
213
- WSAL_Settings::OPT_DEV_REQUEST_LOG => array('Request Log', 'Enables logging request to file.'),
214
- WSAL_Settings::OPT_DEV_SANDBOX_PAGE => array('Sandbox', 'Enables sandbox for testing PHP code.'),
215
- ) as $opt => $info){
216
- ?><label for="devoption_<?php echo $opt; ?>">
217
- <input type="checkbox" name="DevOptions[]" id="devoption_<?php echo $opt; ?>" <?php
218
- if($this->_plugin->settings->IsDevOptionEnabled($opt))echo 'checked="checked"'; ?> value="<?php echo $opt; ?>">
219
- <span><?php _e($info[0], 'wp-security-audit-log'); ?></span>
220
- <?php if(isset($info[1]) && $info[1]){ ?>
221
- <span class="description"> &mdash; <?php _e($info[1], 'wp-security-audit-log'); ?></span>
222
- <?php }
223
- ?></label><br/><?php
224
- }
225
- ?></fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  </td>
227
  </tr>
228
 
@@ -232,8 +256,8 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
232
  <fieldset>
233
  <label for="Incognito">
234
  <input type="checkbox" name="Incognito" value="1" id="Incognito"<?php
235
- if($this->_plugin->settings->IsIncognito())echo ' checked="checked"'; ?>/>
236
- <?php _e('Hide', 'wp-security-audit-log'); ?>
237
  </label>
238
  </fieldset>
239
  </td>
206
  <tr>
207
  <th><label><?php _e('Developer Options', 'wp-security-audit-log'); ?></label></th>
208
  <td>
209
+ <fieldset>
210
+ <?php $any = $this->_plugin->settings->IsAnyDevOptionEnabled(); ?>
211
+ <a href="javascript:;" style="<?php if($any)echo 'display: none;'; ?>"
212
+ onclick="jQuery(this).hide().next().show();">Show Developer Options</a>
213
+ <div style="<?php if(!$any)echo 'display: none;'; ?>">
214
+ <p style="border-left: 3px solid #FFD000; padding: 2px 8px; margin-left: 6px; margin-bottom: 16px;"><?php
215
+ _e('Enabling any of the settings below may cause unintended side-effects including degraded performance.<br/>Only enable these options if you know what you are doing.', 'wp-security-audit-log');
216
+ ?></p><?php
217
+ foreach(array(
218
+ WSAL_Settings::OPT_DEV_DATA_INSPECTOR => array(
219
+ __('Data Inspector', 'wp-security-audit-log'),
220
+ __('View data logged for each triggered alert.', 'wp-security-audit-log')
221
+ ),
222
+ WSAL_Settings::OPT_DEV_PHP_ERRORS => array(
223
+ __('PHP Errors', 'wp-security-audit-log'),
224
+ __('Enables sensor for alerts generated from PHP.', 'wp-security-audit-log')
225
+ ),
226
+ WSAL_Settings::OPT_DEV_REQUEST_LOG => array(
227
+ __('Request Log', 'wp-security-audit-log'),
228
+ __('Enables logging request to file.', 'wp-security-audit-log')
229
+ ),
230
+ WSAL_Settings::OPT_DEV_SANDBOX_PAGE => array(
231
+ __('Sandbox', 'wp-security-audit-log'),
232
+ __('Enables sandbox for testing PHP code.', 'wp-security-audit-log')
233
+ ),
234
+ WSAL_Settings::OPT_DEV_BACKTRACE_LOG => array(
235
+ __('Backtrace', 'wp-security-audit-log'),
236
+ __('Log full backtrace for PHP-generated alerts.', 'wp-security-audit-log')
237
+ ),
238
+ ) as $opt => $info){
239
+ ?><label for="devoption_<?php echo $opt; ?>">
240
+ <input type="checkbox" name="DevOptions[]" id="devoption_<?php echo $opt; ?>" <?php
241
+ if($this->_plugin->settings->IsDevOptionEnabled($opt))echo 'checked="checked"'; ?> value="<?php echo $opt; ?>">
242
+ <span><?php echo $info[0]; ?></span>
243
+ <?php if(isset($info[1]) && $info[1]){ ?>
244
+ <span class="description"> &mdash; <?php echo $info[1]; ?></span>
245
+ <?php }
246
+ ?></label><br/><?php
247
+ }
248
+ ?></div>
249
+ </fieldset>
250
  </td>
251
  </tr>
252
 
256
  <fieldset>
257
  <label for="Incognito">
258
  <input type="checkbox" name="Incognito" value="1" id="Incognito"<?php
259
+ if($this->_plugin->settings->IsIncognito())echo ' checked="checked"';
260
+ ?>/> <?php _e('Hide', 'wp-security-audit-log'); ?>
261
  </label>
262
  </fieldset>
263
  </td>
classes/Views/ToggleAlerts.php CHANGED
@@ -63,9 +63,9 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
63
  <thead>
64
  <tr>
65
  <th width="48"><input type="checkbox"<?php if($allactive)echo 'checked="checked"'; ?>/></th>
66
- <th width="80">Code</th>
67
- <th width="100">Type</th>
68
- <th>Description</th>
69
  </tr>
70
  </thead>
71
  <tbody><?php
63
  <thead>
64
  <tr>
65
  <th width="48"><input type="checkbox"<?php if($allactive)echo 'checked="checked"'; ?>/></th>
66
+ <th width="80"><?php _e('Code', 'wp-security-audit-log'); ?></th>
67
+ <th width="100"><?php _e('Type', 'wp-security-audit-log'); ?></th>
68
+ <th><?php _e('Description', 'wp-security-audit-log'); ?></th>
69
  </tr>
70
  </thead>
71
  <tbody><?php
defaults.php CHANGED
@@ -10,143 +10,146 @@ defined('E_RECOVERABLE_ERROR') || define('E_RECOVERABLE_ERROR', 'E_RECOVERABLE_E
10
  defined('E_DEPRECATED') || define('E_DEPRECATED', 'E_DEPRECATED');
11
  defined('E_USER_DEPRECATED') || define('E_USER_DEPRECATED', 'E_USER_DEPRECATED');
12
 
13
- WpSecurityAuditLog::GetInstance()
14
- ->constants->UseConstants(array(
15
- // default PHP constants
16
- array('name' => 'E_ERROR', 'description' => __('Fatal run-time error.', 'wp-security-audit-log')),
17
- array('name' => 'E_WARNING', 'description' => __('Run-time warning (non-fatal error).', 'wp-security-audit-log')),
18
- array('name' => 'E_PARSE', 'description' => __('Compile-time parse error.', 'wp-security-audit-log')),
19
- array('name' => 'E_NOTICE', 'description' => __('Run-time notice.', 'wp-security-audit-log')),
20
- array('name' => 'E_CORE_ERROR', 'description' => __('Fatal error that occurred during startup.', 'wp-security-audit-log')),
21
- array('name' => 'E_CORE_WARNING', 'description' => __('Warnings that occurred during startup.', 'wp-security-audit-log')),
22
- array('name' => 'E_COMPILE_ERROR', 'description' => __('Fatal compile-time error.', 'wp-security-audit-log')),
23
- array('name' => 'E_COMPILE_WARNING', 'description' => __('Compile-time warning.', 'wp-security-audit-log')),
24
- array('name' => 'E_USER_ERROR', 'description' => __('User-generated error message.', 'wp-security-audit-log')),
25
- array('name' => 'E_USER_WARNING', 'description' => __('User-generated warning message.', 'wp-security-audit-log')),
26
- array('name' => 'E_USER_NOTICE', 'description' => __('User-generated notice message. ', 'wp-security-audit-log')),
27
- array('name' => 'E_STRICT', 'description' => __('Non-standard/optimal code warning.', 'wp-security-audit-log')),
28
- array('name' => 'E_RECOVERABLE_ERROR', 'description' => __('Catchable fatal error.', 'wp-security-audit-log')),
29
- array('name' => 'E_DEPRECATED', 'description' => __('Run-time deprecation notices.', 'wp-security-audit-log')),
30
- array('name' => 'E_USER_DEPRECATED', 'description' => __('Run-time user deprecation notices.', 'wp-security-audit-log')),
31
- // custom constants
32
- array('name' => 'E_CRITICAL', 'description' => __('Critical, high-impact messages.', 'wp-security-audit-log')),
33
- array('name' => 'E_DEBUG', 'description' => __('Debug informational messages.', 'wp-security-audit-log')),
34
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
- WpSecurityAuditLog::GetInstance()
37
- ->alerts->RegisterGroup(array(
38
- 'Other User Activity' => array(
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')),
45
- array(2051, E_CRITICAL, __('User changed a file using the plugin editor', 'wp-security-audit-log'), __('Modified %File% with the Plugin Editor', 'wp-security-audit-log')),
46
- ),
47
- 'Blog Posts' => array(
48
- array(2000, E_NOTICE, __('User created a new blog post and saved it as draft', 'wp-security-audit-log'), __('Created a new blog post called %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
49
- array(2001, E_NOTICE, __('User published a blog post', 'wp-security-audit-log'), __('Published a blog post called %PostTitle%. Blog post URL is %PostUrl%', 'wp-security-audit-log')),
50
- array(2002, E_NOTICE, __('User modified a published blog post', 'wp-security-audit-log'), __('Modified the published blog post %PostTitle%. Blog post URL is %PostUrl%', 'wp-security-audit-log')),
51
- array(2003, E_NOTICE, __('User modified a draft blog post', 'wp-security-audit-log'), __('Modified the draft blog post %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
52
- array(2008, E_NOTICE, __('User permanently deleted a blog post from the trash', 'wp-security-audit-log'), __('Deleted the post %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
53
- array(2012, E_WARNING, __('User moved a blog post to the trash', 'wp-security-audit-log'), __('Moved the blog post %PostTitle% to trash', 'wp-security-audit-log')),
54
- array(2014, E_CRITICAL, __('User restored a blog post from trash', 'wp-security-audit-log'), __('Restored post %PostTitle% from trash', 'wp-security-audit-log')),
55
- array(2016, E_NOTICE, __('User changed blog post category', 'wp-security-audit-log'), __('Changed the category of the post %PostTitle% from %OldCategories% to %NewCategories%', 'wp-security-audit-log')),
56
- array(2017, E_NOTICE, __('User changed blog post URL', 'wp-security-audit-log'), __('Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
57
- array(2019, E_NOTICE, __('User changed blog post author', 'wp-security-audit-log'), __('Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
58
- array(2021, E_NOTICE, __('User changed blog post status', 'wp-security-audit-log'), __('Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
59
- array(2023, E_NOTICE, __('User created new category', 'wp-security-audit-log'), __('Created a new category called %CategoryName%', 'wp-security-audit-log')),
60
- array(2024, E_WARNING, __('User deleted category', 'wp-security-audit-log'), __('Deleted the %CategoryName% category', 'wp-security-audit-log')),
61
- array(2025, E_WARNING, __('User changed the visibility of a blog post', 'wp-security-audit-log'), __('Changed the visibility of %PostTitle% blog post from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
62
- array(2027, E_NOTICE, __('User changed the date of a blog post', 'wp-security-audit-log'), __('Changed the date of %PostTitle% blog post from %OldDate% to %NewDate%', 'wp-security-audit-log')),
63
- array(2049, E_NOTICE, __('User sets a post as sticky', 'wp-security-audit-log'), __('Set the post %PostTitle% as Sticky', 'wp-security-audit-log')),
64
- array(2050, E_NOTICE, __('User removes post from sticky', 'wp-security-audit-log'), __('Removed the post %PostTitle% from Sticky', 'wp-security-audit-log')),
65
- ),
66
- 'Pages' => array(
67
- array(2004, E_NOTICE, __('User created a new WordPress page and saved it as draft', 'wp-security-audit-log'), __('Created a new page called %PostTitle%. Page ID is %PostID%', 'wp-security-audit-log')),
68
- array(2005, E_NOTICE, __('User published a WorPress page', 'wp-security-audit-log'), __('Published a page called %PostTitle%. Page URL is %PostUrl%', 'wp-security-audit-log')),
69
- array(2006, E_NOTICE, __('User modified a published WordPress page', 'wp-security-audit-log'), __('Modified the published page %PostTitle%. Page URL is %PostUrl%', 'wp-security-audit-log')),
70
- array(2007, E_NOTICE, __('User modified a draft WordPress page', 'wp-security-audit-log'), __('Modified the draft page %PostTitle%. page ID is %PostID%', 'wp-security-audit-log')),
71
- array(2009, E_NOTICE, __('User permanently deleted a page from the trash', 'wp-security-audit-log'), __('Deleted the page %PostTitle%. Page ID is %PostID%', 'wp-security-audit-log')),
72
- array(2013, E_WARNING, __('User moved WordPress page to the trash', 'wp-security-audit-log'), __('Moved the page %PostTitle% to trash', 'wp-security-audit-log')),
73
- array(2015, E_CRITICAL, __('User restored a WordPress page from trash', 'wp-security-audit-log'), __('Restored page %PostTitle% from trash', 'wp-security-audit-log')),
74
- array(2018, E_NOTICE, __('User changed page URL', 'wp-security-audit-log'), __('Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
75
- array(2020, E_NOTICE, __('User changed page author', 'wp-security-audit-log'), __('Changed the author of %PostTitle% page from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
76
- array(2022, E_NOTICE, __('User changed page status', 'wp-security-audit-log'), __('Changed the status of %PostTitle% page from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
77
- array(2026, E_WARNING, __('User changed the visibility of a page post', 'wp-security-audit-log'), __('Changed the visibility of %PostTitle% page from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
78
- array(2028, E_NOTICE, __('User changed the date of a page post', 'wp-security-audit-log'), __('Changed the date of %PostTitle% page from %OldDate% to %NewDate%', 'wp-security-audit-log')),
79
- array(2047, E_NOTICE, __('User changed the parent of a page', 'wp-security-audit-log'), __('Changed the parent of %PostTitle% page from %OldParentName% to %NewParentName%', 'wp-security-audit-log')),
80
- array(2048, E_CRITICAL, __('User changes the template of a page', 'wp-security-audit-log'), __('Changed the template of %PostTitle% page from %OldTemplate% to %NewTemplate%', 'wp-security-audit-log')),
81
- ),
82
- 'Custom Posts' => array(
83
- array(2029, E_NOTICE, __('User created a new post with custom post type and saved it as draft', 'wp-security-audit-log'), __('Created a new custom post called %PostTitle% of type %PostType%. Post ID is %PostID%', 'wp-security-audit-log')),
84
- array(2030, E_NOTICE, __('User published a post with custom post type', 'wp-security-audit-log'), __('Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
85
- array(2031, E_NOTICE, __('User modified a post with custom post type', 'wp-security-audit-log'), __('Modified custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
86
- array(2032, E_NOTICE, __('User modified a draft post with custom post type', 'wp-security-audit-log'), __('Modified draft custom post %PostTitle% of type is %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
87
- array(2033, E_WARNING, __('User permanently deleted post with custom post type', 'wp-security-audit-log'), __('Deleted custom post %PostTitle% of type %PostType%', 'wp-security-audit-log')),
88
- array(2034, E_WARNING, __('User moved post with custom post type to trash', 'wp-security-audit-log'), __('Moved custom post %PostTitle% to trash. Post type is %PostType%', 'wp-security-audit-log')),
89
- array(2035, E_CRITICAL, __('User restored post with custom post type from trash', 'wp-security-audit-log'), __('Restored custom post %PostTitle% of type %PostType% from trash', 'wp-security-audit-log')),
90
- array(2036, E_NOTICE, __('User changed the category of a post with custom post type', 'wp-security-audit-log'), __('Changed the category(ies) of custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%', 'wp-security-audit-log')),
91
- array(2037, E_NOTICE, __('User changed the URL of a post with custom post type', 'wp-security-audit-log'), __('Changed the URL of custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
92
- array(2038, E_NOTICE, __('User changed the author or post with custom post type', 'wp-security-audit-log'), __('Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
93
- array(2039, E_NOTICE, __('User changed the status of post with custom post type', 'wp-security-audit-log'), __('Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
94
- array(2040, E_WARNING, __('User changed the visibility of a post with custom post type', 'wp-security-audit-log'), __('Changed the visibility of custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
95
- array(2041, E_NOTICE, __('User changed the date of post with custom post type', 'wp-security-audit-log'), __('Changed the date of custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%', 'wp-security-audit-log')),
96
- ),
97
- 'Widgets' => array(
98
- array(2042, E_CRITICAL, __('User added a new widget', 'wp-security-audit-log'), __('Added a new %WidgetName% widget in %Sidebar%', 'wp-security-audit-log')),
99
- array(2043, E_WARNING, __('User modified a widget', 'wp-security-audit-log'), __('Modified the %WidgetName% widget in %Sidebar%', 'wp-security-audit-log')),
100
- array(2044, E_CRITICAL, __('User deleted widget', 'wp-security-audit-log'), __('Deleted the %WidgetName% widget from %Sidebar%', 'wp-security-audit-log')),
101
- array(2045, E_NOTICE, __('User moved widget', 'wp-security-audit-log'), __('Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%', 'wp-security-audit-log')),
102
- ),
103
- 'User Profiles' => array(
104
- array(4000, E_CRITICAL, __('A new user was created on WordPress', 'wp-security-audit-log'), __('User %NewUserData->Username% subscribed with a role of %NewUserData->Roles%', 'wp-security-audit-log')),
105
- array(4001, E_CRITICAL, __('A user created another WordPress user', 'wp-security-audit-log'), __('Created a new user %NewUserData->Username% with the role of %NewUserData->Roles%', 'wp-security-audit-log')),
106
- array(4002, E_CRITICAL, __('The role of a user was changed by another WordPress user', 'wp-security-audit-log'), __('Changed the role of user %TargetUsername% from %OldRole% to %NewRole%', 'wp-security-audit-log')),
107
- array(4003, E_CRITICAL, __('User has changed his or her password', 'wp-security-audit-log'), __('Changed the password', 'wp-security-audit-log')),
108
- array(4004, E_CRITICAL, __('A user changed another user\'s password', 'wp-security-audit-log'), __('Changed the password for user %TargetUserData->Username% with the role of %TargetUserData->Roles%', 'wp-security-audit-log')),
109
- array(4005, E_NOTICE, __('User changed his or her email address', 'wp-security-audit-log'), __('Changed the email address from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
110
- array(4006, E_NOTICE, __('A user changed another user\'s email address', 'wp-security-audit-log'), __('Changed the email address of user account %TargetUsername% from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
111
- array(4007, E_CRITICAL, __('A user was deleted by another user', 'wp-security-audit-log'), __('Deleted User %TargetUserData->Username% with the role of %TargetUserData->Roles%', 'wp-security-audit-log')),
112
- ),
113
- 'Plugins & Themes' => array(
114
- array(5000, E_CRITICAL, __('User installed a plugin', 'wp-security-audit-log'), __('Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%', 'wp-security-audit-log')),
115
- array(5001, E_CRITICAL, __('User activated a WordPress plugin', 'wp-security-audit-log'), __('Activated the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
116
- array(5002, E_CRITICAL, __('User deactivated a WordPress plugin', 'wp-security-audit-log'), __('Deactivated the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
117
- array(5003, E_CRITICAL, __('User uninstalled a plugin', 'wp-security-audit-log'), __('Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%', 'wp-security-audit-log')),
118
- array(5004, E_WARNING, __('User upgraded a plugin', 'wp-security-audit-log'), __('Upgraded the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
119
- array(5005, E_CRITICAL, __('User installed a theme', 'wp-security-audit-log'), __('Installed theme "%Theme->Name%" in %Theme->get_template_directory%', 'wp-security-audit-log')),
120
- array(5006, E_CRITICAL, __('User activated a theme', 'wp-security-audit-log'), __('Activated theme "%Theme->Name%", installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
121
- array(5007, E_CRITICAL, __('User uninstalled a theme', 'wp-security-audit-log'), __('Deleted theme "%Theme->Name%" installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
122
- ),
123
- 'System Activity' => array(
124
- array(0000, E_CRITICAL, __('Unknown Error', 'wp-security-audit-log'), __('An unexpected error has occurred', 'wp-security-audit-log')),
125
- array(0001, E_CRITICAL, __('PHP error', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
126
- array(0002, E_WARNING, __('PHP warning', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
127
- array(0003, E_NOTICE, __('PHP notice', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
128
- array(0004, E_CRITICAL, __('PHP exception', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
129
- array(0005, E_CRITICAL, __('PHP shutdown error', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
130
- array(6000, E_NOTICE, __('Events automatically pruned by system', 'wp-security-audit-log'), __('%EventCount% event(s) automatically deleted by system', 'wp-security-audit-log')),
131
- array(6001, E_CRITICAL, __('Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log'), __('%NewValue% the option "Anyone can register"', 'wp-security-audit-log')),
132
- array(6002, E_CRITICAL, __('New User Default Role changed', 'wp-security-audit-log'), __('Changed the New User Default Role from %OldRole% to %NewRole%', 'wp-security-audit-log')),
133
- array(6003, E_CRITICAL, __('WordPress Administrator Notification email changed', 'wp-security-audit-log'), __('Changed the WordPress administrator notifications email address from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
134
- array(6004, E_CRITICAL, __('WordPress was updated', 'wp-security-audit-log'), __('Updated WordPress from version %OldVersion% to %NewVersion%', 'wp-security-audit-log')),
135
- array(6005, E_CRITICAL, __('User changes the WordPress Permalinks', 'wp-security-audit-log'), __('Changed the WordPress permalinks from %OldPattern% to %NewPattern%', 'wp-security-audit-log')),
136
- ),
137
- 'MultiSite' => array(
138
- array(4008, E_CRITICAL, __('User granted Super Admin privileges', 'wp-security-audit-log'), __('Granted Super Admin privileges to %TargetUsername%', 'wp-security-audit-log')),
139
- array(4009, E_CRITICAL, __('User revoked from Super Admin privileges', 'wp-security-audit-log'), __('Revoked Super Admin privileges from %TargetUsername%', 'wp-security-audit-log')),
140
- array(4010, E_CRITICAL, __('Existing user added to a site', 'wp-security-audit-log'), __('Added existing user %TargetUsername% with %TargetUserRole% role to site %SiteName%', 'wp-security-audit-log')),
141
- array(4011, E_CRITICAL, __('User removed from site', 'wp-security-audit-log'), __('Removed user %TargetUsername% with role %TargetUserRole% from %SiteName% site', 'wp-security-audit-log')),
142
- array(4012, E_CRITICAL, __('New network user created', 'wp-security-audit-log'), __('Created a new network user %NewUserData->Username%', 'wp-security-audit-log')),
143
- array(7000, E_CRITICAL, __('New site added on network', 'wp-security-audit-log'), __('Added site %SiteName% to the network', 'wp-security-audit-log')),
144
- array(7001, E_CRITICAL, __('Existing site archived', 'wp-security-audit-log'), __('Archived site %SiteName%', 'wp-security-audit-log')),
145
- array(7002, E_CRITICAL, __('Archived site has been unarchived', 'wp-security-audit-log'), __('Unarchived site %SiteName%', 'wp-security-audit-log')),
146
- array(7003, E_CRITICAL, __('Deactivated site has been activated', 'wp-security-audit-log'), __('Activated site %SiteName%', 'wp-security-audit-log')),
147
- array(7004, E_CRITICAL, __('Site has been deactivated', 'wp-security-audit-log'), __('Deactivated site %SiteName%', 'wp-security-audit-log')),
148
- array(7005, E_CRITICAL, __('Existing site deleted from network', 'wp-security-audit-log'), __('Deleted site %SiteName%', 'wp-security-audit-log')),
149
- array(5008, E_CRITICAL, __('Activated theme on network', 'wp-security-audit-log'), __('Network activated %Theme->Name% theme installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
150
- array(5009, E_CRITICAL, __('Deactivated theme from network', 'wp-security-audit-log'), __('Network deactivated %Theme->Name% theme installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
151
- ),
152
- ));
10
  defined('E_DEPRECATED') || define('E_DEPRECATED', 'E_DEPRECATED');
11
  defined('E_USER_DEPRECATED') || define('E_USER_DEPRECATED', 'E_USER_DEPRECATED');
12
 
13
+ function wsaldefaults_wsal_init(WpSecurityAuditLog $wsal){
14
+ $wsal->constants->UseConstants(array(
15
+ // default PHP constants
16
+ array('name' => 'E_ERROR', 'description' => __('Fatal run-time error.', 'wp-security-audit-log')),
17
+ array('name' => 'E_WARNING', 'description' => __('Run-time warning (non-fatal error).', 'wp-security-audit-log')),
18
+ array('name' => 'E_PARSE', 'description' => __('Compile-time parse error.', 'wp-security-audit-log')),
19
+ array('name' => 'E_NOTICE', 'description' => __('Run-time notice.', 'wp-security-audit-log')),
20
+ array('name' => 'E_CORE_ERROR', 'description' => __('Fatal error that occurred during startup.', 'wp-security-audit-log')),
21
+ array('name' => 'E_CORE_WARNING', 'description' => __('Warnings that occurred during startup.', 'wp-security-audit-log')),
22
+ array('name' => 'E_COMPILE_ERROR', 'description' => __('Fatal compile-time error.', 'wp-security-audit-log')),
23
+ array('name' => 'E_COMPILE_WARNING', 'description' => __('Compile-time warning.', 'wp-security-audit-log')),
24
+ array('name' => 'E_USER_ERROR', 'description' => __('User-generated error message.', 'wp-security-audit-log')),
25
+ array('name' => 'E_USER_WARNING', 'description' => __('User-generated warning message.', 'wp-security-audit-log')),
26
+ array('name' => 'E_USER_NOTICE', 'description' => __('User-generated notice message. ', 'wp-security-audit-log')),
27
+ array('name' => 'E_STRICT', 'description' => __('Non-standard/optimal code warning.', 'wp-security-audit-log')),
28
+ array('name' => 'E_RECOVERABLE_ERROR', 'description' => __('Catchable fatal error.', 'wp-security-audit-log')),
29
+ array('name' => 'E_DEPRECATED', 'description' => __('Run-time deprecation notices.', 'wp-security-audit-log')),
30
+ array('name' => 'E_USER_DEPRECATED', 'description' => __('Run-time user deprecation notices.', 'wp-security-audit-log')),
31
+ // custom constants
32
+ array('name' => 'E_CRITICAL', 'description' => __('Critical, high-impact messages.', 'wp-security-audit-log')),
33
+ array('name' => 'E_DEBUG', 'description' => __('Debug informational messages.', 'wp-security-audit-log')),
34
+ ));
35
+
36
+ // create list of default alerts
37
+ $wsal->alerts->RegisterGroup(array(
38
+ __('Other User Activity', 'wp-security-audit-log') => array(
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')),
45
+ array(2051, E_CRITICAL, __('User changed a file using the plugin editor', 'wp-security-audit-log'), __('Modified %File% with the Plugin Editor', 'wp-security-audit-log')),
46
+ ),
47
+ __('Blog Posts', 'wp-security-audit-log') => array(
48
+ array(2000, E_NOTICE, __('User created a new blog post and saved it as draft', 'wp-security-audit-log'), __('Created a new blog post called %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
49
+ array(2001, E_NOTICE, __('User published a blog post', 'wp-security-audit-log'), __('Published a blog post called %PostTitle%. Blog post URL is %PostUrl%', 'wp-security-audit-log')),
50
+ array(2002, E_NOTICE, __('User modified a published blog post', 'wp-security-audit-log'), __('Modified the published blog post %PostTitle%. Blog post URL is %PostUrl%', 'wp-security-audit-log')),
51
+ array(2003, E_NOTICE, __('User modified a draft blog post', 'wp-security-audit-log'), __('Modified the draft blog post %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
52
+ array(2008, E_NOTICE, __('User permanently deleted a blog post from the trash', 'wp-security-audit-log'), __('Deleted the post %PostTitle%. Blog post ID is %PostID%', 'wp-security-audit-log')),
53
+ array(2012, E_WARNING, __('User moved a blog post to the trash', 'wp-security-audit-log'), __('Moved the blog post %PostTitle% to trash', 'wp-security-audit-log')),
54
+ array(2014, E_CRITICAL, __('User restored a blog post from trash', 'wp-security-audit-log'), __('Restored post %PostTitle% from trash', 'wp-security-audit-log')),
55
+ array(2016, E_NOTICE, __('User changed blog post category', 'wp-security-audit-log'), __('Changed the category of the post %PostTitle% from %OldCategories% to %NewCategories%', 'wp-security-audit-log')),
56
+ array(2017, E_NOTICE, __('User changed blog post URL', 'wp-security-audit-log'), __('Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
57
+ array(2019, E_NOTICE, __('User changed blog post author', 'wp-security-audit-log'), __('Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
58
+ array(2021, E_NOTICE, __('User changed blog post status', 'wp-security-audit-log'), __('Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
59
+ array(2023, E_NOTICE, __('User created new category', 'wp-security-audit-log'), __('Created a new category called %CategoryName%', 'wp-security-audit-log')),
60
+ array(2024, E_WARNING, __('User deleted category', 'wp-security-audit-log'), __('Deleted the %CategoryName% category', 'wp-security-audit-log')),
61
+ array(2025, E_WARNING, __('User changed the visibility of a blog post', 'wp-security-audit-log'), __('Changed the visibility of %PostTitle% blog post from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
62
+ array(2027, E_NOTICE, __('User changed the date of a blog post', 'wp-security-audit-log'), __('Changed the date of %PostTitle% blog post from %OldDate% to %NewDate%', 'wp-security-audit-log')),
63
+ array(2049, E_NOTICE, __('User sets a post as sticky', 'wp-security-audit-log'), __('Set the post %PostTitle% as Sticky', 'wp-security-audit-log')),
64
+ array(2050, E_NOTICE, __('User removes post from sticky', 'wp-security-audit-log'), __('Removed the post %PostTitle% from Sticky', 'wp-security-audit-log')),
65
+ ),
66
+ __('Pages', 'wp-security-audit-log') => array(
67
+ array(2004, E_NOTICE, __('User created a new WordPress page and saved it as draft', 'wp-security-audit-log'), __('Created a new page called %PostTitle%. Page ID is %PostID%', 'wp-security-audit-log')),
68
+ array(2005, E_NOTICE, __('User published a WorPress page', 'wp-security-audit-log'), __('Published a page called %PostTitle%. Page URL is %PostUrl%', 'wp-security-audit-log')),
69
+ array(2006, E_NOTICE, __('User modified a published WordPress page', 'wp-security-audit-log'), __('Modified the published page %PostTitle%. Page URL is %PostUrl%', 'wp-security-audit-log')),
70
+ array(2007, E_NOTICE, __('User modified a draft WordPress page', 'wp-security-audit-log'), __('Modified the draft page %PostTitle%. page ID is %PostID%', 'wp-security-audit-log')),
71
+ array(2009, E_NOTICE, __('User permanently deleted a page from the trash', 'wp-security-audit-log'), __('Deleted the page %PostTitle%. Page ID is %PostID%', 'wp-security-audit-log')),
72
+ array(2013, E_WARNING, __('User moved WordPress page to the trash', 'wp-security-audit-log'), __('Moved the page %PostTitle% to trash', 'wp-security-audit-log')),
73
+ array(2015, E_CRITICAL, __('User restored a WordPress page from trash', 'wp-security-audit-log'), __('Restored page %PostTitle% from trash', 'wp-security-audit-log')),
74
+ array(2018, E_NOTICE, __('User changed page URL', 'wp-security-audit-log'), __('Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
75
+ array(2020, E_NOTICE, __('User changed page author', 'wp-security-audit-log'), __('Changed the author of %PostTitle% page from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
76
+ array(2022, E_NOTICE, __('User changed page status', 'wp-security-audit-log'), __('Changed the status of %PostTitle% page from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
77
+ array(2026, E_WARNING, __('User changed the visibility of a page post', 'wp-security-audit-log'), __('Changed the visibility of %PostTitle% page from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
78
+ array(2028, E_NOTICE, __('User changed the date of a page post', 'wp-security-audit-log'), __('Changed the date of %PostTitle% page from %OldDate% to %NewDate%', 'wp-security-audit-log')),
79
+ array(2047, E_NOTICE, __('User changed the parent of a page', 'wp-security-audit-log'), __('Changed the parent of %PostTitle% page from %OldParentName% to %NewParentName%', 'wp-security-audit-log')),
80
+ array(2048, E_CRITICAL, __('User changes the template of a page', 'wp-security-audit-log'), __('Changed the template of %PostTitle% page from %OldTemplate% to %NewTemplate%', 'wp-security-audit-log')),
81
+ ),
82
+ __('Custom Posts', 'wp-security-audit-log') => array(
83
+ array(2029, E_NOTICE, __('User created a new post with custom post type and saved it as draft', 'wp-security-audit-log'), __('Created a new custom post called %PostTitle% of type %PostType%. Post ID is %PostID%', 'wp-security-audit-log')),
84
+ array(2030, E_NOTICE, __('User published a post with custom post type', 'wp-security-audit-log'), __('Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
85
+ array(2031, E_NOTICE, __('User modified a post with custom post type', 'wp-security-audit-log'), __('Modified custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
86
+ array(2032, E_NOTICE, __('User modified a draft post with custom post type', 'wp-security-audit-log'), __('Modified draft custom post %PostTitle% of type is %PostType%. Post URL is %PostUrl%', 'wp-security-audit-log')),
87
+ array(2033, E_WARNING, __('User permanently deleted post with custom post type', 'wp-security-audit-log'), __('Deleted custom post %PostTitle% of type %PostType%', 'wp-security-audit-log')),
88
+ array(2034, E_WARNING, __('User moved post with custom post type to trash', 'wp-security-audit-log'), __('Moved custom post %PostTitle% to trash. Post type is %PostType%', 'wp-security-audit-log')),
89
+ array(2035, E_CRITICAL, __('User restored post with custom post type from trash', 'wp-security-audit-log'), __('Restored custom post %PostTitle% of type %PostType% from trash', 'wp-security-audit-log')),
90
+ array(2036, E_NOTICE, __('User changed the category of a post with custom post type', 'wp-security-audit-log'), __('Changed the category(ies) of custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%', 'wp-security-audit-log')),
91
+ array(2037, E_NOTICE, __('User changed the URL of a post with custom post type', 'wp-security-audit-log'), __('Changed the URL of custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%', 'wp-security-audit-log')),
92
+ array(2038, E_NOTICE, __('User changed the author or post with custom post type', 'wp-security-audit-log'), __('Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%', 'wp-security-audit-log')),
93
+ array(2039, E_NOTICE, __('User changed the status of post with custom post type', 'wp-security-audit-log'), __('Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%', 'wp-security-audit-log')),
94
+ array(2040, E_WARNING, __('User changed the visibility of a post with custom post type', 'wp-security-audit-log'), __('Changed the visibility of custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%', 'wp-security-audit-log')),
95
+ array(2041, E_NOTICE, __('User changed the date of post with custom post type', 'wp-security-audit-log'), __('Changed the date of custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%', 'wp-security-audit-log')),
96
+ ),
97
+ __('Widgets', 'wp-security-audit-log') => array(
98
+ array(2042, E_CRITICAL, __('User added a new widget', 'wp-security-audit-log'), __('Added a new %WidgetName% widget in %Sidebar%', 'wp-security-audit-log')),
99
+ array(2043, E_WARNING, __('User modified a widget', 'wp-security-audit-log'), __('Modified the %WidgetName% widget in %Sidebar%', 'wp-security-audit-log')),
100
+ array(2044, E_CRITICAL, __('User deleted widget', 'wp-security-audit-log'), __('Deleted the %WidgetName% widget from %Sidebar%', 'wp-security-audit-log')),
101
+ array(2045, E_NOTICE, __('User moved widget', 'wp-security-audit-log'), __('Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%', 'wp-security-audit-log')),
102
+ ),
103
+ __('User Profiles', 'wp-security-audit-log') => array(
104
+ array(4000, E_CRITICAL, __('A new user was created on WordPress', 'wp-security-audit-log'), __('User %NewUserData->Username% subscribed with a role of %NewUserData->Roles%', 'wp-security-audit-log')),
105
+ array(4001, E_CRITICAL, __('A user created another WordPress user', 'wp-security-audit-log'), __('Created a new user %NewUserData->Username% with the role of %NewUserData->Roles%', 'wp-security-audit-log')),
106
+ array(4002, E_CRITICAL, __('The role of a user was changed by another WordPress user', 'wp-security-audit-log'), __('Changed the role of user %TargetUsername% from %OldRole% to %NewRole%', 'wp-security-audit-log')),
107
+ array(4003, E_CRITICAL, __('User has changed his or her password', 'wp-security-audit-log'), __('Changed the password', 'wp-security-audit-log')),
108
+ array(4004, E_CRITICAL, __('A user changed another user\'s password', 'wp-security-audit-log'), __('Changed the password for user %TargetUserData->Username% with the role of %TargetUserData->Roles%', 'wp-security-audit-log')),
109
+ array(4005, E_NOTICE, __('User changed his or her email address', 'wp-security-audit-log'), __('Changed the email address from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
110
+ array(4006, E_NOTICE, __('A user changed another user\'s email address', 'wp-security-audit-log'), __('Changed the email address of user account %TargetUsername% from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
111
+ array(4007, E_CRITICAL, __('A user was deleted by another user', 'wp-security-audit-log'), __('Deleted User %TargetUserData->Username% with the role of %TargetUserData->Roles%', 'wp-security-audit-log')),
112
+ ),
113
+ __('Plugins & Themes', 'wp-security-audit-log') => array(
114
+ array(5000, E_CRITICAL, __('User installed a plugin', 'wp-security-audit-log'), __('Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%', 'wp-security-audit-log')),
115
+ array(5001, E_CRITICAL, __('User activated a WordPress plugin', 'wp-security-audit-log'), __('Activated the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
116
+ array(5002, E_CRITICAL, __('User deactivated a WordPress plugin', 'wp-security-audit-log'), __('Deactivated the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
117
+ array(5003, E_CRITICAL, __('User uninstalled a plugin', 'wp-security-audit-log'), __('Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%', 'wp-security-audit-log')),
118
+ array(5004, E_WARNING, __('User upgraded a plugin', 'wp-security-audit-log'), __('Upgraded the plugin %PluginData->Name% installed in %PluginFile%', 'wp-security-audit-log')),
119
+ array(5005, E_CRITICAL, __('User installed a theme', 'wp-security-audit-log'), __('Installed theme "%Theme->Name%" in %Theme->get_template_directory%', 'wp-security-audit-log')),
120
+ array(5006, E_CRITICAL, __('User activated a theme', 'wp-security-audit-log'), __('Activated theme "%Theme->Name%", installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
121
+ array(5007, E_CRITICAL, __('User uninstalled a theme', 'wp-security-audit-log'), __('Deleted theme "%Theme->Name%" installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
122
+ ),
123
+ __('System Activity', 'wp-security-audit-log') => array(
124
+ array(0000, E_CRITICAL, __('Unknown Error', 'wp-security-audit-log'), __('An unexpected error has occurred', 'wp-security-audit-log')),
125
+ array(0001, E_CRITICAL, __('PHP error', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
126
+ array(0002, E_WARNING, __('PHP warning', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
127
+ array(0003, E_NOTICE, __('PHP notice', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
128
+ array(0004, E_CRITICAL, __('PHP exception', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
129
+ array(0005, E_CRITICAL, __('PHP shutdown error', 'wp-security-audit-log'), __('%Message%', 'wp-security-audit-log')),
130
+ array(6000, E_NOTICE, __('Events automatically pruned by system', 'wp-security-audit-log'), __('%EventCount% event(s) automatically deleted by system', 'wp-security-audit-log')),
131
+ array(6001, E_CRITICAL, __('Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log'), __('%NewValue% the option "Anyone can register"', 'wp-security-audit-log')),
132
+ array(6002, E_CRITICAL, __('New User Default Role changed', 'wp-security-audit-log'), __('Changed the New User Default Role from %OldRole% to %NewRole%', 'wp-security-audit-log')),
133
+ array(6003, E_CRITICAL, __('WordPress Administrator Notification email changed', 'wp-security-audit-log'), __('Changed the WordPress administrator notifications email address from %OldEmail% to %NewEmail%', 'wp-security-audit-log')),
134
+ array(6004, E_CRITICAL, __('WordPress was updated', 'wp-security-audit-log'), __('Updated WordPress from version %OldVersion% to %NewVersion%', 'wp-security-audit-log')),
135
+ array(6005, E_CRITICAL, __('User changes the WordPress Permalinks', 'wp-security-audit-log'), __('Changed the WordPress permalinks from %OldPattern% to %NewPattern%', 'wp-security-audit-log')),
136
+ ),
137
+ __('MultiSite', 'wp-security-audit-log') => array(
138
+ array(4008, E_CRITICAL, __('User granted Super Admin privileges', 'wp-security-audit-log'), __('Granted Super Admin privileges to %TargetUsername%', 'wp-security-audit-log')),
139
+ array(4009, E_CRITICAL, __('User revoked from Super Admin privileges', 'wp-security-audit-log'), __('Revoked Super Admin privileges from %TargetUsername%', 'wp-security-audit-log')),
140
+ array(4010, E_CRITICAL, __('Existing user added to a site', 'wp-security-audit-log'), __('Added existing user %TargetUsername% with %TargetUserRole% role to site %SiteName%', 'wp-security-audit-log')),
141
+ array(4011, E_CRITICAL, __('User removed from site', 'wp-security-audit-log'), __('Removed user %TargetUsername% with role %TargetUserRole% from %SiteName% site', 'wp-security-audit-log')),
142
+ array(4012, E_CRITICAL, __('New network user created', 'wp-security-audit-log'), __('Created a new network user %NewUserData->Username%', 'wp-security-audit-log')),
143
+ array(7000, E_CRITICAL, __('New site added on network', 'wp-security-audit-log'), __('Added site %SiteName% to the network', 'wp-security-audit-log')),
144
+ array(7001, E_CRITICAL, __('Existing site archived', 'wp-security-audit-log'), __('Archived site %SiteName%', 'wp-security-audit-log')),
145
+ array(7002, E_CRITICAL, __('Archived site has been unarchived', 'wp-security-audit-log'), __('Unarchived site %SiteName%', 'wp-security-audit-log')),
146
+ array(7003, E_CRITICAL, __('Deactivated site has been activated', 'wp-security-audit-log'), __('Activated site %SiteName%', 'wp-security-audit-log')),
147
+ array(7004, E_CRITICAL, __('Site has been deactivated', 'wp-security-audit-log'), __('Deactivated site %SiteName%', 'wp-security-audit-log')),
148
+ array(7005, E_CRITICAL, __('Existing site deleted from network', 'wp-security-audit-log'), __('Deleted site %SiteName%', 'wp-security-audit-log')),
149
+ array(5008, E_CRITICAL, __('Activated theme on network', 'wp-security-audit-log'), __('Network activated %Theme->Name% theme installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
150
+ array(5009, E_CRITICAL, __('Deactivated theme from network', 'wp-security-audit-log'), __('Network deactivated %Theme->Name% theme installed in %Theme->get_template_directory%', 'wp-security-audit-log')),
151
+ ),
152
+ ));
153
+ }
154
+ add_action('wsal_init', 'wsaldefaults_wsal_init');
155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/wp-security-audit-log-de_DE.mo ADDED
Binary file
languages/wp-security-audit-log-it_IT.mo ADDED
Binary file
languages/wp-security-audit-log.pot ADDED
@@ -0,0 +1,1456 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014 WP Security Audit Log
2
+ # This file is distributed under the same license as the WP Security Audit Log package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: WP Security Audit Log 1.2.2\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/wp-security-audit-log\n"
7
+ "POT-Creation-Date: 2014-07-16 09:23:29+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+
15
+ #: classes/Sensors/Content.php:326 classes/Sensors/Content.php:334
16
+ msgid "Password Protected"
17
+ msgstr ""
18
+
19
+ #: classes/Sensors/Content.php:328 classes/Sensors/Content.php:336
20
+ msgid "Public"
21
+ msgstr ""
22
+
23
+ #: classes/Sensors/Content.php:330 classes/Sensors/Content.php:338
24
+ msgid "Private"
25
+ msgstr ""
26
+
27
+ #: classes/Views/About.php:6
28
+ msgid "About WP Security Audit Log"
29
+ msgstr ""
30
+
31
+ #: classes/Views/About.php:14
32
+ msgid "About"
33
+ msgstr ""
34
+
35
+ #: classes/Views/About.php:28
36
+ msgid ""
37
+ "WP Security Audit Log enables WordPress administrators and owners to "
38
+ "identify WordPress security issues before they become a security problem by "
39
+ "keeping a security audit log. WP Security Audit Log is developed by "
40
+ "WordPress security professionals WP White Security."
41
+ msgstr ""
42
+
43
+ #: classes/Views/About.php:30
44
+ msgid ""
45
+ "Keep A WordPress Security Audit Log & Identify WordPress Security Issues"
46
+ msgstr ""
47
+
48
+ #: classes/Views/About.php:32
49
+ msgid ""
50
+ "WP Security Audit Log logs everything happening on your WordPress blog or "
51
+ "website and WordPress multisite network. By using WP Security Audit Log "
52
+ "security plugin it is very easy to track suspicious user activity before it "
53
+ "becomes a problem or a security issue. A WordPress security alert is "
54
+ "generated by the plugin when:"
55
+ msgstr ""
56
+
57
+ #: classes/Views/About.php:35
58
+ msgid "User creates a new user or a new user is registered"
59
+ msgstr ""
60
+
61
+ #: classes/Views/About.php:36
62
+ msgid ""
63
+ "Existing user changes the role, password or other properties of another user"
64
+ msgstr ""
65
+
66
+ #: classes/Views/About.php:37
67
+ msgid "Existing user on a WordPress multisite network is added to a site"
68
+ msgstr ""
69
+
70
+ #: classes/Views/About.php:38
71
+ msgid "User uploads or deletes a file, changes a password or email address"
72
+ msgstr ""
73
+
74
+ #: classes/Views/About.php:39
75
+ msgid "User installs, activates, deactivates, upgrades or uninstalls a plugin"
76
+ msgstr ""
77
+
78
+ #: classes/Views/About.php:40
79
+ msgid ""
80
+ "User creates, modifies or deletes a new post, page, category or a custom "
81
+ "post type"
82
+ msgstr ""
83
+
84
+ #: classes/Views/About.php:41
85
+ msgid "User installs or activates a WordPress theme"
86
+ msgstr ""
87
+
88
+ #: classes/Views/About.php:42
89
+ msgid "User adds, modifies or deletes a widget"
90
+ msgstr ""
91
+
92
+ #: classes/Views/About.php:43
93
+ msgid "User uses the dashboard file editor"
94
+ msgstr ""
95
+
96
+ #: classes/Views/About.php:44
97
+ msgid "WordPress settings are changed"
98
+ msgstr ""
99
+
100
+ #: classes/Views/About.php:45
101
+ msgid "Failed login attempts"
102
+ msgstr ""
103
+
104
+ #: classes/Views/About.php:46
105
+ msgid "and much more&hellip;"
106
+ msgstr ""
107
+
108
+ #: classes/Views/About.php:56 classes/Views/Help.php:80
109
+ msgid "WP Password Policy Manager"
110
+ msgstr ""
111
+
112
+ #: classes/Views/About.php:59 classes/Views/Help.php:83
113
+ msgid ""
114
+ "Easily configure WordPress password policies and ensure users use strong "
115
+ "passwords with our plugin WP Password Policy Manager."
116
+ msgstr ""
117
+
118
+ #: classes/Views/About.php:61 classes/Views/Help.php:85
119
+ msgid "Download"
120
+ msgstr ""
121
+
122
+ #: classes/Views/About.php:65 classes/Views/Help.php:89
123
+ msgid "WP Security Audit Log in your Language!"
124
+ msgstr ""
125
+
126
+ #: classes/Views/About.php:67 classes/Views/Help.php:91
127
+ msgid ""
128
+ "If you are interested in translating our plugin please drop us an email on"
129
+ msgstr ""
130
+
131
+ #: classes/Views/About.php:72
132
+ msgid "WordPress Security Services"
133
+ msgstr ""
134
+
135
+ #: classes/Views/About.php:74
136
+ msgid "Professional WordPress security services provided by WP White Security"
137
+ msgstr ""
138
+
139
+ #: classes/Views/AuditLog.php:21 classes/Views/AuditLog.php:31
140
+ msgid "Audit Log Viewer"
141
+ msgstr ""
142
+
143
+ #: classes/Views/AuditLog.php:40 classes/Views/Settings.php:67
144
+ #: classes/Views/ToggleAlerts.php:29
145
+ msgid "You do not have sufficient permissions to access this page."
146
+ msgstr ""
147
+
148
+ #: classes/Views/AuditLog.php:55
149
+ msgid "Please enter the number of alerts you would like to see on one page:"
150
+ msgstr ""
151
+
152
+ #: classes/Views/AuditLog.php:56 classes/Views/AuditLog.php:224
153
+ msgid "All Sites"
154
+ msgstr ""
155
+
156
+ #: classes/Views/AuditLog.php:57
157
+ msgid "No Results"
158
+ msgstr ""
159
+
160
+ #: classes/Views/AuditLog.php:189
161
+ msgid "No events so far."
162
+ msgstr ""
163
+
164
+ #: classes/Views/AuditLog.php:194
165
+ msgid "Other"
166
+ msgstr ""
167
+
168
+ #: classes/Views/AuditLog.php:201
169
+ msgid "Show "
170
+ msgstr ""
171
+
172
+ #: classes/Views/AuditLog.php:211
173
+ msgid " Items"
174
+ msgstr ""
175
+
176
+ #: classes/Views/AuditLog.php:273 classes/Views/ToggleAlerts.php:66
177
+ msgid "Code"
178
+ msgstr ""
179
+
180
+ #: classes/Views/AuditLog.php:274 classes/Views/ToggleAlerts.php:67
181
+ msgid "Type"
182
+ msgstr ""
183
+
184
+ #: classes/Views/AuditLog.php:275
185
+ msgid "Date"
186
+ msgstr ""
187
+
188
+ #: classes/Views/AuditLog.php:276
189
+ msgid "Username"
190
+ msgstr ""
191
+
192
+ #: classes/Views/AuditLog.php:277
193
+ msgid "Source IP"
194
+ msgstr ""
195
+
196
+ #: classes/Views/AuditLog.php:280
197
+ msgid "Site"
198
+ msgstr ""
199
+
200
+ #: classes/Views/AuditLog.php:282
201
+ msgid "Message"
202
+ msgstr ""
203
+
204
+ #: classes/Views/AuditLog.php:311
205
+ msgid "Click to toggle."
206
+ msgstr ""
207
+
208
+ #: classes/Views/AuditLog.php:317
209
+ msgid "Unknown error code."
210
+ msgstr ""
211
+
212
+ #: classes/Views/AuditLog.php:338 classes/Views/AuditLog.php:341
213
+ msgid "Unknown"
214
+ msgstr ""
215
+
216
+ #: classes/Views/AuditLog.php:342
217
+ msgid "System"
218
+ msgstr ""
219
+
220
+ #: classes/Views/AuditLog.php:355
221
+ msgid "Alert Data Inspector"
222
+ msgstr ""
223
+
224
+ #: classes/Views/Help.php:6 classes/Views/Help.php:14
225
+ #: classes/Views/Help.php:25
226
+ msgid "Help"
227
+ msgstr ""
228
+
229
+ #: classes/Views/Help.php:28
230
+ msgid "Plugin Support"
231
+ msgstr ""
232
+
233
+ #: classes/Views/Help.php:30
234
+ msgid ""
235
+ "Have you encountered or noticed any issues while using WP Security Audit Log "
236
+ "plugin?"
237
+ msgstr ""
238
+
239
+ #: classes/Views/Help.php:31
240
+ msgid ""
241
+ "Or you want to report something to us? Click any of the options below to "
242
+ "post on the plugin's forum or contact our support directly."
243
+ msgstr ""
244
+
245
+ #: classes/Views/Help.php:33
246
+ msgid "Free Support Forum"
247
+ msgstr ""
248
+
249
+ #: classes/Views/Help.php:35
250
+ msgid "Free Support Email"
251
+ msgstr ""
252
+
253
+ #: classes/Views/Help.php:40
254
+ msgid "Plugin Documentation"
255
+ msgstr ""
256
+
257
+ #: classes/Views/Help.php:42
258
+ msgid ""
259
+ "For more detailed information about WP Security Audit Log you can visit the "
260
+ "official plugin page."
261
+ msgstr ""
262
+
263
+ #: classes/Views/Help.php:43
264
+ msgid ""
265
+ "You can also visit the official list of WordPress Security Alerts for more "
266
+ "information about all of the activity you can monitor with WP Security Audit "
267
+ "Log."
268
+ msgstr ""
269
+
270
+ #: classes/Views/Help.php:45
271
+ msgid "Official Plugin Page"
272
+ msgstr ""
273
+
274
+ #: classes/Views/Help.php:47
275
+ msgid "List of WordPress Security Alerts"
276
+ msgstr ""
277
+
278
+ #: classes/Views/Help.php:52
279
+ msgid "Need Help Securing WordPress?"
280
+ msgstr ""
281
+
282
+ #: classes/Views/Help.php:54
283
+ msgid "Is your WordPress website hackable?"
284
+ msgstr ""
285
+
286
+ #: classes/Views/Help.php:55
287
+ msgid ""
288
+ "If you are not sure contact our WordPress security professionals to audit "
289
+ "your WordPress or to simply secure your WordPress website."
290
+ msgstr ""
291
+
292
+ #: classes/Views/Help.php:56
293
+ msgid "Click on any of the below service buttons for more information."
294
+ msgstr ""
295
+
296
+ #: classes/Views/Help.php:58
297
+ msgid "WordPress Security Hardening"
298
+ msgstr ""
299
+
300
+ #: classes/Views/Help.php:60
301
+ msgid "WordPress Security Audit"
302
+ msgstr ""
303
+
304
+ #: classes/Views/Help.php:65
305
+ msgid "WordPress Security Readings"
306
+ msgstr ""
307
+
308
+ #: classes/Views/Help.php:67
309
+ msgid "New to WordPress security?"
310
+ msgstr ""
311
+
312
+ #: classes/Views/Help.php:68
313
+ msgid "Do not know from where to start or which is the best services for you?"
314
+ msgstr ""
315
+
316
+ #: classes/Views/Help.php:69
317
+ msgid ""
318
+ "Visit our WordPress security blog or the WordPress Security category "
319
+ "directly for more information and a number of tips and tricks about "
320
+ "WordPress security."
321
+ msgstr ""
322
+
323
+ #: classes/Views/Help.php:71
324
+ msgid "WP White Security Blog"
325
+ msgstr ""
326
+
327
+ #: classes/Views/Help.php:73
328
+ msgid "WordPress Security Category"
329
+ msgstr ""
330
+
331
+ #: classes/Views/Sandbox.php:11 classes/Views/Sandbox.php:19
332
+ #: classes/Views/Settings.php:231
333
+ msgid "Sandbox"
334
+ msgstr ""
335
+
336
+ #: classes/Views/Sandbox.php:191
337
+ msgid "Ready."
338
+ msgstr ""
339
+
340
+ #: classes/Views/Settings.php:15 classes/Views/Settings.php:23
341
+ msgid "Settings"
342
+ msgstr ""
343
+
344
+ #: classes/Views/Settings.php:72 classes/Views/ToggleAlerts.php:43
345
+ msgid "Settings have been saved."
346
+ msgstr ""
347
+
348
+ #: classes/Views/Settings.php:74 classes/Views/ToggleAlerts.php:45
349
+ msgid "Error: "
350
+ msgstr ""
351
+
352
+ #: classes/Views/Settings.php:84
353
+ msgid "Security Alerts Pruning"
354
+ msgstr ""
355
+
356
+ #: classes/Views/Settings.php:87
357
+ msgid "(eg: 1 month)"
358
+ msgstr ""
359
+
360
+ #: classes/Views/Settings.php:92
361
+ msgid "Delete alerts older than"
362
+ msgstr ""
363
+
364
+ #: classes/Views/Settings.php:104
365
+ msgid "(eg: 80)"
366
+ msgstr ""
367
+
368
+ #: classes/Views/Settings.php:109
369
+ msgid "Keep up to"
370
+ msgstr ""
371
+
372
+ #: classes/Views/Settings.php:113
373
+ msgid "alerts"
374
+ msgstr ""
375
+
376
+ #: classes/Views/Settings.php:119
377
+ msgid "Alerts Dashboard Widget"
378
+ msgstr ""
379
+
380
+ #: classes/Views/Settings.php:125
381
+ msgid "On"
382
+ msgstr ""
383
+
384
+ #: classes/Views/Settings.php:130
385
+ msgid "Off"
386
+ msgstr ""
387
+
388
+ #: classes/Views/Settings.php:135
389
+ msgid "Display a dashboard widget with the latest %d security alerts."
390
+ msgstr ""
391
+
392
+ #: classes/Views/Settings.php:143
393
+ msgid "Can View Alerts"
394
+ msgstr ""
395
+
396
+ #: classes/Views/Settings.php:150
397
+ msgid "Users and Roles in this list can view the security alerts"
398
+ msgstr ""
399
+
400
+ #: classes/Views/Settings.php:165
401
+ msgid "Can Manage Plugin"
402
+ msgstr ""
403
+
404
+ #: classes/Views/Settings.php:172
405
+ msgid "Users and Roles in this list can manage the plugin settings"
406
+ msgstr ""
407
+
408
+ #: classes/Views/Settings.php:187
409
+ msgid "Refresh Audit View"
410
+ msgstr ""
411
+
412
+ #: classes/Views/Settings.php:193
413
+ msgid "Automatic"
414
+ msgstr ""
415
+
416
+ #: classes/Views/Settings.php:195
417
+ msgid "Refresh Audit View as soon as there are new events."
418
+ msgstr ""
419
+
420
+ #: classes/Views/Settings.php:199
421
+ msgid "Manual"
422
+ msgstr ""
423
+
424
+ #: classes/Views/Settings.php:201
425
+ msgid "Refresh Audit View only when page is reloaded."
426
+ msgstr ""
427
+
428
+ #: classes/Views/Settings.php:207
429
+ msgid "Developer Options"
430
+ msgstr ""
431
+
432
+ #: classes/Views/Settings.php:215
433
+ msgid ""
434
+ "Enabling any of the settings below may cause unintended side-effects "
435
+ "including degraded performance.<br/>Only enable these options if you know "
436
+ "what you are doing."
437
+ msgstr ""
438
+
439
+ #: classes/Views/Settings.php:219
440
+ msgid "Data Inspector"
441
+ msgstr ""
442
+
443
+ #: classes/Views/Settings.php:220
444
+ msgid "View data logged for each triggered alert."
445
+ msgstr ""
446
+
447
+ #: classes/Views/Settings.php:223
448
+ msgid "PHP Errors"
449
+ msgstr ""
450
+
451
+ #: classes/Views/Settings.php:224
452
+ msgid "Enables sensor for alerts generated from PHP."
453
+ msgstr ""
454
+
455
+ #: classes/Views/Settings.php:227
456
+ msgid "Request Log"
457
+ msgstr ""
458
+
459
+ #: classes/Views/Settings.php:228
460
+ msgid "Enables logging request to file."
461
+ msgstr ""
462
+
463
+ #: classes/Views/Settings.php:232
464
+ msgid "Enables sandbox for testing PHP code."
465
+ msgstr ""
466
+
467
+ #: classes/Views/Settings.php:235
468
+ msgid "Backtrace"
469
+ msgstr ""
470
+
471
+ #: classes/Views/Settings.php:236
472
+ msgid "Log full backtrace for PHP-generated alerts."
473
+ msgstr ""
474
+
475
+ #: classes/Views/Settings.php:254
476
+ msgid "Hide Plugin from Plugins Page"
477
+ msgstr ""
478
+
479
+ #: classes/Views/Settings.php:260
480
+ msgid "Hide"
481
+ msgstr ""
482
+
483
+ #: classes/Views/ToggleAlerts.php:6 classes/Views/ToggleAlerts.php:14
484
+ msgid "Enable/Disable Alerts"
485
+ msgstr ""
486
+
487
+ #: classes/Views/ToggleAlerts.php:68 classes/WidgetManager.php:38
488
+ msgid "Description"
489
+ msgstr ""
490
+
491
+ #: classes/Views/ToggleAlerts.php:76
492
+ msgid "Not Implemented"
493
+ msgstr ""
494
+
495
+ #: classes/Views/ToggleAlerts.php:79
496
+ msgid "Not Available"
497
+ msgstr ""
498
+
499
+ #: classes/Views/ToggleAlerts.php:93
500
+ msgid "Save Changes"
501
+ msgstr ""
502
+
503
+ #: classes/WidgetManager.php:19
504
+ msgid "Latest Alerts"
505
+ msgstr ""
506
+
507
+ #: classes/WidgetManager.php:32
508
+ msgid "No alerts found."
509
+ msgstr ""
510
+
511
+ #: classes/WidgetManager.php:37
512
+ msgid "User"
513
+ msgstr ""
514
+
515
+ #: defaults.php:16
516
+ msgid "Fatal run-time error."
517
+ msgstr ""
518
+
519
+ #: defaults.php:17
520
+ msgid "Run-time warning (non-fatal error)."
521
+ msgstr ""
522
+
523
+ #: defaults.php:18
524
+ msgid "Compile-time parse error."
525
+ msgstr ""
526
+
527
+ #: defaults.php:19
528
+ msgid "Run-time notice."
529
+ msgstr ""
530
+
531
+ #: defaults.php:20
532
+ msgid "Fatal error that occurred during startup."
533
+ msgstr ""
534
+
535
+ #: defaults.php:21
536
+ msgid "Warnings that occurred during startup."
537
+ msgstr ""
538
+
539
+ #: defaults.php:22
540
+ msgid "Fatal compile-time error."
541
+ msgstr ""
542
+
543
+ #: defaults.php:23
544
+ msgid "Compile-time warning."
545
+ msgstr ""
546
+
547
+ #: defaults.php:24
548
+ msgid "User-generated error message."
549
+ msgstr ""
550
+
551
+ #: defaults.php:25
552
+ msgid "User-generated warning message."
553
+ msgstr ""
554
+
555
+ #: defaults.php:26
556
+ msgid "User-generated notice message. "
557
+ msgstr ""
558
+
559
+ #: defaults.php:27
560
+ msgid "Non-standard/optimal code warning."
561
+ msgstr ""
562
+
563
+ #: defaults.php:28
564
+ msgid "Catchable fatal error."
565
+ msgstr ""
566
+
567
+ #: defaults.php:29
568
+ msgid "Run-time deprecation notices."
569
+ msgstr ""
570
+
571
+ #: defaults.php:30
572
+ msgid "Run-time user deprecation notices."
573
+ msgstr ""
574
+
575
+ #: defaults.php:32
576
+ msgid "Critical, high-impact messages."
577
+ msgstr ""
578
+
579
+ #: defaults.php:33
580
+ msgid "Debug informational messages."
581
+ msgstr ""
582
+
583
+ #: defaults.php:38
584
+ msgid "Other User Activity"
585
+ msgstr ""
586
+
587
+ #: defaults.php:39
588
+ msgid "User logs in"
589
+ msgstr ""
590
+
591
+ #: defaults.php:39
592
+ msgid "Successfully logged in"
593
+ msgstr ""
594
+
595
+ #: defaults.php:40
596
+ msgid "User logs out"
597
+ msgstr ""
598
+
599
+ #: defaults.php:40
600
+ msgid "Successfully logged out"
601
+ msgstr ""
602
+
603
+ #: defaults.php:41
604
+ msgid "Login failed"
605
+ msgstr ""
606
+
607
+ #: defaults.php:41
608
+ msgid "%Attempts% failed login(s) detected"
609
+ msgstr ""
610
+
611
+ #: defaults.php:42
612
+ msgid "User uploaded file from Uploads directory"
613
+ msgstr ""
614
+
615
+ #: defaults.php:42
616
+ msgid "Uploaded the file %FileName% in %FilePath%"
617
+ msgstr ""
618
+
619
+ #: defaults.php:43
620
+ msgid "User deleted file from Uploads directory"
621
+ msgstr ""
622
+
623
+ #: defaults.php:43
624
+ msgid "Deleted the file %FileName% from %FilePath%"
625
+ msgstr ""
626
+
627
+ #: defaults.php:44
628
+ msgid "User changed a file using the theme editor"
629
+ msgstr ""
630
+
631
+ #: defaults.php:44
632
+ msgid "Modified %File% with the Theme Editor"
633
+ msgstr ""
634
+
635
+ #: defaults.php:45
636
+ msgid "User changed a file using the plugin editor"
637
+ msgstr ""
638
+
639
+ #: defaults.php:45
640
+ msgid "Modified %File% with the Plugin Editor"
641
+ msgstr ""
642
+
643
+ #: defaults.php:47
644
+ msgid "Blog Posts"
645
+ msgstr ""
646
+
647
+ #: defaults.php:48
648
+ msgid "User created a new blog post and saved it as draft"
649
+ msgstr ""
650
+
651
+ #: defaults.php:48
652
+ msgid "Created a new blog post called %PostTitle%. Blog post ID is %PostID%"
653
+ msgstr ""
654
+
655
+ #: defaults.php:49
656
+ msgid "User published a blog post"
657
+ msgstr ""
658
+
659
+ #: defaults.php:49
660
+ msgid "Published a blog post called %PostTitle%. Blog post URL is %PostUrl%"
661
+ msgstr ""
662
+
663
+ #: defaults.php:50
664
+ msgid "User modified a published blog post"
665
+ msgstr ""
666
+
667
+ #: defaults.php:50
668
+ msgid ""
669
+ "Modified the published blog post %PostTitle%. Blog post URL is %PostUrl%"
670
+ msgstr ""
671
+
672
+ #: defaults.php:51
673
+ msgid "User modified a draft blog post"
674
+ msgstr ""
675
+
676
+ #: defaults.php:51
677
+ msgid "Modified the draft blog post %PostTitle%. Blog post ID is %PostID%"
678
+ msgstr ""
679
+
680
+ #: defaults.php:52
681
+ msgid "User permanently deleted a blog post from the trash"
682
+ msgstr ""
683
+
684
+ #: defaults.php:52
685
+ msgid "Deleted the post %PostTitle%. Blog post ID is %PostID%"
686
+ msgstr ""
687
+
688
+ #: defaults.php:53
689
+ msgid "User moved a blog post to the trash"
690
+ msgstr ""
691
+
692
+ #: defaults.php:53
693
+ msgid "Moved the blog post %PostTitle% to trash"
694
+ msgstr ""
695
+
696
+ #: defaults.php:54
697
+ msgid "User restored a blog post from trash"
698
+ msgstr ""
699
+
700
+ #: defaults.php:54
701
+ msgid "Restored post %PostTitle% from trash"
702
+ msgstr ""
703
+
704
+ #: defaults.php:55
705
+ msgid "User changed blog post category"
706
+ msgstr ""
707
+
708
+ #: defaults.php:55
709
+ msgid ""
710
+ "Changed the category of the post %PostTitle% from %OldCategories% to "
711
+ "%NewCategories%"
712
+ msgstr ""
713
+
714
+ #: defaults.php:56
715
+ msgid "User changed blog post URL"
716
+ msgstr ""
717
+
718
+ #: defaults.php:56
719
+ msgid "Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%"
720
+ msgstr ""
721
+
722
+ #: defaults.php:57
723
+ msgid "User changed blog post author"
724
+ msgstr ""
725
+
726
+ #: defaults.php:57
727
+ msgid "Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%"
728
+ msgstr ""
729
+
730
+ #: defaults.php:58
731
+ msgid "User changed blog post status"
732
+ msgstr ""
733
+
734
+ #: defaults.php:58
735
+ msgid "Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%"
736
+ msgstr ""
737
+
738
+ #: defaults.php:59
739
+ msgid "User created new category"
740
+ msgstr ""
741
+
742
+ #: defaults.php:59
743
+ msgid "Created a new category called %CategoryName%"
744
+ msgstr ""
745
+
746
+ #: defaults.php:60
747
+ msgid "User deleted category"
748
+ msgstr ""
749
+
750
+ #: defaults.php:60
751
+ msgid "Deleted the %CategoryName% category"
752
+ msgstr ""
753
+
754
+ #: defaults.php:61
755
+ msgid "User changed the visibility of a blog post"
756
+ msgstr ""
757
+
758
+ #: defaults.php:61
759
+ msgid ""
760
+ "Changed the visibility of %PostTitle% blog post from %OldVisibility% to "
761
+ "%NewVisibility%"
762
+ msgstr ""
763
+
764
+ #: defaults.php:62
765
+ msgid "User changed the date of a blog post"
766
+ msgstr ""
767
+
768
+ #: defaults.php:62
769
+ msgid "Changed the date of %PostTitle% blog post from %OldDate% to %NewDate%"
770
+ msgstr ""
771
+
772
+ #: defaults.php:63
773
+ msgid "User sets a post as sticky"
774
+ msgstr ""
775
+
776
+ #: defaults.php:63
777
+ msgid "Set the post %PostTitle% as Sticky"
778
+ msgstr ""
779
+
780
+ #: defaults.php:64
781
+ msgid "User removes post from sticky"
782
+ msgstr ""
783
+
784
+ #: defaults.php:64
785
+ msgid "Removed the post %PostTitle% from Sticky"
786
+ msgstr ""
787
+
788
+ #: defaults.php:66
789
+ msgid "Pages"
790
+ msgstr ""
791
+
792
+ #: defaults.php:67
793
+ msgid "User created a new WordPress page and saved it as draft"
794
+ msgstr ""
795
+
796
+ #: defaults.php:67
797
+ msgid "Created a new page called %PostTitle%. Page ID is %PostID%"
798
+ msgstr ""
799
+
800
+ #: defaults.php:68
801
+ msgid "User published a WorPress page"
802
+ msgstr ""
803
+
804
+ #: defaults.php:68
805
+ msgid "Published a page called %PostTitle%. Page URL is %PostUrl%"
806
+ msgstr ""
807
+
808
+ #: defaults.php:69
809
+ msgid "User modified a published WordPress page"
810
+ msgstr ""
811
+
812
+ #: defaults.php:69
813
+ msgid "Modified the published page %PostTitle%. Page URL is %PostUrl%"
814
+ msgstr ""
815
+
816
+ #: defaults.php:70
817
+ msgid "User modified a draft WordPress page"
818
+ msgstr ""
819
+
820
+ #: defaults.php:70
821
+ msgid "Modified the draft page %PostTitle%. page ID is %PostID%"
822
+ msgstr ""
823
+
824
+ #: defaults.php:71
825
+ msgid "User permanently deleted a page from the trash"
826
+ msgstr ""
827
+
828
+ #: defaults.php:71
829
+ msgid "Deleted the page %PostTitle%. Page ID is %PostID%"
830
+ msgstr ""
831
+
832
+ #: defaults.php:72
833
+ msgid "User moved WordPress page to the trash"
834
+ msgstr ""
835
+
836
+ #: defaults.php:72
837
+ msgid "Moved the page %PostTitle% to trash"
838
+ msgstr ""
839
+
840
+ #: defaults.php:73
841
+ msgid "User restored a WordPress page from trash"
842
+ msgstr ""
843
+
844
+ #: defaults.php:73
845
+ msgid "Restored page %PostTitle% from trash"
846
+ msgstr ""
847
+
848
+ #: defaults.php:74
849
+ msgid "User changed page URL"
850
+ msgstr ""
851
+
852
+ #: defaults.php:74
853
+ msgid "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%"
854
+ msgstr ""
855
+
856
+ #: defaults.php:75
857
+ msgid "User changed page author"
858
+ msgstr ""
859
+
860
+ #: defaults.php:75
861
+ msgid "Changed the author of %PostTitle% page from %OldAuthor% to %NewAuthor%"
862
+ msgstr ""
863
+
864
+ #: defaults.php:76
865
+ msgid "User changed page status"
866
+ msgstr ""
867
+
868
+ #: defaults.php:76
869
+ msgid "Changed the status of %PostTitle% page from %OldStatus% to %NewStatus%"
870
+ msgstr ""
871
+
872
+ #: defaults.php:77
873
+ msgid "User changed the visibility of a page post"
874
+ msgstr ""
875
+
876
+ #: defaults.php:77
877
+ msgid ""
878
+ "Changed the visibility of %PostTitle% page from %OldVisibility% to "
879
+ "%NewVisibility%"
880
+ msgstr ""
881
+
882
+ #: defaults.php:78
883
+ msgid "User changed the date of a page post"
884
+ msgstr ""
885
+
886
+ #: defaults.php:78
887
+ msgid "Changed the date of %PostTitle% page from %OldDate% to %NewDate%"
888
+ msgstr ""
889
+
890
+ #: defaults.php:79
891
+ msgid "User changed the parent of a page"
892
+ msgstr ""
893
+
894
+ #: defaults.php:79
895
+ msgid ""
896
+ "Changed the parent of %PostTitle% page from %OldParentName% to %NewParentName"
897
+ "%"
898
+ msgstr ""
899
+
900
+ #: defaults.php:80
901
+ msgid "User changes the template of a page"
902
+ msgstr ""
903
+
904
+ #: defaults.php:80
905
+ msgid ""
906
+ "Changed the template of %PostTitle% page from %OldTemplate% to %NewTemplate%"
907
+ msgstr ""
908
+
909
+ #: defaults.php:82
910
+ msgid "Custom Posts"
911
+ msgstr ""
912
+
913
+ #: defaults.php:83
914
+ msgid "User created a new post with custom post type and saved it as draft"
915
+ msgstr ""
916
+
917
+ #: defaults.php:83
918
+ msgid ""
919
+ "Created a new custom post called %PostTitle% of type %PostType%. Post ID is "
920
+ "%PostID%"
921
+ msgstr ""
922
+
923
+ #: defaults.php:84
924
+ msgid "User published a post with custom post type"
925
+ msgstr ""
926
+
927
+ #: defaults.php:84
928
+ msgid ""
929
+ "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
930
+ msgstr ""
931
+
932
+ #: defaults.php:85
933
+ msgid "User modified a post with custom post type"
934
+ msgstr ""
935
+
936
+ #: defaults.php:85
937
+ msgid ""
938
+ "Modified custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%"
939
+ msgstr ""
940
+
941
+ #: defaults.php:86
942
+ msgid "User modified a draft post with custom post type"
943
+ msgstr ""
944
+
945
+ #: defaults.php:86
946
+ msgid ""
947
+ "Modified draft custom post %PostTitle% of type is %PostType%. Post URL is "
948
+ "%PostUrl%"
949
+ msgstr ""
950
+
951
+ #: defaults.php:87
952
+ msgid "User permanently deleted post with custom post type"
953
+ msgstr ""
954
+
955
+ #: defaults.php:87
956
+ msgid "Deleted custom post %PostTitle% of type %PostType%"
957
+ msgstr ""
958
+
959
+ #: defaults.php:88
960
+ msgid "User moved post with custom post type to trash"
961
+ msgstr ""
962
+
963
+ #: defaults.php:88
964
+ msgid "Moved custom post %PostTitle% to trash. Post type is %PostType%"
965
+ msgstr ""
966
+
967
+ #: defaults.php:89
968
+ msgid "User restored post with custom post type from trash"
969
+ msgstr ""
970
+
971
+ #: defaults.php:89
972
+ msgid "Restored custom post %PostTitle% of type %PostType% from trash"
973
+ msgstr ""
974
+
975
+ #: defaults.php:90
976
+ msgid "User changed the category of a post with custom post type"
977
+ msgstr ""
978
+
979
+ #: defaults.php:90
980
+ msgid ""
981
+ "Changed the category(ies) of custom post %PostTitle% of type %PostType% from "
982
+ "%OldCategories% to %NewCategories%"
983
+ msgstr ""
984
+
985
+ #: defaults.php:91
986
+ msgid "User changed the URL of a post with custom post type"
987
+ msgstr ""
988
+
989
+ #: defaults.php:91
990
+ msgid ""
991
+ "Changed the URL of custom post %PostTitle% of type %PostType% from %OldUrl% "
992
+ "to %NewUrl%"
993
+ msgstr ""
994
+
995
+ #: defaults.php:92
996
+ msgid "User changed the author or post with custom post type"
997
+ msgstr ""
998
+
999
+ #: defaults.php:92
1000
+ msgid ""
1001
+ "Changed the author of custom post %PostTitle% of type %PostType% from "
1002
+ "%OldAuthor% to %NewAuthor%"
1003
+ msgstr ""
1004
+
1005
+ #: defaults.php:93
1006
+ msgid "User changed the status of post with custom post type"
1007
+ msgstr ""
1008
+
1009
+ #: defaults.php:93
1010
+ msgid ""
1011
+ "Changed the status of custom post %PostTitle% of type %PostType% from "
1012
+ "%OldStatus% to %NewStatus%"
1013
+ msgstr ""
1014
+
1015
+ #: defaults.php:94
1016
+ msgid "User changed the visibility of a post with custom post type"
1017
+ msgstr ""
1018
+
1019
+ #: defaults.php:94
1020
+ msgid ""
1021
+ "Changed the visibility of custom post %PostTitle% of type %PostType% from "
1022
+ "%OldVisibility% to %NewVisibility%"
1023
+ msgstr ""
1024
+
1025
+ #: defaults.php:95
1026
+ msgid "User changed the date of post with custom post type"
1027
+ msgstr ""
1028
+
1029
+ #: defaults.php:95
1030
+ msgid ""
1031
+ "Changed the date of custom post %PostTitle% of type %PostType% from %OldDate"
1032
+ "% to %NewDate%"
1033
+ msgstr ""
1034
+
1035
+ #: defaults.php:97
1036
+ msgid "Widgets"
1037
+ msgstr ""
1038
+
1039
+ #: defaults.php:98
1040
+ msgid "User added a new widget"
1041
+ msgstr ""
1042
+
1043
+ #: defaults.php:98
1044
+ msgid "Added a new %WidgetName% widget in %Sidebar%"
1045
+ msgstr ""
1046
+
1047
+ #: defaults.php:99
1048
+ msgid "User modified a widget"
1049
+ msgstr ""
1050
+
1051
+ #: defaults.php:99
1052
+ msgid "Modified the %WidgetName% widget in %Sidebar%"
1053
+ msgstr ""
1054
+
1055
+ #: defaults.php:100
1056
+ msgid "User deleted widget"
1057
+ msgstr ""
1058
+
1059
+ #: defaults.php:100
1060
+ msgid "Deleted the %WidgetName% widget from %Sidebar%"
1061
+ msgstr ""
1062
+
1063
+ #: defaults.php:101
1064
+ msgid "User moved widget"
1065
+ msgstr ""
1066
+
1067
+ #: defaults.php:101
1068
+ msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%"
1069
+ msgstr ""
1070
+
1071
+ #: defaults.php:103
1072
+ msgid "User Profiles"
1073
+ msgstr ""
1074
+
1075
+ #: defaults.php:104
1076
+ msgid "A new user was created on WordPress"
1077
+ msgstr ""
1078
+
1079
+ #: defaults.php:104
1080
+ msgid ""
1081
+ "User %NewUserData->Username% subscribed with a role of %NewUserData->Roles%"
1082
+ msgstr ""
1083
+
1084
+ #: defaults.php:105
1085
+ msgid "A user created another WordPress user"
1086
+ msgstr ""
1087
+
1088
+ #: defaults.php:105
1089
+ msgid ""
1090
+ "Created a new user %NewUserData->Username% with the role of %NewUserData-"
1091
+ ">Roles%"
1092
+ msgstr ""
1093
+
1094
+ #: defaults.php:106
1095
+ msgid "The role of a user was changed by another WordPress user"
1096
+ msgstr ""
1097
+
1098
+ #: defaults.php:106
1099
+ msgid "Changed the role of user %TargetUsername% from %OldRole% to %NewRole%"
1100
+ msgstr ""
1101
+
1102
+ #: defaults.php:107
1103
+ msgid "User has changed his or her password"
1104
+ msgstr ""
1105
+
1106
+ #: defaults.php:107
1107
+ msgid "Changed the password"
1108
+ msgstr ""
1109
+
1110
+ #: defaults.php:108
1111
+ msgid "A user changed another user's password"
1112
+ msgstr ""
1113
+
1114
+ #: defaults.php:108
1115
+ msgid ""
1116
+ "Changed the password for user %TargetUserData->Username% with the role of "
1117
+ "%TargetUserData->Roles%"
1118
+ msgstr ""
1119
+
1120
+ #: defaults.php:109
1121
+ msgid "User changed his or her email address"
1122
+ msgstr ""
1123
+
1124
+ #: defaults.php:109
1125
+ msgid "Changed the email address from %OldEmail% to %NewEmail%"
1126
+ msgstr ""
1127
+
1128
+ #: defaults.php:110
1129
+ msgid "A user changed another user's email address"
1130
+ msgstr ""
1131
+
1132
+ #: defaults.php:110
1133
+ msgid ""
1134
+ "Changed the email address of user account %TargetUsername% from %OldEmail% "
1135
+ "to %NewEmail%"
1136
+ msgstr ""
1137
+
1138
+ #: defaults.php:111
1139
+ msgid "A user was deleted by another user"
1140
+ msgstr ""
1141
+
1142
+ #: defaults.php:111
1143
+ msgid ""
1144
+ "Deleted User %TargetUserData->Username% with the role of %TargetUserData-"
1145
+ ">Roles%"
1146
+ msgstr ""
1147
+
1148
+ #: defaults.php:113
1149
+ msgid "Plugins & Themes"
1150
+ msgstr ""
1151
+
1152
+ #: defaults.php:114
1153
+ msgid "User installed a plugin"
1154
+ msgstr ""
1155
+
1156
+ #: defaults.php:114
1157
+ msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%"
1158
+ msgstr ""
1159
+
1160
+ #: defaults.php:115
1161
+ msgid "User activated a WordPress plugin"
1162
+ msgstr ""
1163
+
1164
+ #: defaults.php:115
1165
+ msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%"
1166
+ msgstr ""
1167
+
1168
+ #: defaults.php:116
1169
+ msgid "User deactivated a WordPress plugin"
1170
+ msgstr ""
1171
+
1172
+ #: defaults.php:116
1173
+ msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%"
1174
+ msgstr ""
1175
+
1176
+ #: defaults.php:117
1177
+ msgid "User uninstalled a plugin"
1178
+ msgstr ""
1179
+
1180
+ #: defaults.php:117
1181
+ msgid ""
1182
+ "Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%"
1183
+ msgstr ""
1184
+
1185
+ #: defaults.php:118
1186
+ msgid "User upgraded a plugin"
1187
+ msgstr ""
1188
+
1189
+ #: defaults.php:118
1190
+ msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%"
1191
+ msgstr ""
1192
+
1193
+ #: defaults.php:119
1194
+ msgid "User installed a theme"
1195
+ msgstr ""
1196
+
1197
+ #: defaults.php:119
1198
+ msgid "Installed theme \"%Theme->Name%\" in %Theme->get_template_directory%"
1199
+ msgstr ""
1200
+
1201
+ #: defaults.php:120
1202
+ msgid "User activated a theme"
1203
+ msgstr ""
1204
+
1205
+ #: defaults.php:120
1206
+ msgid ""
1207
+ "Activated theme \"%Theme->Name%\", installed in %Theme-"
1208
+ ">get_template_directory%"
1209
+ msgstr ""
1210
+
1211
+ #: defaults.php:121
1212
+ msgid "User uninstalled a theme"
1213
+ msgstr ""
1214
+
1215
+ #: defaults.php:121
1216
+ msgid ""
1217
+ "Deleted theme \"%Theme->Name%\" installed in %Theme->get_template_directory%"
1218
+ msgstr ""
1219
+
1220
+ #: defaults.php:123
1221
+ msgid "System Activity"
1222
+ msgstr ""
1223
+
1224
+ #: defaults.php:124
1225
+ msgid "Unknown Error"
1226
+ msgstr ""
1227
+
1228
+ #: defaults.php:124
1229
+ msgid "An unexpected error has occurred"
1230
+ msgstr ""
1231
+
1232
+ #: defaults.php:125
1233
+ msgid "PHP error"
1234
+ msgstr ""
1235
+
1236
+ #: defaults.php:125 defaults.php:126 defaults.php:127 defaults.php:128
1237
+ #: defaults.php:129
1238
+ msgid "%Message%"
1239
+ msgstr ""
1240
+
1241
+ #: defaults.php:126
1242
+ msgid "PHP warning"
1243
+ msgstr ""
1244
+
1245
+ #: defaults.php:127
1246
+ msgid "PHP notice"
1247
+ msgstr ""
1248
+
1249
+ #: defaults.php:128
1250
+ msgid "PHP exception"
1251
+ msgstr ""
1252
+
1253
+ #: defaults.php:129
1254
+ msgid "PHP shutdown error"
1255
+ msgstr ""
1256
+
1257
+ #: defaults.php:130
1258
+ msgid "Events automatically pruned by system"
1259
+ msgstr ""
1260
+
1261
+ #: defaults.php:130
1262
+ msgid "%EventCount% event(s) automatically deleted by system"
1263
+ msgstr ""
1264
+
1265
+ #: defaults.php:131
1266
+ msgid "Option Anyone Can Register in WordPress settings changed"
1267
+ msgstr ""
1268
+
1269
+ #: defaults.php:131
1270
+ msgid "%NewValue% the option \"Anyone can register\""
1271
+ msgstr ""
1272
+
1273
+ #: defaults.php:132
1274
+ msgid "New User Default Role changed"
1275
+ msgstr ""
1276
+
1277
+ #: defaults.php:132
1278
+ msgid "Changed the New User Default Role from %OldRole% to %NewRole%"
1279
+ msgstr ""
1280
+
1281
+ #: defaults.php:133
1282
+ msgid "WordPress Administrator Notification email changed"
1283
+ msgstr ""
1284
+
1285
+ #: defaults.php:133
1286
+ msgid ""
1287
+ "Changed the WordPress administrator notifications email address from "
1288
+ "%OldEmail% to %NewEmail%"
1289
+ msgstr ""
1290
+
1291
+ #: defaults.php:134
1292
+ msgid "WordPress was updated"
1293
+ msgstr ""
1294
+
1295
+ #: defaults.php:134
1296
+ msgid "Updated WordPress from version %OldVersion% to %NewVersion%"
1297
+ msgstr ""
1298
+
1299
+ #: defaults.php:135
1300
+ msgid "User changes the WordPress Permalinks"
1301
+ msgstr ""
1302
+
1303
+ #: defaults.php:135
1304
+ msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%"
1305
+ msgstr ""
1306
+
1307
+ #: defaults.php:137
1308
+ msgid "MultiSite"
1309
+ msgstr ""
1310
+
1311
+ #: defaults.php:138
1312
+ msgid "User granted Super Admin privileges"
1313
+ msgstr ""
1314
+
1315
+ #: defaults.php:138
1316
+ msgid "Granted Super Admin privileges to %TargetUsername%"
1317
+ msgstr ""
1318
+
1319
+ #: defaults.php:139
1320
+ msgid "User revoked from Super Admin privileges"
1321
+ msgstr ""
1322
+
1323
+ #: defaults.php:139
1324
+ msgid "Revoked Super Admin privileges from %TargetUsername%"
1325
+ msgstr ""
1326
+
1327
+ #: defaults.php:140
1328
+ msgid "Existing user added to a site"
1329
+ msgstr ""
1330
+
1331
+ #: defaults.php:140
1332
+ msgid ""
1333
+ "Added existing user %TargetUsername% with %TargetUserRole% role to site "
1334
+ "%SiteName%"
1335
+ msgstr ""
1336
+
1337
+ #: defaults.php:141
1338
+ msgid "User removed from site"
1339
+ msgstr ""
1340
+
1341
+ #: defaults.php:141
1342
+ msgid ""
1343
+ "Removed user %TargetUsername% with role %TargetUserRole% from %SiteName% site"
1344
+ msgstr ""
1345
+
1346
+ #: defaults.php:142
1347
+ msgid "New network user created"
1348
+ msgstr ""
1349
+
1350
+ #: defaults.php:142
1351
+ msgid "Created a new network user %NewUserData->Username%"
1352
+ msgstr ""
1353
+
1354
+ #: defaults.php:143
1355
+ msgid "New site added on network"
1356
+ msgstr ""
1357
+
1358
+ #: defaults.php:143
1359
+ msgid "Added site %SiteName% to the network"
1360
+ msgstr ""
1361
+
1362
+ #: defaults.php:144
1363
+ msgid "Existing site archived"
1364
+ msgstr ""
1365
+
1366
+ #: defaults.php:144
1367
+ msgid "Archived site %SiteName%"
1368
+ msgstr ""
1369
+
1370
+ #: defaults.php:145
1371
+ msgid "Archived site has been unarchived"
1372
+ msgstr ""
1373
+
1374
+ #: defaults.php:145
1375
+ msgid "Unarchived site %SiteName%"
1376
+ msgstr ""
1377
+
1378
+ #: defaults.php:146
1379
+ msgid "Deactivated site has been activated"
1380
+ msgstr ""
1381
+
1382
+ #: defaults.php:146
1383
+ msgid "Activated site %SiteName%"
1384
+ msgstr ""
1385
+
1386
+ #: defaults.php:147
1387
+ msgid "Site has been deactivated"
1388
+ msgstr ""
1389
+
1390
+ #: defaults.php:147
1391
+ msgid "Deactivated site %SiteName%"
1392
+ msgstr ""
1393
+
1394
+ #: defaults.php:148
1395
+ msgid "Existing site deleted from network"
1396
+ msgstr ""
1397
+
1398
+ #: defaults.php:148
1399
+ msgid "Deleted site %SiteName%"
1400
+ msgstr ""
1401
+
1402
+ #: defaults.php:149
1403
+ msgid "Activated theme on network"
1404
+ msgstr ""
1405
+
1406
+ #: defaults.php:149
1407
+ msgid ""
1408
+ "Network activated %Theme->Name% theme installed in %Theme-"
1409
+ ">get_template_directory%"
1410
+ msgstr ""
1411
+
1412
+ #: defaults.php:150
1413
+ msgid "Deactivated theme from network"
1414
+ msgstr ""
1415
+
1416
+ #: defaults.php:150
1417
+ msgid ""
1418
+ "Network deactivated %Theme->Name% theme installed in %Theme-"
1419
+ ">get_template_directory%"
1420
+ msgstr ""
1421
+
1422
+ #: wp-security-audit-log.php:135
1423
+ msgid ""
1424
+ "You are using a version of PHP that is older than %s, which is no longer "
1425
+ "supported.<br/>Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
1426
+ "\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you "
1427
+ "are using."
1428
+ msgstr ""
1429
+
1430
+ #. Plugin Name of the plugin/theme
1431
+ msgid "WP Security Audit Log"
1432
+ msgstr ""
1433
+
1434
+ #. Plugin URI of the plugin/theme
1435
+ msgid ""
1436
+ "http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-"
1437
+ "log/"
1438
+ msgstr ""
1439
+
1440
+ #. Description of the plugin/theme
1441
+ msgid ""
1442
+ "Identify WordPress security issues before they become a problem and keep "
1443
+ "track of everything happening on your WordPress, including WordPress users "
1444
+ "activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit "
1445
+ "Log will generate a security alert for everything that happens on your "
1446
+ "WordPress blog or website. Use the Audit Log Viewer included in the plugin "
1447
+ "to see all the security alerts."
1448
+ msgstr ""
1449
+
1450
+ #. Author of the plugin/theme
1451
+ msgid "WP White Security"
1452
+ msgstr ""
1453
+
1454
+ #. Author URI of the plugin/theme
1455
+ msgid "http://www.wpwhitesecurity.com/"
1456
+ msgstr ""
readme.txt CHANGED
@@ -7,7 +7,7 @@ License URI: http://www.gnu.org/licenses/gpl.html
7
  Tags: wordpress security plugin, wordpress security audit log, audit log, wordpress log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, security audit trail, wordpress security alerts, wordpress monitor, wordpress security monitor, wordpress admin, wordpress admin monitoring, analytics, activity, admin, multisite, wordpress multisite
8
  Requires at least: 3.6
9
  Tested up to: 3.9.1
10
- Stable tag: 1.2.1
11
 
12
  Identify WordPress issues before they become a security problem by keeping an audit log of users and all of the under the hood WordPress activity.
13
 
@@ -57,6 +57,9 @@ For more information about the features for WordPress Multisite network installa
57
  = WordPress Security Audit Log in your Language! =
58
  We need help translating the plugin and the WordPress Security Events. If you're good at translating, please drop us an email on plugins@wpwhitesecurity.com.
59
 
 
 
 
60
  = WordPress & PHP Errors Monitoring Tools =
61
  Plugins and themes customizations are most probably the norm of the day on large WordPress websites, not to mention the installation of new plugins and components. Unforunately sometimes such changes create problems and it is not always easy and possible to setup real live scenarios and replicate specific problems or bugs.
62
 
@@ -136,6 +139,21 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
136
 
137
  == Changelog ==
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  = 1.2.1 (2014-07-2) =
140
  * Bug Fix
141
  * Fixed reported issue with ugrade (more info [here](http://wordpress.org/support/topic/errors-showing-since-120-upgrade-on-multisite-install?replies=4))
@@ -148,7 +166,7 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
148
  * Alerts automatic pruning procedures can now be enabled / disabled
149
  * Option to hide WP Security Audit Log from plugins page in WordPress
150
  * If there are more than 15 websites in a multisite installation, an auto complete site search box is shown instead of the drop down menu
151
-
152
  * New WordPress Security Alerts
153
  * Alert 5007: User has uninstalled / deleted a theme
154
  * Alert 5008: Super administrator network activated a theme on multisite
@@ -321,3 +339,4 @@ Yes, WP Security Audit Log works on WordPress Multisite networks, i.e. it can mo
321
  = 0.1 (2013-05-24) =
322
 
323
  * Initial beta release of WP Security Audit Log.
 
7
  Tags: wordpress security plugin, wordpress security audit log, audit log, wordpress log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, security audit trail, wordpress security alerts, wordpress monitor, wordpress security monitor, wordpress admin, wordpress admin monitoring, analytics, activity, admin, multisite, wordpress multisite
8
  Requires at least: 3.6
9
  Tested up to: 3.9.1
10
+ Stable tag: 1.2.2
11
 
12
  Identify WordPress issues before they become a security problem by keeping an audit log of users and all of the under the hood WordPress activity.
13
 
57
  = WordPress Security Audit Log in your Language! =
58
  We need help translating the plugin and the WordPress Security Events. If you're good at translating, please drop us an email on plugins@wpwhitesecurity.com.
59
 
60
+ * Italian translation by [Leonardo Musumeci](http://leonardomusumeci.net/)
61
+ * German translation by [Mourad Louha](http://excel-translator.de)
62
+
63
  = WordPress & PHP Errors Monitoring Tools =
64
  Plugins and themes customizations are most probably the norm of the day on large WordPress websites, not to mention the installation of new plugins and components. Unforunately sometimes such changes create problems and it is not always easy and possible to setup real live scenarios and replicate specific problems or bugs.
65
 
139
 
140
  == Changelog ==
141
 
142
+ = 1.2.2 (2014-07-16) =
143
+ * New Features
144
+ * Italian translation available thanks to [Leonardo Musumeci](http://leonardomusumeci.net/)
145
+
146
+ * Improvements
147
+ * Added a warning to developer options
148
+ * "Hidden" developer options from default settings. User has to click link to access developer plugins
149
+
150
+ * Bug Fixes
151
+ * Solved several issues related to translations. Now everything in the plugin is translatable
152
+ * Fixed several other issues reported by email
153
+
154
+ * Bug Fix
155
+ * Fixed reported issue with ugrade (more info [here](http://wordpress.org/support/topic/errors-showing-since-120-upgrade-on-multisite-install?replies=4))
156
+
157
  = 1.2.1 (2014-07-2) =
158
  * Bug Fix
159
  * Fixed reported issue with ugrade (more info [here](http://wordpress.org/support/topic/errors-showing-since-120-upgrade-on-multisite-install?replies=4))
166
  * Alerts automatic pruning procedures can now be enabled / disabled
167
  * Option to hide WP Security Audit Log from plugins page in WordPress
168
  * If there are more than 15 websites in a multisite installation, an auto complete site search box is shown instead of the drop down menu
169
+
170
  * New WordPress Security Alerts
171
  * Alert 5007: User has uninstalled / deleted a theme
172
  * Alert 5008: Super administrator network activated a theme on multisite
339
  = 0.1 (2013-05-24) =
340
 
341
  * Initial beta release of WP Security Audit Log.
342
+ Status API Training Shop Blog About © 2014 GitHub, Inc. Terms Privacy Security Contact
wp-security-audit-log.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: WP Security Audit Log
4
  Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
5
  Description: Identify WordPress security issues before they become a problem and keep track of everything happening on your WordPress, including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log will generate a security alert for everything that happens on your WordPress blog or website. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  Author: WP White Security
7
- Version: 1.2.1
8
  Text Domain: wp-security-audit-log
9
  Author URI: http://www.wpwhitesecurity.com/
10
  License: GPL2
@@ -105,15 +105,21 @@ class WpSecurityAuditLog {
105
  // listen for cleanup event
106
  add_action('wsal_cleanup', array($this, 'CleanUp'));
107
 
108
- // internationalize plugin
109
- add_action('plugins_loaded', array($this, 'LoadPluginTextdomain'));
110
-
111
  // hide plugin
112
  if($this->settings->IsIncognito())
113
  add_action('admin_head', array($this, 'HidePlugin'));
114
-
115
- // clean up if need be
116
- $this->CleanUp();
 
 
 
 
 
 
 
 
 
117
  }
118
 
119
  public function Install(){
@@ -160,7 +166,6 @@ class WpSecurityAuditLog {
160
  $auditlog = $wpdb->get_results($sql, ARRAY_A);
161
 
162
  // migrate using db logger
163
- $lgr = new WSAL_Loggers_Database($this);
164
  foreach($auditlog as $entry){
165
  $data = array(
166
  'ClientIP' => $entry['UserIP'],
@@ -184,7 +189,9 @@ class WpSecurityAuditLog {
184
  foreach((array)$temp as $i => $item)
185
  $data['MigratedArg' . $i] = $item;
186
  // send event data to logger!
187
- $lgr->Log($type, $data, $date, $entry['BlogId'], true);
 
 
188
  }
189
 
190
  // migrate settings
@@ -253,10 +260,6 @@ class WpSecurityAuditLog {
253
  call_user_func($hook);
254
  }
255
 
256
- public function LoadPluginTextdomain(){
257
- load_plugin_textdomain('wp-security-audit-log', false, $this->GetBaseDir() . 'languages/');
258
- }
259
-
260
  public function AddCleanupHook($hook){
261
  $this->_cleanup_hooks[] = $hook;
262
  }
@@ -278,14 +281,23 @@ class WpSecurityAuditLog {
278
  return ($wpdb->get_var('SHOW TABLES LIKE "'.$table.'"') == $table);
279
  }
280
 
 
 
 
281
  public function GetBaseUrl(){
282
  return plugins_url('', __FILE__);
283
  }
284
 
 
 
 
285
  public function GetBaseDir(){
286
  return plugin_dir_path(__FILE__);
287
  }
288
 
 
 
 
289
  public function GetBaseName(){
290
  return plugin_basename(__FILE__);
291
  }
@@ -293,6 +305,8 @@ class WpSecurityAuditLog {
293
  // </editor-fold>
294
  }
295
 
 
 
296
  // Load extra files
297
  require_once('defaults.php');
298
 
4
  Plugin URI: http://www.wpwhitesecurity.com/wordpress-security-plugins/wp-security-audit-log/
5
  Description: Identify WordPress security issues before they become a problem and keep track of everything happening on your WordPress, including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log will generate a security alert for everything that happens on your WordPress blog or website. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  Author: WP White Security
7
+ Version: 1.2.2
8
  Text Domain: wp-security-audit-log
9
  Author URI: http://www.wpwhitesecurity.com/
10
  License: GPL2
105
  // listen for cleanup event
106
  add_action('wsal_cleanup', array($this, 'CleanUp'));
107
 
 
 
 
108
  // hide plugin
109
  if($this->settings->IsIncognito())
110
  add_action('admin_head', array($this, 'HidePlugin'));
111
+ }
112
+
113
+ /**
114
+ * Load the rest of the system.
115
+ * @internal
116
+ */
117
+ public function Load(){
118
+ // load translations
119
+ load_plugin_textdomain('wp-security-audit-log', false, basename( dirname( __FILE__ ) ) . '/languages/');
120
+
121
+ // tell the world we've just finished loading
122
+ do_action('wsal_init', $this);
123
  }
124
 
125
  public function Install(){
166
  $auditlog = $wpdb->get_results($sql, ARRAY_A);
167
 
168
  // migrate using db logger
 
169
  foreach($auditlog as $entry){
170
  $data = array(
171
  'ClientIP' => $entry['UserIP'],
189
  foreach((array)$temp as $i => $item)
190
  $data['MigratedArg' . $i] = $item;
191
  // send event data to logger!
192
+ foreach($this->alerts->GetLoggers() as $logger){
193
+ $logger->Log($type, $data, $date, $entry['BlogId'], true);
194
+ }
195
  }
196
 
197
  // migrate settings
260
  call_user_func($hook);
261
  }
262
 
 
 
 
 
263
  public function AddCleanupHook($hook){
264
  $this->_cleanup_hooks[] = $hook;
265
  }
281
  return ($wpdb->get_var('SHOW TABLES LIKE "'.$table.'"') == $table);
282
  }
283
 
284
+ /**
285
+ * @return string Absolute URL to plugin directory WITHOUT final slash.
286
+ */
287
  public function GetBaseUrl(){
288
  return plugins_url('', __FILE__);
289
  }
290
 
291
+ /**
292
+ * @return string Full path to plugin directory WITH final slash.
293
+ */
294
  public function GetBaseDir(){
295
  return plugin_dir_path(__FILE__);
296
  }
297
 
298
+ /**
299
+ * @return string Plugin directory name.
300
+ */
301
  public function GetBaseName(){
302
  return plugin_basename(__FILE__);
303
  }
305
  // </editor-fold>
306
  }
307
 
308
+ add_action('plugins_loaded', array(WpSecurityAuditLog::GetInstance(), 'Load'));
309
+
310
  // Load extra files
311
  require_once('defaults.php');
312