WP Security Audit Log - Version 3.1.7

Version Description

Download this release

Release Info

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

Code changes from version 3.1.6 to 3.1.7

classes/AlertManager.php CHANGED
@@ -104,6 +104,8 @@ final class WSAL_AlertManager {
104
  * @param bool $delayed - False if delayed, true if not.
105
  */
106
  public function Trigger( $type, $data = array(), $delayed = false ) {
 
 
107
 
108
  // Get username.
109
  $username = wp_get_current_user()->user_login;
@@ -529,4 +531,42 @@ final class WSAL_AlertManager {
529
  }
530
  return $is_disabled;
531
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  }
104
  * @param bool $delayed - False if delayed, true if not.
105
  */
106
  public function Trigger( $type, $data = array(), $delayed = false ) {
107
+ // Log temporary alerts first.
108
+ $this->log_temp_alerts();
109
 
110
  // Get username.
111
  $username = wp_get_current_user()->user_login;
531
  }
532
  return $is_disabled;
533
  }
534
+
535
+ /**
536
+ * Method: Log temporary stored alerts if DB connection
537
+ * is back.
538
+ */
539
+ public function log_temp_alerts() {
540
+ // Get temporary alerts.
541
+ $temp_alerts = get_option( 'wsal_temp_alerts', array() );
542
+
543
+ if ( empty( $temp_alerts ) ) {
544
+ return;
545
+ }
546
+
547
+ // Get DB connector.
548
+ $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
549
+ $connector = $this->plugin->getConnector( $db_config ); // Get connector for DB.
550
+ $wsal_db = $connector->getConnection(); // Get DB connection.
551
+ $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
552
+
553
+ // Check DB connection.
554
+ if ( $connection ) { // If connected then log temporary alerts in DB.
555
+ // Log each alert.
556
+ foreach ( $temp_alerts as $timestamp => $alert ) {
557
+ $is_migrated = $alert['alert']['is_migrated'];
558
+ $created_on = $alert['alert']['created_on'];
559
+ $alert_id = $alert['alert']['alert_id'];
560
+ $site_id = $alert['alert']['site_id'];
561
+
562
+ // Loggers.
563
+ foreach ( $this->_loggers as $logger ) {
564
+ $logger->Log( $alert_id, $alert['alert_data'], $created_on, $site_id, $is_migrated );
565
+ }
566
+ }
567
+
568
+ // Delete temporary alerts.
569
+ delete_option( 'wsal_temp_alerts' );
570
+ }
571
+ }
572
  }
classes/AuditLogListView.php CHANGED
@@ -38,6 +38,16 @@ class WSAL_AuditLogListView extends WP_List_Table {
38
  */
39
  protected $_gmt_offset_sec = 0;
40
 
 
 
 
 
 
 
 
 
 
 
41
  /**
42
  * Method: Constructor.
43
  *
@@ -235,9 +245,7 @@ class WSAL_AuditLogListView extends WP_List_Table {
235
  }
236
  }
237
  }
238
- if ( $this->_plugin->settings->IsDataInspectorEnabled() ) {
239
- $cols['data'] = '';
240
- }
241
  return $cols;
242
  }
243
 
@@ -277,6 +285,9 @@ class WSAL_AuditLogListView extends WP_List_Table {
277
  // Get date format.
278
  $datetime_format = $this->_plugin->settings->GetDatetimeFormat();
279
 
 
 
 
280
  switch ( $column_name ) {
281
  case 'read':
282
  return '<span class="log-read log-read-'
@@ -436,7 +447,8 @@ class WSAL_AuditLogListView extends WP_List_Table {
436
  return '<div id="Event' . $item->id . '">' . $item->GetMessage( array( $this, 'meta_formatter' ) ) . '</div>';
437
  case 'data':
438
  $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $item->id;
439
- return '<a class="more-info thickbox" title="' . __( 'Alert Data Inspector', 'wp-security-audit-log' ) . '"'
 
440
  . ' href="' . $url . '&amp;TB_iframe=true&amp;width=600&amp;height=550">&hellip;</a>';
441
  default:
442
  return isset( $item->$column_name )
@@ -505,22 +517,22 @@ class WSAL_AuditLogListView extends WP_List_Table {
505
  }
506
 
507
  case '%EditorLinkPost%' == $name:
508
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the post</a>';
509
 
510
  case '%EditorLinkPage%' == $name:
511
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the page</a>';
512
 
513
  case '%CategoryLink%' == $name:
514
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the category</a>';
515
 
516
  case '%TagLink%' == $name:
517
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the tag</a>';
518
 
519
  case '%EditorLinkForum%' == $name:
520
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the forum</a>';
521
 
522
  case '%EditorLinkTopic%' == $name:
523
- return ' <a target="_blank" href="' . esc_url( $value ) . '">View the topic</a>';
524
 
525
  case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ) ):
526
  return '<strong>' . (
@@ -577,6 +589,14 @@ class WSAL_AuditLogListView extends WP_List_Table {
577
  }
578
  return;
579
 
 
 
 
 
 
 
 
 
580
  default:
581
  return '<strong>' . esc_html( $value ) . '</strong>';
582
  }
38
  */
39
  protected $_gmt_offset_sec = 0;
40
 
41
+ /**
42
+ * Current Alert ID
43
+ *
44
+ * This class member is used to store the alert ID
45
+ * of the alert which is being rendered.
46
+ *
47
+ * @var integer
48
+ */
49
+ private $current_alert_id = 0;
50
+
51
  /**
52
  * Method: Constructor.
53
  *
245
  }
246
  }
247
  }
248
+ $cols['data'] = '';
 
 
249
  return $cols;
250
  }
251
 
285
  // Get date format.
286
  $datetime_format = $this->_plugin->settings->GetDatetimeFormat();
287
 
288
+ // Store current alert id.
289
+ $this->current_alert_id = $item->id;
290
+
291
  switch ( $column_name ) {
292
  case 'read':
293
  return '<span class="log-read log-read-'
447
  return '<div id="Event' . $item->id . '">' . $item->GetMessage( array( $this, 'meta_formatter' ) ) . '</div>';
448
  case 'data':
449
  $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $item->id;
450
+ $tooltip = esc_attr__( 'View all details of this change', 'wp-security-audit-log' );
451
+ return '<a class="more-info thickbox" data-tooltip="' . $tooltip . '" title="' . __( 'Alert Data Inspector', 'wp-security-audit-log' ) . '"'
452
  . ' href="' . $url . '&amp;TB_iframe=true&amp;width=600&amp;height=550">&hellip;</a>';
453
  default:
454
  return isset( $item->$column_name )
517
  }
518
 
519
  case '%EditorLinkPost%' == $name:
520
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">post</a>';
521
 
522
  case '%EditorLinkPage%' == $name:
523
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">page</a>';
524
 
525
  case '%CategoryLink%' == $name:
526
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">category</a>';
527
 
528
  case '%TagLink%' == $name:
529
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">tag</a>';
530
 
531
  case '%EditorLinkForum%' == $name:
532
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">forum</a>';
533
 
534
  case '%EditorLinkTopic%' == $name:
535
+ return ' View the <a target="_blank" href="' . esc_url( $value ) . '">topic</a>';
536
 
537
  case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ) ):
538
  return '<strong>' . (
589
  }
590
  return;
591
 
592
+ case '%ReportText%' === $name:
593
+ return;
594
+
595
+ case '%ChangeText%' === $name:
596
+ $url = admin_url( 'admin-ajax.php' ) . '?action=AjaxInspector&amp;occurrence=' . $this->current_alert_id;
597
+ return ' View the changes in <a class="thickbox" title="' . __( 'Alert Data Inspector', 'wp-security-audit-log' ) . '"'
598
+ . ' href="' . $url . '&amp;TB_iframe=true&amp;width=600&amp;height=550">data inspector.</a>';
599
+
600
  default:
601
  return '<strong>' . esc_html( $value ) . '</strong>';
602
  }
classes/Loggers/Database.php CHANGED
@@ -49,17 +49,43 @@ class WSAL_Loggers_Database extends WSAL_AbstractLogger {
49
  return;
50
  }
51
 
 
 
 
52
  // Create new occurrence.
53
  $occ = new WSAL_Models_Occurrence();
54
  $occ->is_migrated = $migrated;
55
- $occ->created_on = $date;
56
  $occ->alert_id = $type;
57
  $occ->site_id = ! is_null( $siteid ) ? $siteid
58
  : (function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0);
59
- $occ->Save();
60
 
61
- // Set up meta data.
62
- $occ->SetMeta( $data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
 
64
  // Inject for promoting the paid add-ons.
65
  $type = (int) $type;
49
  return;
50
  }
51
 
52
+ // Get temporary stored alerts.
53
+ $temp_alerts = get_option( 'wsal_temp_alerts', array() );
54
+
55
  // Create new occurrence.
56
  $occ = new WSAL_Models_Occurrence();
57
  $occ->is_migrated = $migrated;
58
+ $occ->created_on = is_null( $date ) ? microtime( true ) : $date;
59
  $occ->alert_id = $type;
60
  $occ->site_id = ! is_null( $siteid ) ? $siteid
61
  : (function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0);
 
62
 
63
+ // Get DB connector.
64
+ $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
65
+ $connector = $this->plugin->getConnector( $db_config ); // Get connector for DB.
66
+ $wsal_db = $connector->getConnection(); // Get DB connection.
67
+ $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
68
+
69
+ // Check DB connection.
70
+ if ( $connection ) { // If connected then save the alert in DB.
71
+ // Save the alert occurrence.
72
+ $occ->Save();
73
+
74
+ // Set up meta data of the alert.
75
+ $occ->SetMeta( $data );
76
+ } else { // Else store the alerts in temporary option.
77
+ // Store current alert in temporary option array.
78
+ $temp_alerts[ $occ->created_on ]['alert'] = array(
79
+ 'is_migrated' => $occ->is_migrated,
80
+ 'created_on' => $occ->created_on,
81
+ 'alert_id' => $occ->alert_id,
82
+ 'site_id' => $occ->site_id,
83
+ );
84
+ $temp_alerts[ $occ->created_on ]['alert_data'] = $data;
85
+ }
86
+
87
+ // Save temporary alerts to options.
88
+ update_option( 'wsal_temp_alerts', $temp_alerts );
89
 
90
  // Inject for promoting the paid add-ons.
91
  $type = (int) $type;
classes/Ref.php ADDED
@@ -0,0 +1,3175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Inspects and prints out PHP values as HTML in a nicer way than print_r().
4
+ *
5
+ * @author digitalnature
6
+ * @link https://github.com/digitalnature/php-ref GitHub Repository
7
+ * @version 1.2
8
+ * @since 3.1.6
9
+ * @package Wsal
10
+ */
11
+
12
+ // Exit if accessed directly.
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
+
17
+ /**
18
+ * Shortcut to ref, HTML mode.
19
+ */
20
+ function wsal_r() {
21
+
22
+ // Arguments passed to this function.
23
+ $args = func_get_args();
24
+
25
+ // Options (operators) gathered by the expression parser;
26
+ // This variable gets passed as reference to getInputExpressions(), which will store the operators in it.
27
+ $options = array();
28
+
29
+ // Names of the arguments that were passed to this function.
30
+ $expressions = WSAL_Ref::getInputExpressions( $options );
31
+ $capture = in_array( '@', $options, true );
32
+
33
+ // Something went wrong while trying to parse the source expressions?.
34
+ // If so, silently ignore this part and leave out the expression info.
35
+ if ( func_num_args() !== count( $expressions ) ) {
36
+ $expressions = null;
37
+ }
38
+
39
+ // Use HTML formatter only if we're not in CLI mode, or if return was requested.
40
+ $format = (php_sapi_name() !== 'cli') || $capture ? 'html' : 'cliText';
41
+
42
+ // IE goes funky if there's no doctype.
43
+ if ( ! $capture && ($format === 'html') && ! headers_sent() && ( ! ob_get_level() || ini_get( 'output_buffering' )) ) {
44
+ print '<!DOCTYPE HTML><html><head><title>REF</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>';
45
+ }
46
+
47
+ $ref = new WSAL_Ref( $format );
48
+
49
+ if ( $capture ) {
50
+ ob_start();
51
+ }
52
+
53
+ foreach ( $args as $index => $arg ) {
54
+ $ref->query( $arg, $expressions ? $expressions[ $index ] : null );
55
+ }
56
+
57
+ // Return the results if this function was called with the error suppression operator.
58
+ if ( $capture ) {
59
+ return ob_get_clean();
60
+ }
61
+
62
+ // Stop the script if this function was called with the bitwise not operator.
63
+ if ( in_array( '~', $options, true ) && ($format === 'html') ) {
64
+ print '</body></html>';
65
+ exit( 0 );
66
+ }
67
+ }
68
+
69
+
70
+
71
+ /**
72
+ * Shortcut to ref, plain text mode.
73
+ */
74
+ function wsal_rt() {
75
+ $args = func_get_args();
76
+ $options = array();
77
+ $output = '';
78
+ $expressions = WSAL_Ref::getInputExpressions( $options );
79
+ $capture = in_array( '@', $options, true );
80
+ $ref = new WSAL_Ref( (php_sapi_name() !== 'cli') || $capture ? 'text' : 'cliText' );
81
+
82
+ if ( func_num_args() !== count( $expressions ) ) {
83
+ $expressions = null;
84
+ }
85
+
86
+ if ( ! headers_sent() ) {
87
+ header( 'Content-Type: text/plain; charset=utf-8' );
88
+ }
89
+
90
+ if ( $capture ) {
91
+ ob_start();
92
+ }
93
+
94
+ foreach ( $args as $index => $arg ) {
95
+ $ref->query( $arg, $expressions ? $expressions[ $index ] : null );
96
+ }
97
+
98
+ if ( $capture ) {
99
+ return ob_get_clean();
100
+ }
101
+
102
+ if ( in_array( '~', $options, true ) ) {
103
+ exit( 0 );
104
+ }
105
+ }
106
+
107
+
108
+
109
+ /**
110
+ * REF is a nicer alternative to PHP's print_r() / var_dump().
111
+ *
112
+ * @version 1.0
113
+ * @author digitalnature - http://digitalnature.eu
114
+ */
115
+ class WSAL_Ref {
116
+
117
+ const MARKER_KEY = '_phpRefArrayMarker_';
118
+
119
+
120
+
121
+ protected static
122
+
123
+ /**
124
+ * CPU time used for processing
125
+ *
126
+ * @var array
127
+ */
128
+ $time = 0,
129
+
130
+ /**
131
+ * Configuration (+ default values)
132
+ *
133
+ * @var array
134
+ */
135
+ $config = array(
136
+
137
+ // initially expanded levels (for HTML mode only)
138
+ 'expLvl' => 1,
139
+
140
+ // depth limit (0 = no limit);
141
+ // this is not related to recursion
142
+ 'maxDepth' => 6,
143
+
144
+ // show the place where r() has been called from
145
+ 'showBacktrace' => true,
146
+
147
+ // display iterator contents
148
+ 'showIteratorContents' => false,
149
+
150
+ // display extra information about resources
151
+ 'showResourceInfo' => true,
152
+
153
+ // display method and parameter list on objects
154
+ 'showMethods' => true,
155
+
156
+ // display private properties / methods
157
+ 'showPrivateMembers' => false,
158
+
159
+ // peform string matches (date, file, functions, classes, json, serialized data, regex etc.)
160
+ // note: seriously slows down queries on large amounts of data
161
+ 'showStringMatches' => true,
162
+
163
+ // shortcut functions used to access the query method below;
164
+ // if they are namespaced, the namespace must be present as well (methods are not supported)
165
+ 'shortcutFunc' => array( 'r', 'rt' ),
166
+
167
+ // custom/external formatters (as associative array: format => className)
168
+ 'formatters' => array(),
169
+
170
+ // stylesheet path (for HTML only);
171
+ // 'false' means no styles
172
+ 'stylePath' => '{:dir}/ref.css',
173
+
174
+ // javascript path (for HTML only);
175
+ // 'false' means no js
176
+ 'scriptPath' => '{:dir}/ref.js',
177
+
178
+ // display url info via cURL
179
+ 'showUrls' => false,
180
+
181
+ // stop evaluation after this amount of time (seconds)
182
+ 'timeout' => 10,
183
+
184
+ // whether to produce W3c-valid HTML,
185
+ // or unintelligible, but optimized markup that takes less space
186
+ 'validHtml' => false,
187
+ ),
188
+
189
+ /**
190
+ * Some environment variables
191
+ * used to determine feature support
192
+ *
193
+ * @var array
194
+ */
195
+ $env = array(),
196
+
197
+ /**
198
+ * Timeout point
199
+ *
200
+ * @var bool
201
+ */
202
+ $timeout = -1,
203
+
204
+ $debug = array(
205
+ 'cacheHits' => 0,
206
+ 'objects' => 0,
207
+ 'arrays' => 0,
208
+ 'scalars' => 0,
209
+ );
210
+
211
+
212
+ protected
213
+
214
+ /**
215
+ * Output formatter of this instance
216
+ *
217
+ * @var RFormatter
218
+ */
219
+ $fmt = null,
220
+
221
+ /**
222
+ * Start time of the current instance
223
+ *
224
+ * @var float
225
+ */
226
+ $startTime = 0,
227
+
228
+ /**
229
+ * Internally created objects
230
+ *
231
+ * @var SplObjectStorage
232
+ */
233
+ $intObjects = null;
234
+
235
+
236
+
237
+ /**
238
+ * Constructor
239
+ *
240
+ * @param string|RFormatter $format - Output format ID, or formatter instance defaults to 'html'.
241
+ * @throws Exception - On error.
242
+ */
243
+ public function __construct( $format = 'html' ) {
244
+
245
+ static $didIni = false;
246
+
247
+ if ( ! $didIni ) {
248
+ $didIni = true;
249
+ foreach ( array_keys( static::$config ) as $key ) {
250
+ $iniVal = get_cfg_var( 'ref.' . $key );
251
+ if ( $iniVal !== false ) {
252
+ static::$config[ $key ] = $iniVal;
253
+ }
254
+ }
255
+ }
256
+
257
+ if ( $format instanceof RFormatter ) {
258
+ $this->fmt = $format;
259
+
260
+ } else {
261
+ $format = isset( static::$config['formatters'][ $format ] ) ? static::$config['formatters'][ $format ] : 'R' . ucfirst( $format ) . 'Formatter';
262
+
263
+ if ( ! class_exists( $format, false ) ) {
264
+ throw new \Exception( sprintf( '%s class not found', $format ) );
265
+ }
266
+
267
+ $this->fmt = new $format();
268
+ }
269
+
270
+ if ( static::$env ) {
271
+ return;
272
+ }
273
+
274
+ static::$env = array(
275
+
276
+ // php 5.4+ ?
277
+ 'is54' => version_compare( PHP_VERSION, '5.4' ) >= 0,
278
+
279
+ // php 5.4.6+ ?
280
+ 'is546' => version_compare( PHP_VERSION, '5.4.6' ) >= 0,
281
+
282
+ // php 5.6+
283
+ 'is56' => version_compare( PHP_VERSION, '5.6' ) >= 0,
284
+
285
+ // php 7.0+ ?
286
+ 'is7' => version_compare( PHP_VERSION, '7.0' ) >= 0,
287
+
288
+ // curl extension running?
289
+ 'curlActive' => function_exists( 'curl_version' ),
290
+
291
+ // is the 'mbstring' extension active?
292
+ 'mbStr' => function_exists( 'mb_detect_encoding' ),
293
+
294
+ // @see: https://bugs.php.net/bug.php?id=52469
295
+ 'supportsDate' => (strncasecmp( PHP_OS, 'WIN', 3 ) !== 0) || (version_compare( PHP_VERSION, '5.3.10' ) >= 0),
296
+ );
297
+ }
298
+
299
+
300
+
301
+ /**
302
+ * Enforce proper use of this class
303
+ *
304
+ * @param string $name
305
+ */
306
+ public function __get( $name ) {
307
+ throw new \Exception( sprintf( 'No such property: %s', $name ) );
308
+ }
309
+
310
+
311
+
312
+ /**
313
+ * Enforce proper use of this class
314
+ *
315
+ * @param string $name
316
+ * @param mixed $value
317
+ */
318
+ public function __set( $name, $value ) {
319
+ throw new \Exception( sprintf( 'Cannot set %s. Not allowed', $name ) );
320
+ }
321
+
322
+
323
+
324
+ /**
325
+ * Generate structured information about a variable/value/expression (subject)
326
+ *
327
+ * Output is flushed to the screen
328
+ *
329
+ * @param mixed $subject
330
+ * @param string $expression
331
+ */
332
+ public function query( $subject, $expression = null ) {
333
+
334
+ if ( static::$timeout > 0 ) {
335
+ return;
336
+ }
337
+
338
+ $this->startTime = microtime( true );
339
+
340
+ $this->intObjects = new \SplObjectStorage();
341
+
342
+ $this->fmt->startRoot();
343
+ $this->fmt->startExp();
344
+ $this->evaluateExp( $expression );
345
+ $this->fmt->endExp();
346
+ $this->evaluate( $subject );
347
+ $this->fmt->endRoot();
348
+ $this->fmt->flush();
349
+
350
+ static::$time += microtime( true ) - $this->startTime;
351
+ }
352
+
353
+
354
+
355
+
356
+ /**
357
+ * Executes a function the given number of times and returns the elapsed time.
358
+ *
359
+ * Keep in mind that the returned time includes function call overhead (including
360
+ * microtime calls) x iteration count. This is why this is better suited for
361
+ * determining which of two or more functions is the fastest, rather than
362
+ * finding out how fast is a single function.
363
+ *
364
+ * @param int $iterations Number of times the function will be executed
365
+ * @param callable $function Function to execute
366
+ * @param mixed &$output If given, last return value will be available in this variable
367
+ * @return double Elapsed time
368
+ */
369
+ public static function timeFunc( $iterations, $function, &$output = null ) {
370
+
371
+ $time = 0;
372
+
373
+ for ( $i = 0; $i < $iterations; $i++ ) {
374
+ $start = microtime( true );
375
+ $output = call_user_func( $function );
376
+ $time += microtime( true ) - $start;
377
+ }
378
+
379
+ return round( $time, 4 );
380
+ }
381
+
382
+
383
+
384
+ /**
385
+ * Timer utility
386
+ *
387
+ * First call of this function will start the timer.
388
+ * The second call will stop the timer and return the elapsed time
389
+ * since the timer started.
390
+ *
391
+ * Multiple timers can be controlled simultaneously by specifying a timer ID.
392
+ *
393
+ * @since 1.0
394
+ * @param int $id Timer ID, optional
395
+ * @param int $precision Precision of the result, optional
396
+ * @return void|double Elapsed time, or void if the timer was just started
397
+ */
398
+ public static function timer( $id = 1, $precision = 4 ) {
399
+
400
+ static
401
+ $timers = array();
402
+
403
+ // check if this timer was started, and display the elapsed time if so
404
+ if ( isset( $timers[ $id ] ) ) {
405
+ $elapsed = round( microtime( true ) - $timers[ $id ], $precision );
406
+ unset( $timers[ $id ] );
407
+ return $elapsed;
408
+ }
409
+
410
+ // ID doesn't exist, start new timer
411
+ $timers[ $id ] = microtime( true );
412
+ }
413
+
414
+
415
+
416
+ /**
417
+ * Parses a DocBlock comment into a data structure.
418
+ *
419
+ * @link http://pear.php.net/manual/en/standards.sample.php
420
+ * @param string $comment DocBlock comment (must start with /**)
421
+ * @param string|null $key Field to return (optional)
422
+ * @return array|string|null Array containing all fields, array/string with the contents of
423
+ * the requested field, or null if the comment is empty/invalid
424
+ */
425
+ public static function parseComment( $comment, $key = null ) {
426
+
427
+ $description = '';
428
+ $tags = array();
429
+ $tag = null;
430
+ $pointer = '';
431
+ $padding = 0;
432
+ $comment = preg_split( '/\r\n|\r|\n/', '* ' . trim( $comment, "/* \t\n\r\0\x0B" ) );
433
+
434
+ // analyze each line
435
+ foreach ( $comment as $line ) {
436
+
437
+ // drop any wrapping spaces
438
+ $line = trim( $line );
439
+
440
+ // drop "* "
441
+ if ( $line !== '' ) {
442
+ $line = substr( $line, 2 );
443
+ }
444
+
445
+ if ( strpos( $line, '@' ) !== 0 ) {
446
+
447
+ // preserve formatting of tag descriptions,
448
+ // because they may span across multiple lines
449
+ if ( $tag !== null ) {
450
+ $trimmed = trim( $line );
451
+
452
+ if ( $padding !== 0 ) {
453
+ $trimmed = static::strPad( $trimmed, static::strLen( $line ) - $padding, ' ', STR_PAD_LEFT );
454
+ } else {
455
+ $padding = static::strLen( $line ) - static::strLen( $trimmed );
456
+ }
457
+
458
+ $pointer .= "\n{$trimmed}";
459
+ continue;
460
+ }
461
+
462
+ // tag definitions have not started yet; assume this is part of the description text
463
+ $description .= "\n{$line}";
464
+ continue;
465
+ }
466
+
467
+ $padding = 0;
468
+ $parts = explode( ' ', $line, 2 );
469
+
470
+ // invalid tag? (should we include it as an empty array?)
471
+ if ( ! isset( $parts[1] ) ) {
472
+ continue;
473
+ }
474
+
475
+ $tag = substr( $parts[0], 1 );
476
+ $line = ltrim( $parts[1] );
477
+
478
+ // tags that have a single component (eg. link, license, author, throws...);
479
+ // note that @throws may have 2 components, however most people use it like "@throws ExceptionClass if whatever...",
480
+ // which, if broken into two values, leads to an inconsistent description sentence
481
+ if ( ! in_array( $tag, array( 'global', 'param', 'return', 'var' ) ) ) {
482
+ $tags[ $tag ][] = $line;
483
+ end( $tags[ $tag ] );
484
+ $pointer = &$tags[ $tag ][ key( $tags[ $tag ] ) ];
485
+ continue;
486
+ }
487
+
488
+ // tags with 2 or 3 components (var, param, return);
489
+ $parts = explode( ' ', $line, 2 );
490
+ $parts[1] = isset( $parts[1] ) ? ltrim( $parts[1] ) : null;
491
+ $lastIdx = 1;
492
+
493
+ // expecting 3 components on the 'param' tag: type varName varDescription
494
+ if ( $tag === 'param' ) {
495
+ $lastIdx = 2;
496
+ if ( in_array( $parts[1][0], array( '&', '$' ), true ) ) {
497
+ $line = ltrim( array_pop( $parts ) );
498
+ $parts = array_merge( $parts, explode( ' ', $line, 2 ) );
499
+ $parts[2] = isset( $parts[2] ) ? ltrim( $parts[2] ) : null;
500
+ } else {
501
+ $parts[2] = $parts[1];
502
+ $parts[1] = null;
503
+ }
504
+ }
505
+
506
+ $tags[ $tag ][] = $parts;
507
+ end( $tags[ $tag ] );
508
+ $pointer = &$tags[ $tag ][ key( $tags[ $tag ] ) ][ $lastIdx ];
509
+ }
510
+
511
+ // split title from the description texts at the nearest 2x new-line combination
512
+ // (note: loose check because 0 isn't valid as well)
513
+ if ( strpos( $description, "\n\n" ) ) {
514
+ list($title, $description) = explode( "\n\n", $description, 2 );
515
+
516
+ // if we don't have 2 new lines, try to extract first sentence
517
+ } else {
518
+ // in order for a sentence to be considered valid,
519
+ // the next one must start with an uppercase letter
520
+ $sentences = preg_split( '/(?<=[.?!])\s+(?=[A-Z])/', $description, 2, PREG_SPLIT_NO_EMPTY );
521
+
522
+ // failed to detect a second sentence? then assume there's only title and no description text
523
+ $title = isset( $sentences[0] ) ? $sentences[0] : $description;
524
+ $description = isset( $sentences[1] ) ? $sentences[1] : '';
525
+ }
526
+
527
+ $title = ltrim( $title );
528
+ $description = ltrim( $description );
529
+
530
+ $data = compact( 'title', 'description', 'tags' );
531
+
532
+ if ( ! array_filter( $data ) ) {
533
+ return null;
534
+ }
535
+
536
+ if ( $key !== null ) {
537
+ return isset( $data[ $key ] ) ? $data[ $key ] : null;
538
+ }
539
+
540
+ return $data;
541
+ }
542
+
543
+
544
+
545
+ /**
546
+ * Split a regex into its components
547
+ *
548
+ * Based on "Regex Colorizer" by Steven Levithan (this is a translation from javascript)
549
+ *
550
+ * @link https://github.com/slevithan/regex-colorizer
551
+ * @link https://github.com/symfony/Finder/blob/master/Expression/Regex.php#L64-74
552
+ * @param string $pattern
553
+ * @return array
554
+ */
555
+ public static function splitRegex( $pattern ) {
556
+
557
+ // detection attempt code from the Symfony Finder component
558
+ $maybeValid = false;
559
+ if ( preg_match( '/^(.{3,}?)([imsxuADU]*)$/', $pattern, $m ) ) {
560
+ $start = substr( $m[1], 0, 1 );
561
+ $end = substr( $m[1], -1 );
562
+
563
+ if ( ($start === $end && ! preg_match( '/[*?[:alnum:] \\\\]/', $start )) || ($start === '{' && $end === '}') ) {
564
+ $maybeValid = true;
565
+ }
566
+ }
567
+
568
+ if ( ! $maybeValid ) {
569
+ throw new \Exception( 'Pattern does not appear to be a valid PHP regex' );
570
+ }
571
+
572
+ $output = array();
573
+ $capturingGroupCount = 0;
574
+ $groupStyleDepth = 0;
575
+ $openGroups = array();
576
+ $lastIsQuant = false;
577
+ $lastType = 1; // 1 = none; 2 = alternator
578
+ $lastStyle = null;
579
+
580
+ preg_match_all( '/\[\^?]?(?:[^\\\\\]]+|\\\\[\S\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\\\]+|./', $pattern, $matches );
581
+
582
+ $matches = $matches[0];
583
+
584
+ $getTokenCharCode = function( $token ) {
585
+ if ( strlen( $token ) > 1 && $token[0] === '\\' ) {
586
+ $t1 = substr( $token, 1 );
587
+
588
+ if ( preg_match( '/^c[A-Za-z]$/', $t1 ) ) {
589
+ return strpos( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', strtoupper( $t1[1] ) ) + 1;
590
+ }
591
+
592
+ if ( preg_match( '/^(?:x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})$/', $t1 ) ) {
593
+ return intval( substr( $t1, 1 ), 16 );
594
+ }
595
+
596
+ if ( preg_match( '/^(?:[0-3][0-7]{0,2}|[4-7][0-7]?)$/', $t1 ) ) {
597
+ return intval( $t1, 8 );
598
+ }
599
+
600
+ $len = strlen( $t1 );
601
+
602
+ if ( $len === 1 && strpos( 'cuxDdSsWw', $t1 ) !== false ) {
603
+ return null;
604
+ }
605
+
606
+ if ( $len === 1 ) {
607
+ switch ( $t1 ) {
608
+ case 'b':
609
+ return 8;
610
+ case 'f':
611
+ return 12;
612
+ case 'n':
613
+ return 10;
614
+ case 'r':
615
+ return 13;
616
+ case 't':
617
+ return 9;
618
+ case 'v':
619
+ return 11;
620
+ default:
621
+ return $t1[0];
622
+ }
623
+ }
624
+ }
625
+
626
+ return ($token !== '\\') ? $token[0] : null;
627
+ };
628
+
629
+ foreach ( $matches as $m ) {
630
+
631
+ if ( $m[0] === '[' ) {
632
+ $lastCC = null;
633
+ $cLastRangeable = false;
634
+ $cLastType = 0; // 0 = none; 1 = range hyphen; 2 = short class
635
+
636
+ preg_match( '/^(\[\^?)(]?(?:[^\\\\\]]+|\\\\[\S\s]?)*)(]?)$/', $m, $parts );
637
+
638
+ array_shift( $parts );
639
+ list($opening, $content, $closing) = $parts;
640
+
641
+ if ( ! $closing ) {
642
+ throw new \Exception( 'Unclosed character class' );
643
+ }
644
+
645
+ preg_match_all( '/[^\\\\-]+|-|\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)/', $content, $ccTokens );
646
+ $ccTokens = $ccTokens[0];
647
+ $ccTokenCount = count( $ccTokens );
648
+ $output[] = array(
649
+ 'chr' => $opening,
650
+ );
651
+
652
+ foreach ( $ccTokens as $i => $cm ) {
653
+
654
+ if ( $cm[0] === '\\' ) {
655
+ if ( preg_match( '/^\\\\[cux]$/', $cm ) ) {
656
+ throw new \Exception( 'Incomplete regex token' );
657
+ }
658
+
659
+ if ( preg_match( '/^\\\\[dsw]$/i', $cm ) ) {
660
+ $output[] = array(
661
+ 'chr-meta' => $cm,
662
+ );
663
+ $cLastRangeable = ($cLastType !== 1);
664
+ $cLastType = 2;
665
+
666
+ } elseif ( $cm === '\\' ) {
667
+ throw new \Exception( 'Incomplete regex token' );
668
+
669
+ } else {
670
+ $output[] = array(
671
+ 'chr-meta' => $cm,
672
+ );
673
+ $cLastRangeable = $cLastType !== 1;
674
+ $lastCC = $getTokenCharCode( $cm );
675
+ }
676
+ } elseif ( $cm === '-' ) {
677
+ if ( $cLastRangeable ) {
678
+ $nextToken = ($i + 1 < $ccTokenCount) ? $ccTokens[ $i + 1 ] : false;
679
+
680
+ if ( $nextToken ) {
681
+ $nextTokenCharCode = $getTokenCharCode( $nextToken[0] );
682
+
683
+ if ( ( ! is_null( $nextTokenCharCode ) && $lastCC > $nextTokenCharCode) || $cLastType === 2 || preg_match( '/^\\\\[dsw]$/i', $nextToken[0] ) ) {
684
+ throw new \Exception( 'Reversed or invalid range' );
685
+ }
686
+
687
+ $output[] = array(
688
+ 'chr-range' => '-',
689
+ );
690
+ $cLastRangeable = false;
691
+ $cLastType = 1;
692
+
693
+ } else {
694
+ $output[] = $closing ? array(
695
+ 'chr' => '-',
696
+ ) : array(
697
+ 'chr-range' => '-',
698
+ );
699
+ }
700
+ } else {
701
+ $output[] = array(
702
+ 'chr' => '-',
703
+ );
704
+ $cLastRangeable = ($cLastType !== 1);
705
+ }
706
+ } else {
707
+ $output[] = array(
708
+ 'chr' => $cm,
709
+ );
710
+ $cLastRangeable = strlen( $cm ) > 1 || ($cLastType !== 1);
711
+ $lastCC = $cm[ strlen( $cm ) - 1 ];
712
+ }
713
+ }
714
+
715
+ $output[] = array(
716
+ 'chr' => $closing,
717
+ );
718
+ $lastIsQuant = true;
719
+
720
+ } elseif ( $m[0] === '(' ) {
721
+ if ( strlen( $m ) === 2 ) {
722
+ throw new \Exception( 'Invalid or unsupported group type' );
723
+ }
724
+
725
+ if ( strlen( $m ) === 1 ) {
726
+ $capturingGroupCount++;
727
+ }
728
+
729
+ $groupStyleDepth = ($groupStyleDepth !== 5) ? $groupStyleDepth + 1 : 1;
730
+ $openGroups[] = $m; // opening
731
+ $lastIsQuant = false;
732
+ $output[] = array(
733
+ "g{$groupStyleDepth}" => $m,
734
+ );
735
+
736
+ } elseif ( $m[0] === ')' ) {
737
+ if ( ! count( $openGroups ) ) {
738
+ throw new \Exception( 'No matching opening parenthesis' );
739
+ }
740
+
741
+ $output[] = array(
742
+ 'g' . $groupStyleDepth => ')',
743
+ );
744
+ $prevGroup = $openGroups[ count( $openGroups ) - 1 ];
745
+ $prevGroup = isset( $prevGroup[2] ) ? $prevGroup[2] : '';
746
+ $lastIsQuant = ! preg_match( '/^[=!]/', $prevGroup );
747
+ $lastStyle = "g{$groupStyleDepth}";
748
+ $lastType = 0;
749
+ $groupStyleDepth = ($groupStyleDepth !== 1) ? $groupStyleDepth - 1 : 5;
750
+
751
+ array_pop( $openGroups );
752
+ continue;
753
+
754
+ } elseif ( $m[0] === '\\' ) {
755
+ if ( isset( $m[1] ) && preg_match( '/^[1-9]/', $m[1] ) ) {
756
+ $nonBackrefDigits = '';
757
+ $num = substr( +$m, 1 );
758
+
759
+ while ( $num > $capturingGroupCount ) {
760
+ preg_match( '/[0-9]$/', $num, $digits );
761
+ $nonBackrefDigits = $digits[0] . $nonBackrefDigits;
762
+ $num = floor( $num / 10 );
763
+ }
764
+
765
+ if ( $num > 0 ) {
766
+ $output[] = array(
767
+ 'meta' => "\\{$num}",
768
+ 'text' => $nonBackrefDigits,
769
+ );
770
+
771
+ } else {
772
+ preg_match( '/^\\\\([0-3][0-7]{0,2}|[4-7][0-7]?|[89])([0-9]*)/', $m, $pts );
773
+ $output[] = array(
774
+ 'meta' => '\\' . $pts[1],
775
+ 'text' => $pts[2],
776
+ );
777
+ }
778
+
779
+ $lastIsQuant = true;
780
+
781
+ } elseif ( isset( $m[1] ) && preg_match( '/^[0bBcdDfnrsStuvwWx]/', $m[1] ) ) {
782
+
783
+ if ( preg_match( '/^\\\\[cux]$/', $m ) ) {
784
+ throw new \Exception( 'Incomplete regex token' );
785
+ }
786
+
787
+ $output[] = array(
788
+ 'meta' => $m,
789
+ );
790
+ $lastIsQuant = (strpos( 'bB', $m[1] ) === false);
791
+
792
+ } elseif ( $m === '\\' ) {
793
+ throw new \Exception( 'Incomplete regex token' );
794
+
795
+ } else {
796
+ $output[] = array(
797
+ 'text' => $m,
798
+ );
799
+ $lastIsQuant = true;
800
+ }
801
+ } elseif ( preg_match( '/^(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??$/', $m ) ) {
802
+ if ( ! $lastIsQuant ) {
803
+ throw new \Exception( 'Quantifiers must be preceded by a token that can be repeated' );
804
+ }
805
+
806
+ preg_match( '/^\{([0-9]+)(?:,([0-9]*))?/', $m, $interval );
807
+
808
+ if ( $interval && (+$interval[1] > 65535 || (isset( $interval[2] ) && (+$interval[2] > 65535))) ) {
809
+ throw new \Exception( 'Interval quantifier cannot use value over 65,535' );
810
+ }
811
+
812
+ if ( $interval && isset( $interval[2] ) && (+$interval[1] > +$interval[2]) ) {
813
+ throw new \Exception( 'Interval quantifier range is reversed' );
814
+ }
815
+
816
+ $output[] = array(
817
+ $lastStyle ? $lastStyle : 'meta' => $m,
818
+ );
819
+ $lastIsQuant = false;
820
+
821
+ } elseif ( $m === '|' ) {
822
+ if ( $lastType === 1 || ($lastType === 2 && ! count( $openGroups )) ) {
823
+ throw new \Exception( 'Empty alternative effectively truncates the regex here' );
824
+ }
825
+
826
+ $output[] = count( $openGroups ) ? array(
827
+ "g{$groupStyleDepth}" => '|',
828
+ ) : array(
829
+ 'meta' => '|',
830
+ );
831
+ $lastIsQuant = false;
832
+ $lastType = 2;
833
+ $lastStyle = '';
834
+ continue;
835
+
836
+ } elseif ( $m === '^' || $m === '$' ) {
837
+ $output[] = array(
838
+ 'meta' => $m,
839
+ );
840
+ $lastIsQuant = false;
841
+
842
+ } elseif ( $m === '.' ) {
843
+ $output[] = array(
844
+ 'meta' => '.',
845
+ );
846
+ $lastIsQuant = true;
847
+
848
+ } else {
849
+ $output[] = array(
850
+ 'text' => $m,
851
+ );
852
+ $lastIsQuant = true;
853
+ }
854
+
855
+ $lastType = 0;
856
+ $lastStyle = '';
857
+ }
858
+
859
+ if ( $openGroups ) {
860
+ throw new \Exception( 'Unclosed grouping' );
861
+ }
862
+
863
+ return $output;
864
+ }
865
+
866
+
867
+
868
+ /**
869
+ * Set or get configuration options
870
+ *
871
+ * @param string $key
872
+ * @param mixed|null $value
873
+ * @return mixed
874
+ */
875
+ public static function config( $key, $value = null ) {
876
+
877
+ if ( ! array_key_exists( $key, static::$config ) ) {
878
+ throw new \Exception( sprintf( 'Unrecognized option: "%s". Valid options are: %s', $key, implode( ', ', array_keys( static::$config ) ) ) );
879
+ }
880
+
881
+ if ( $value === null ) {
882
+ return static::$config[ $key ];
883
+ }
884
+
885
+ if ( is_array( static::$config[ $key ] ) ) {
886
+ return static::$config[ $key ] = (array) $value;
887
+ }
888
+
889
+ return static::$config[ $key ] = $value;
890
+ }
891
+
892
+
893
+
894
+ /**
895
+ * Total CPU time used by the class
896
+ *
897
+ * @param int precision
898
+ * @return double
899
+ */
900
+ public static function getTime( $precision = 4 ) {
901
+ return round( static::$time, $precision );
902
+ }
903
+
904
+
905
+
906
+ /**
907
+ * Get relevant backtrace info for last ref call
908
+ *
909
+ * @return array|false
910
+ */
911
+ public static function getBacktrace() {
912
+
913
+ // pull only basic info with php 5.3.6+ to save some memory
914
+ $trace = defined( 'DEBUG_BACKTRACE_IGNORE_ARGS' ) ? debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ) : debug_backtrace();
915
+
916
+ while ( $callee = array_pop( $trace ) ) {
917
+
918
+ // extract only the information we neeed
919
+ $callee = array_intersect_key( $callee, array_fill_keys( array( 'file', 'function', 'line' ), false ) );
920
+ extract( $callee, EXTR_OVERWRITE );
921
+
922
+ // skip, if the called function doesn't match the shortcut function name
923
+ if ( ! $function || ! in_array( mb_strtolower( (string) $function ), static::$config['shortcutFunc'] ) ) {
924
+ continue;
925
+ }
926
+
927
+ return compact( 'file', 'function', 'line' );
928
+ }
929
+
930
+ return false;
931
+ }
932
+
933
+
934
+
935
+ /**
936
+ * Determines the input expression(s) passed to the shortcut function
937
+ *
938
+ * @param array &$options Optional, options to gather (from operators)
939
+ * @return array Array of string expressions
940
+ */
941
+ public static function getInputExpressions( array &$options = null ) {
942
+
943
+ // used to determine the position of the current call,
944
+ // if more queries calls were made on the same line
945
+ static $lineInst = array();
946
+
947
+ $trace = static::getBacktrace();
948
+
949
+ if ( ! $trace ) {
950
+ return array();
951
+ }
952
+
953
+ extract( $trace );
954
+
955
+ $code = file( $file );
956
+ $code = $code[ $line - 1 ]; // multiline expressions not supported!
957
+ $instIndx = 0;
958
+ $tokens = token_get_all( "<?php {$code}" );
959
+
960
+ // locate the caller position in the line, and isolate argument tokens
961
+ foreach ( $tokens as $i => $token ) {
962
+
963
+ // match token with our shortcut function name
964
+ if ( is_string( $token ) || ($token[0] !== T_STRING) || (strcasecmp( $token[1], $function ) !== 0) ) {
965
+ continue;
966
+ }
967
+
968
+ // is this some method that happens to have the same name as the shortcut function?
969
+ if ( isset( $tokens[ $i - 1 ] ) && is_array( $tokens[ $i - 1 ] ) && in_array( $tokens[ $i - 1 ][0], array( T_DOUBLE_COLON, T_OBJECT_OPERATOR ), true ) ) {
970
+ continue;
971
+ }
972
+
973
+ // find argument definition start, just after '('
974
+ if ( isset( $tokens[ $i + 1 ] ) && ($tokens[ $i + 1 ][0] === '(') ) {
975
+ $instIndx++;
976
+
977
+ if ( ! isset( $lineInst[ $line ] ) ) {
978
+ $lineInst[ $line ] = 0;
979
+ }
980
+
981
+ if ( $instIndx <= $lineInst[ $line ] ) {
982
+ continue;
983
+ }
984
+
985
+ $lineInst[ $line ]++;
986
+
987
+ // gather options
988
+ if ( $options !== null ) {
989
+ $j = $i - 1;
990
+ while ( isset( $tokens[ $j ] ) && is_string( $tokens[ $j ] ) && in_array( $tokens[ $j ], array( '@', '+', '-', '!', '~' ) ) ) {
991
+ $options[] = $tokens[ $j-- ];
992
+ }
993
+ }
994
+
995
+ $lvl = $index = $curlies = 0;
996
+ $expressions = array();
997
+
998
+ // get the expressions
999
+ foreach ( array_slice( $tokens, $i + 2 ) as $token ) {
1000
+
1001
+ if ( is_array( $token ) ) {
1002
+ if ( $token[0] !== T_COMMENT ) {
1003
+ $expressions[ $index ][] = ($token[0] !== T_WHITESPACE) ? $token[1] : ' ';
1004
+ }
1005
+
1006
+ continue;
1007
+ }
1008
+
1009
+ if ( $token === '{' ) {
1010
+ $curlies++;
1011
+ }
1012
+
1013
+ if ( $token === '}' ) {
1014
+ $curlies--;
1015
+ }
1016
+
1017
+ if ( $token === '(' ) {
1018
+ $lvl++;
1019
+ }
1020
+
1021
+ if ( $token === ')' ) {
1022
+ $lvl--;
1023
+ }
1024
+
1025
+ // assume next argument if a comma was encountered,
1026
+ // and we're not insde a curly bracket or inner parentheses
1027
+ if ( ($curlies < 1) && ($lvl === 0) && ($token === ',') ) {
1028
+ $index++;
1029
+ continue;
1030
+ }
1031
+
1032
+ // negative parentheses count means we reached the end of argument definitions
1033
+ if ( $lvl < 0 ) {
1034
+ foreach ( $expressions as &$expression ) {
1035
+ $expression = trim( implode( '', $expression ) );
1036
+ }
1037
+
1038
+ return $expressions;
1039
+ }
1040
+
1041
+ $expressions[ $index ][] = $token;
1042
+ }
1043
+
1044
+ break;
1045
+ }
1046
+ }
1047
+
1048
+ }
1049
+
1050
+
1051
+
1052
+ /**
1053
+ * Get all parent classes of a class
1054
+ *
1055
+ * @param Reflector $class Reflection object
1056
+ * @return array Array of ReflectionClass objects (starts with the ancestor, ends with the given class)
1057
+ */
1058
+ protected static function getParentClasses( \Reflector $class ) {
1059
+
1060
+ $parents = array( $class );
1061
+ while ( ($class = $class->getParentClass()) !== false ) {
1062
+ $parents[] = $class;
1063
+ }
1064
+
1065
+ return array_reverse( $parents );
1066
+ }
1067
+
1068
+
1069
+
1070
+ /**
1071
+ * Generate class / function info
1072
+ *
1073
+ * @param Reflector $reflector Class name or reflection object
1074
+ * @param string $single Skip parent classes
1075
+ * @param Reflector|null $context Object context (for methods)
1076
+ * @return string
1077
+ */
1078
+ protected function fromReflector( \Reflector $reflector, $single = '', \Reflector $context = null ) {
1079
+
1080
+ // @todo: test this
1081
+ $hash = var_export( func_get_args(), true );
1082
+ // $hash = $reflector->getName() . ';' . $single . ';' . ($context ? $context->getName() : '');
1083
+ if ( $this->fmt->didCache( $hash ) ) {
1084
+ static::$debug['cacheHits']++;
1085
+ return;
1086
+ }
1087
+
1088
+ $items = array( $reflector );
1089
+
1090
+ if ( ($single === '') && ($reflector instanceof \ReflectionClass) ) {
1091
+ $items = static::getParentClasses( $reflector );
1092
+ }
1093
+
1094
+ $first = true;
1095
+ foreach ( $items as $item ) {
1096
+
1097
+ if ( ! $first ) {
1098
+ $this->fmt->sep( ' :: ' );
1099
+ }
1100
+
1101
+ $first = false;
1102
+ $name = ($single !== '') ? $single : $item->getName();
1103
+ $comments = $item->isInternal() ? array() : static::parseComment( $item->getDocComment() );
1104
+ $meta = array(
1105
+ 'sub' => array(),
1106
+ );
1107
+ $bubbles = array();
1108
+
1109
+ if ( $item->isInternal() ) {
1110
+ $extension = $item->getExtension();
1111
+ $meta['title'] = ($extension instanceof \ReflectionExtension) ? sprintf( 'Internal - part of %s (%s)', $extension->getName(), $extension->getVersion() ) : 'Internal';
1112
+
1113
+ } else {
1114
+ $comments = static::parseComment( $item->getDocComment() );
1115
+
1116
+ if ( $comments ) {
1117
+ $meta += $comments;
1118
+ }
1119
+
1120
+ $meta['sub'][] = array( 'Defined in', basename( $item->getFileName() ) . ':' . $item->getStartLine() );
1121
+ }
1122
+
1123
+ if ( ($item instanceof \ReflectionFunction) || ($item instanceof \ReflectionMethod) ) {
1124
+ if ( ($context !== null) && ($context->getShortName() !== $item->getDeclaringClass()->getShortName()) ) {
1125
+ $meta['sub'][] = array( 'Inherited from', $item->getDeclaringClass()->getShortName() );
1126
+ }
1127
+
1128
+ // @note: PHP 7 seems to crash when calling getPrototype on Closure::__invoke()
1129
+ if ( ($item instanceof \ReflectionMethod) && ! $item->isInternal() ) {
1130
+ try {
1131
+ $proto = $item->getPrototype();
1132
+ $meta['sub'][] = array( 'Prototype defined by', $proto->class );
1133
+ } catch ( \Exception $e ) {
1134
+ }
1135
+ }
1136
+
1137
+ $this->fmt->text( 'name', $name, $meta, $this->linkify( $item ) );
1138
+ continue;
1139
+ }
1140
+
1141
+ // @todo: maybe - list interface methods
1142
+ if ( ! ($item->isInterface() || (static::$env['is54'] && $item->isTrait())) ) {
1143
+
1144
+ if ( $item->isAbstract() ) {
1145
+ $bubbles[] = array( 'A', 'Abstract' );
1146
+ }
1147
+
1148
+ if ( static::$env['is7'] && $item->isAnonymous() ) {
1149
+ $bubbles[] = array( '?', 'Anonymous' );
1150
+ }
1151
+
1152
+ if ( $item->isFinal() ) {
1153
+ $bubbles[] = array( 'F', 'Final' );
1154
+ }
1155
+
1156
+ // php 5.4+ only
1157
+ if ( static::$env['is54'] && $item->isCloneable() ) {
1158
+ $bubbles[] = array( 'C', 'Cloneable' );
1159
+ }
1160
+
1161
+ if ( $item->isIterateable() ) {
1162
+ $bubbles[] = array( 'X', 'Iterateable' );
1163
+ }
1164
+ }
1165
+
1166
+ if ( $item->isInterface() && $single !== '' ) {
1167
+ $bubbles[] = array( 'I', 'Interface' );
1168
+ }
1169
+
1170
+ if ( $bubbles ) {
1171
+ $this->fmt->bubbles( $bubbles );
1172
+ }
1173
+
1174
+ if ( $item->isInterface() && $single === '' ) {
1175
+ $name .= sprintf( ' (%d)', count( $item->getMethods() ) );
1176
+ }
1177
+
1178
+ $this->fmt->text( 'name', $name, $meta, $this->linkify( $item ) );
1179
+ }
1180
+
1181
+ $this->fmt->cacheLock( $hash );
1182
+ }
1183
+
1184
+
1185
+
1186
+ /**
1187
+ * Generates an URL that points to the documentation page relevant for the requested context
1188
+ *
1189
+ * For internal functions and classes, the URI will point to the local PHP manual
1190
+ * if installed and configured, otherwise to php.net/manual (the english one)
1191
+ *
1192
+ * @param Reflector $reflector Reflector object (used to determine the URL scheme for internal stuff)
1193
+ * @param string|null $constant Constant name, if this is a request to linkify a constant
1194
+ * @return string|null URL
1195
+ */
1196
+ protected function linkify( \Reflector $reflector, $constant = null ) {
1197
+
1198
+ static $docRefRoot = null, $docRefExt = null;
1199
+
1200
+ // most people don't have this set
1201
+ if ( ! $docRefRoot ) {
1202
+ $docRefRoot = ($docRefRoot = rtrim( ini_get( 'docref_root' ), '/' )) ? $docRefRoot : 'http://php.net/manual/en';
1203
+ }
1204
+
1205
+ if ( ! $docRefExt ) {
1206
+ $docRefExt = ($docRefExt = ini_get( 'docref_ext' )) ? $docRefExt : '.php';
1207
+ }
1208
+
1209
+ $phpNetSchemes = array(
1210
+ 'class' => $docRefRoot . '/class.%s' . $docRefExt,
1211
+ 'function' => $docRefRoot . '/function.%s' . $docRefExt,
1212
+ 'method' => $docRefRoot . '/%2$s.%1$s' . $docRefExt,
1213
+ 'property' => $docRefRoot . '/class.%2$s' . $docRefExt . '#%2$s.props.%1$s',
1214
+ 'constant' => $docRefRoot . '/class.%2$s' . $docRefExt . '#%2$s.constants.%1$s',
1215
+ );
1216
+
1217
+ $url = null;
1218
+ $args = array();
1219
+
1220
+ // determine scheme
1221
+ if ( $constant !== null ) {
1222
+ $type = 'constant';
1223
+ $args[] = $constant;
1224
+
1225
+ } else {
1226
+ $type = explode( '\\', get_class( $reflector ) );
1227
+ $type = strtolower( ltrim( end( $type ), 'Reflection' ) );
1228
+
1229
+ if ( $type === 'object' ) {
1230
+ $type = 'class';
1231
+ }
1232
+ }
1233
+
1234
+ // properties don't have the internal flag;
1235
+ // also note that many internal classes use some kind of magic as properties (eg. DateTime);
1236
+ // these will only get linkifed if the declared class is internal one, and not an extension :(
1237
+ $parent = ($type !== 'property') ? $reflector : $reflector->getDeclaringClass();
1238
+
1239
+ // internal function/method/class/property/constant
1240
+ if ( $parent->isInternal() ) {
1241
+ $args[] = $reflector->name;
1242
+
1243
+ if ( in_array( $type, array( 'method', 'property' ), true ) ) {
1244
+ $args[] = $reflector->getDeclaringClass()->getName();
1245
+ }
1246
+
1247
+ $args = array_map(
1248
+ function( $text ) {
1249
+ return str_replace( '_', '-', ltrim( strtolower( $text ), '\\_' ) );
1250
+ }, $args
1251
+ );
1252
+
1253
+ // check for some special cases that have no links
1254
+ $valid = (($type === 'method') || (strcasecmp( $parent->name, 'stdClass' ) !== 0))
1255
+ && (($type !== 'method') || (($reflector->name === '__construct') || strpos( $reflector->name, '__' ) !== 0));
1256
+
1257
+ if ( $valid ) {
1258
+ $url = vsprintf( $phpNetSchemes[ $type ], $args );
1259
+ }
1260
+
1261
+ // custom
1262
+ } else {
1263
+ switch ( true ) {
1264
+
1265
+ // WordPress function;
1266
+ // like pretty much everything else in WordPress, API links are inconsistent as well;
1267
+ // so we're using queryposts.com as doc source for API
1268
+ case ($type === 'function') && class_exists( 'WP', false ) && defined( 'ABSPATH' ) && defined( 'WPINC' ):
1269
+ if ( strpos( $reflector->getFileName(), realpath( ABSPATH . WPINC ) ) === 0 ) {
1270
+ $url = sprintf( 'http://queryposts.com/function/%s', urlencode( strtolower( $reflector->getName() ) ) );
1271
+ break;
1272
+ }
1273
+
1274
+ // @todo: handle more apps
1275
+ }
1276
+ }
1277
+
1278
+ return $url;
1279
+ }
1280
+
1281
+
1282
+ public static function getTimeoutPoint() {
1283
+ return static::$timeout;
1284
+ }
1285
+
1286
+
1287
+ public static function getDebugInfo() {
1288
+ return static::$debug;
1289
+ }
1290
+
1291
+
1292
+
1293
+ protected function hasInstanceTimedOut() {
1294
+
1295
+ if ( static::$timeout > 0 ) {
1296
+ return true;
1297
+ }
1298
+
1299
+ $timeout = static::$config['timeout'];
1300
+
1301
+ if ( ($timeout > 0) && ((microtime( true ) - $this->startTime) > $timeout) ) {
1302
+ return (static::$timeout = (microtime( true ) - $this->startTime));
1303
+ }
1304
+
1305
+ return false;
1306
+ }
1307
+
1308
+
1309
+
1310
+ /**
1311
+ * Evaluates the given variable
1312
+ *
1313
+ * @param mixed &$subject Variable to query
1314
+ * @param bool $specialStr Should this be interpreted as a special string?
1315
+ * @return mixed Result (both HTML and text modes generate strings)
1316
+ */
1317
+ protected function evaluate( &$subject, $specialStr = false ) {
1318
+
1319
+ switch ( $type = gettype( $subject ) ) {
1320
+
1321
+ // https://github.com/digitalnature/php-ref/issues/13
1322
+ case 'unknown type':
1323
+ return $this->fmt->text( 'unknown' );
1324
+
1325
+ // null value
1326
+ case 'NULL':
1327
+ return $this->fmt->text( 'null' );
1328
+
1329
+ // integer/double/float
1330
+ case 'integer':
1331
+ case 'double':
1332
+ return $this->fmt->text( $type, $subject, $type );
1333
+
1334
+ // boolean
1335
+ case 'boolean':
1336
+ $text = $subject ? 'true' : 'false';
1337
+ return $this->fmt->text( $text, $text, $type );
1338
+
1339
+ // arrays
1340
+ case 'array':
1341
+ // empty array?
1342
+ if ( empty( $subject ) ) {
1343
+ $this->fmt->text( 'array' );
1344
+ return $this->fmt->emptyGroup();
1345
+ }
1346
+
1347
+ if ( isset( $subject[ static::MARKER_KEY ] ) ) {
1348
+ unset( $subject[ static::MARKER_KEY ] );
1349
+ $this->fmt->text( 'array' );
1350
+ $this->fmt->emptyGroup( 'recursion' );
1351
+ return;
1352
+ }
1353
+
1354
+ // first recursion level detection;
1355
+ // this is optional (used to print consistent recursion info)
1356
+ foreach ( $subject as $key => &$value ) {
1357
+
1358
+ if ( ! is_array( $value ) ) {
1359
+ continue;
1360
+ }
1361
+
1362
+ // save current value in a temporary variable
1363
+ $buffer = $value;
1364
+
1365
+ // assign new value
1366
+ $value = ($value !== 1) ? 1 : 2;
1367
+
1368
+ // if they're still equal, then we have a reference
1369
+ if ( $value === $subject ) {
1370
+ $value = $buffer;
1371
+ $value[ static::MARKER_KEY ] = true;
1372
+ $this->evaluate( $value );
1373
+ return;
1374
+ }
1375
+
1376
+ // restoring original value
1377
+ $value = $buffer;
1378
+ }
1379
+
1380
+ $this->fmt->text( 'array' );
1381
+ $count = count( $subject );
1382
+ if ( ! $this->fmt->startGroup( $count ) ) {
1383
+ return;
1384
+ }
1385
+
1386
+ $max = max( array_map( 'static::strLen', array_keys( $subject ) ) );
1387
+ $subject[ static::MARKER_KEY ] = true;
1388
+
1389
+ foreach ( $subject as $key => &$value ) {
1390
+
1391
+ // ignore our temporary marker
1392
+ if ( $key === static::MARKER_KEY ) {
1393
+ continue;
1394
+ }
1395
+
1396
+ if ( $this->hasInstanceTimedOut() ) {
1397
+ break;
1398
+ }
1399
+
1400
+ $keyInfo = gettype( $key );
1401
+
1402
+ if ( $keyInfo === 'string' ) {
1403
+ $encoding = static::$env['mbStr'] ? mb_detect_encoding( $key ) : '';
1404
+ $keyLen = $encoding && ($encoding !== 'ASCII') ? static::strLen( $key ) . '; ' . $encoding : static::strLen( $key );
1405
+ $keyInfo = "{$keyInfo}({$keyLen})";
1406
+ } else {
1407
+ $keyLen = strlen( $key );
1408
+ }
1409
+
1410
+ $this->fmt->startRow();
1411
+ $this->fmt->text( 'key', $key, "Key: {$keyInfo}" );
1412
+ $this->fmt->colDiv( $max - $keyLen );
1413
+ $this->fmt->sep( '=>' );
1414
+ $this->fmt->colDiv();
1415
+ $this->evaluate( $value, $specialStr );
1416
+ $this->fmt->endRow();
1417
+ }
1418
+
1419
+ unset( $subject[ static::MARKER_KEY ] );
1420
+
1421
+ $this->fmt->endGroup();
1422
+ return;
1423
+
1424
+ // resource
1425
+ case 'resource':
1426
+ $meta = array();
1427
+ $resType = get_resource_type( $subject );
1428
+
1429
+ $this->fmt->text( 'resource', strval( $subject ) );
1430
+
1431
+ if ( ! static::$config['showResourceInfo'] ) {
1432
+ return $this->fmt->emptyGroup( $resType );
1433
+ }
1434
+
1435
+ // @see: http://php.net/manual/en/resource.php
1436
+ // need to add more...
1437
+ switch ( $resType ) {
1438
+
1439
+ // curl extension resource
1440
+ case 'curl':
1441
+ $meta = curl_getinfo( $subject );
1442
+ break;
1443
+
1444
+ case 'FTP Buffer':
1445
+ $meta = array(
1446
+ 'time_out' => ftp_get_option( $subject, FTP_TIMEOUT_SEC ),
1447
+ 'auto_seek' => ftp_get_option( $subject, FTP_AUTOSEEK ),
1448
+ );
1449
+
1450
+ break;
1451
+
1452
+ // gd image extension resource
1453
+ case 'gd':
1454
+ $meta = array(
1455
+ 'size' => sprintf( '%d x %d', imagesx( $subject ), imagesy( $subject ) ),
1456
+ 'true_color' => imageistruecolor( $subject ),
1457
+ );
1458
+
1459
+ break;
1460
+
1461
+ case 'ldap link':
1462
+ $constants = get_defined_constants();
1463
+
1464
+ array_walk(
1465
+ $constants, function( $value, $key ) use ( &$constants ) {
1466
+ if ( strpos( $key, 'LDAP_OPT_' ) !== 0 ) {
1467
+ unset( $constants[ $key ] );
1468
+ }
1469
+ }
1470
+ );
1471
+
1472
+ // this seems to fail on my setup :(
1473
+ unset( $constants['LDAP_OPT_NETWORK_TIMEOUT'] );
1474
+
1475
+ foreach ( array_slice( $constants, 3 ) as $key => $value ) {
1476
+ if ( ldap_get_option( $subject, (int) $value, $ret ) ) {
1477
+ $meta[ strtolower( substr( $key, 9 ) ) ] = $ret;
1478
+ }
1479
+ }
1480
+
1481
+ break;
1482
+
1483
+ // mysql connection (mysql extension is deprecated from php 5.4/5.5)
1484
+ case 'mysql link':
1485
+ case 'mysql link persistent':
1486
+ $dbs = array();
1487
+ $query = @mysql_list_dbs( $subject );
1488
+ while ( $row = @mysql_fetch_array( $query ) ) {
1489
+ $dbs[] = $row['Database'];
1490
+ }
1491
+
1492
+ $meta = array(
1493
+ 'host' => ltrim( @mysql_get_host_info( $subject ), 'MySQL host info: ' ),
1494
+ 'server_version' => @mysql_get_server_info( $subject ),
1495
+ 'protocol_version' => @mysql_get_proto_info( $subject ),
1496
+ 'databases' => $dbs,
1497
+ );
1498
+
1499
+ break;
1500
+
1501
+ // mysql result
1502
+ case 'mysql result':
1503
+ while ( $row = @mysql_fetch_object( $subject ) ) {
1504
+ $meta[] = (array) $row;
1505
+
1506
+ if ( $this->hasInstanceTimedOut() ) {
1507
+ break;
1508
+ }
1509
+ }
1510
+
1511
+ break;
1512
+
1513
+ // stream resource (fopen, fsockopen, popen, opendir etc)
1514
+ case 'stream':
1515
+ $meta = stream_get_meta_data( $subject );
1516
+ break;
1517
+
1518
+ }
1519
+
1520
+ if ( ! $meta ) {
1521
+ return $this->fmt->emptyGroup( $resType );
1522
+ }
1523
+
1524
+ if ( ! $this->fmt->startGroup( $resType ) ) {
1525
+ return;
1526
+ }
1527
+
1528
+ $max = max( array_map( 'static::strLen', array_keys( $meta ) ) );
1529
+ foreach ( $meta as $key => $value ) {
1530
+ $this->fmt->startRow();
1531
+ $this->fmt->text( 'resourceProp', ucwords( str_replace( '_', ' ', $key ) ) );
1532
+ $this->fmt->colDiv( $max - static::strLen( $key ) );
1533
+ $this->fmt->sep( ':' );
1534
+ $this->fmt->colDiv();
1535
+ $this->evaluate( $value );
1536
+ $this->fmt->endRow();
1537
+ }
1538
+ $this->fmt->endGroup();
1539
+ return;
1540
+
1541
+ // string
1542
+ case 'string':
1543
+ $length = static::strLen( $subject );
1544
+ $encoding = static::$env['mbStr'] ? mb_detect_encoding( $subject ) : false;
1545
+ $info = $encoding && ($encoding !== 'ASCII') ? $length . '; ' . $encoding : $length;
1546
+
1547
+ if ( $specialStr ) {
1548
+ $this->fmt->sep( '"' );
1549
+ $this->fmt->text( array( 'string', 'special' ), $subject, "string({$info})" );
1550
+ $this->fmt->sep( '"' );
1551
+ return;
1552
+ }
1553
+
1554
+ $this->fmt->text( 'string', $subject, "string({$info})" );
1555
+
1556
+ // advanced checks only if there are 3 characteres or more
1557
+ if ( static::$config['showStringMatches'] && ($length > 2) && (trim( $subject ) !== '') ) {
1558
+
1559
+ $isNumeric = is_numeric( $subject );
1560
+
1561
+ // very simple check to determine if the string could match a file path
1562
+ // @note: this part of the code is very expensive
1563
+ $isFile = ($length < 2048)
1564
+ && (max( array_map( 'strlen', explode( '/', str_replace( '\\', '/', $subject ) ) ) ) < 128)
1565
+ && ! preg_match( '/[^\w\.\-\/\\\\:]|\..*\.|\.$|:(?!(?<=^[a-zA-Z]:)[\/\\\\])/', $subject );
1566
+
1567
+ if ( $isFile ) {
1568
+ try {
1569
+ $file = new \SplFileInfo( $subject );
1570
+ $flags = array();
1571
+ $perms = $file->getPerms();
1572
+
1573
+ if ( ($perms & 0xC000) === 0xC000 ) { // socket
1574
+ $flags[] = 's';
1575
+ } elseif ( ($perms & 0xA000) === 0xA000 ) { // symlink
1576
+ $flags[] = 'l';
1577
+ } elseif ( ($perms & 0x8000) === 0x8000 ) { // regular
1578
+ $flags[] = '-';
1579
+ } elseif ( ($perms & 0x6000) === 0x6000 ) { // block special
1580
+ $flags[] = 'b';
1581
+ } elseif ( ($perms & 0x4000) === 0x4000 ) { // directory
1582
+ $flags[] = 'd';
1583
+ } elseif ( ($perms & 0x2000) === 0x2000 ) { // character special
1584
+ $flags[] = 'c';
1585
+ } elseif ( ($perms & 0x1000) === 0x1000 ) { // FIFO pipe
1586
+ $flags[] = 'p';
1587
+ } else { // unknown
1588
+ $flags[] = 'u';
1589
+ }
1590
+
1591
+ // owner
1592
+ $flags[] = (($perms & 0x0100) ? 'r' : '-');
1593
+ $flags[] = (($perms & 0x0080) ? 'w' : '-');
1594
+ $flags[] = (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-'));
1595
+
1596
+ // group
1597
+ $flags[] = (($perms & 0x0020) ? 'r' : '-');
1598
+ $flags[] = (($perms & 0x0010) ? 'w' : '-');
1599
+ $flags[] = (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-'));
1600
+
1601
+ // world
1602
+ $flags[] = (($perms & 0x0004) ? 'r' : '-');
1603
+ $flags[] = (($perms & 0x0002) ? 'w' : '-');
1604
+ $flags[] = (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-'));
1605
+
1606
+ $size = is_dir( $subject ) ? '' : sprintf( ' %.2fK', $file->getSize() / 1024 );
1607
+
1608
+ $this->fmt->startContain( 'file', true );
1609
+ $this->fmt->text( 'file', implode( '', $flags ) . $size );
1610
+ $this->fmt->endContain();
1611
+
1612
+ } catch ( \Exception $e ) {
1613
+ $isFile = false;
1614
+ }
1615
+ }
1616
+
1617
+ // class/interface/function
1618
+ if ( ! preg_match( '/[^\w+\\\\]/', $subject ) && ($length < 96) ) {
1619
+ $isClass = class_exists( $subject, false );
1620
+ if ( $isClass ) {
1621
+ $this->fmt->startContain( 'class', true );
1622
+ $this->fromReflector( new \ReflectionClass( $subject ) );
1623
+ $this->fmt->endContain();
1624
+ }
1625
+
1626
+ if ( ! $isClass && interface_exists( $subject, false ) ) {
1627
+ $this->fmt->startContain( 'interface', true );
1628
+ $this->fromReflector( new \ReflectionClass( $subject ) );
1629
+ $this->fmt->endContain( 'interface' );
1630
+ }
1631
+
1632
+ if ( function_exists( $subject ) ) {
1633
+ $this->fmt->startContain( 'function', true );
1634
+ $this->fromReflector( new \ReflectionFunction( $subject ) );
1635
+ $this->fmt->endContain( 'function' );
1636
+ }
1637
+ }
1638
+
1639
+ // skip serialization/json/date checks if the string appears to be numeric,
1640
+ // or if it's shorter than 5 characters
1641
+ if ( ! $isNumeric && ($length > 4) ) {
1642
+
1643
+ // url
1644
+ if ( static::$config['showUrls'] && static::$env['curlActive'] && filter_var( $subject, FILTER_VALIDATE_URL ) ) {
1645
+ $ch = curl_init( $subject );
1646
+ curl_setopt( $ch, CURLOPT_NOBODY, true );
1647
+ curl_exec( $ch );
1648
+ $nfo = curl_getinfo( $ch );
1649
+ curl_close( $ch );
1650
+
1651
+ if ( $nfo['http_code'] ) {
1652
+ $this->fmt->startContain( 'url', true );
1653
+ $contentType = explode( ';', $nfo['content_type'] );
1654
+ $this->fmt->text( 'url', sprintf( '%s:%d %s %.2fms (%d)', ! empty( $nfo['primary_ip'] ) ? $nfo['primary_ip'] : null, ! empty( $nfo['primary_port'] ) ? $nfo['primary_port'] : null, $contentType[0], $nfo['total_time'], $nfo['http_code'] ) );
1655
+ $this->fmt->endContain();
1656
+ }
1657
+ }
1658
+
1659
+ // date
1660
+ if ( ($length < 128) && static::$env['supportsDate'] && ! preg_match( '/[^A-Za-z0-9.:+\s\-\/]/', $subject ) ) {
1661
+ try {
1662
+ $date = new \DateTime( $subject );
1663
+ $errors = \DateTime::getLastErrors();
1664
+
1665
+ if ( ($errors['warning_count'] < 1) && ($errors['error_count'] < 1) ) {
1666
+ $now = new \Datetime( 'now' );
1667
+ $nowUtc = new \Datetime( 'now', new \DateTimeZone( 'UTC' ) );
1668
+ $diff = $now->diff( $date );
1669
+
1670
+ $map = array(
1671
+ 'y' => 'yr',
1672
+ 'm' => 'mo',
1673
+ 'd' => 'da',
1674
+ 'h' => 'hr',
1675
+ 'i' => 'min',
1676
+ 's' => 'sec',
1677
+ );
1678
+
1679
+ $timeAgo = 'now';
1680
+ foreach ( $map as $k => $label ) {
1681
+ if ( $diff->{$k} > 0 ) {
1682
+ $timeAgo = $diff->format( "%R%{$k}{$label}" );
1683
+ break;
1684
+ }
1685
+ }
1686
+
1687
+ $tz = $date->getTimezone();
1688
+ $offs = round( $tz->getOffset( $nowUtc ) / 3600 );
1689
+
1690
+ if ( $offs > 0 ) {
1691
+ $offs = "+{$offs}";
1692
+ }
1693
+
1694
+ $timeAgo .= ( (int) $offs !== 0) ? ' ' . sprintf( '%s (UTC%s)', $tz->getName(), $offs ) : ' UTC';
1695
+ $this->fmt->startContain( 'date', true );
1696
+ $this->fmt->text( 'date', $timeAgo );
1697
+ $this->fmt->endContain();
1698
+
1699
+ }
1700
+ } catch ( \Exception $e ) {
1701
+ // not a date
1702
+ }
1703
+ }
1704
+
1705
+ // attempt to detect if this is a serialized string
1706
+ static $unserializing = 0;
1707
+ $isSerialized = ($unserializing < 3)
1708
+ && (($subject[ $length - 1 ] === ';') || ($subject[ $length - 1 ] === '}'))
1709
+ && in_array( $subject[0], array( 's', 'a', 'O' ), true )
1710
+ && ((($subject[0] === 's') && ($subject[ $length - 2 ] !== '"')) || preg_match( "/^{$subject[0]}:[0-9]+:/s", $subject ))
1711
+ && (($unserialized = @unserialize( $subject )) !== false);
1712
+
1713
+ if ( $isSerialized ) {
1714
+ $unserializing++;
1715
+ $this->fmt->startContain( 'serialized', true );
1716
+ $this->evaluate( $unserialized );
1717
+ $this->fmt->endContain();
1718
+ $unserializing--;
1719
+ }
1720
+
1721
+ // try to find out if it's a json-encoded string;
1722
+ // only do this for json-encoded arrays or objects, because other types have too generic formats
1723
+ static $decodingJson = 0;
1724
+ $isJson = ! $isSerialized && ($decodingJson < 3) && in_array( $subject[0], array( '{', '[' ), true );
1725
+
1726
+ if ( $isJson ) {
1727
+ $decodingJson++;
1728
+ $data = json_decode( $subject );
1729
+
1730
+ // ensure created objects live enough for PHP to provide a unique hash
1731
+ if ( is_object( $data ) ) {
1732
+ $this->intObjects->attach( $data );
1733
+ }
1734
+
1735
+ if ( $isJson = (json_last_error() === JSON_ERROR_NONE) ) {
1736
+ $this->fmt->startContain( 'json', true );
1737
+ $this->evaluate( $data );
1738
+ $this->fmt->endContain();
1739
+ }
1740
+
1741
+ $decodingJson--;
1742
+ }
1743
+
1744
+ // attempt to match a regex
1745
+ if ( ! $isSerialized && ! $isJson && $length < 768 ) {
1746
+ try {
1747
+ $components = $this->splitRegex( $subject );
1748
+ if ( $components ) {
1749
+ $regex = '';
1750
+
1751
+ $this->fmt->startContain( 'regex', true );
1752
+ foreach ( $components as $component ) {
1753
+ $this->fmt->text( 'regex-' . key( $component ), reset( $component ) );
1754
+ }
1755
+ $this->fmt->endContain();
1756
+ }
1757
+ } catch ( \Exception $e ) {
1758
+ // not a regex
1759
+ }
1760
+ }
1761
+ }
1762
+ }
1763
+
1764
+ return;
1765
+ }
1766
+
1767
+ // if we reached this point, $subject must be an object
1768
+ // track objects to detect recursion
1769
+ static $hashes = array();
1770
+
1771
+ // hash ID of this object
1772
+ $hash = spl_object_hash( $subject );
1773
+ $recursion = isset( $hashes[ $hash ] );
1774
+
1775
+ // sometimes incomplete objects may be created from string unserialization,
1776
+ // if the class to which the object belongs wasn't included until the unserialization stage...
1777
+ if ( $subject instanceof \__PHP_Incomplete_Class ) {
1778
+ $this->fmt->text( 'object' );
1779
+ $this->fmt->emptyGroup( 'incomplete' );
1780
+ return;
1781
+ }
1782
+
1783
+ // check cache at this point
1784
+ if ( ! $recursion && $this->fmt->didCache( $hash ) ) {
1785
+ static::$debug['cacheHits']++;
1786
+ return;
1787
+ }
1788
+
1789
+ $reflector = new \ReflectionObject( $subject );
1790
+ $this->fmt->startContain( 'class' );
1791
+ $this->fromReflector( $reflector );
1792
+ $this->fmt->text( 'object', ' object' );
1793
+ $this->fmt->endContain();
1794
+
1795
+ // already been here?
1796
+ if ( $recursion ) {
1797
+ return $this->fmt->emptyGroup( 'recursion' );
1798
+ }
1799
+
1800
+ $hashes[ $hash ] = 1;
1801
+
1802
+ $flags = \ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED;
1803
+
1804
+ if ( static::$config['showPrivateMembers'] ) {
1805
+ $flags |= \ReflectionProperty::IS_PRIVATE;
1806
+ }
1807
+
1808
+ $props = $magicProps = $methods = array();
1809
+
1810
+ if ( $reflector->hasMethod( '__debugInfo' ) ) {
1811
+ $magicProps = $subject->__debugInfo();
1812
+ } else {
1813
+ $props = $reflector->getProperties( $flags );
1814
+ }
1815
+
1816
+ if ( static::$config['showMethods'] ) {
1817
+ $flags = \ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED;
1818
+
1819
+ if ( static::$config['showPrivateMembers'] ) {
1820
+ $flags |= \ReflectionMethod::IS_PRIVATE;
1821
+ }
1822
+
1823
+ $methods = $reflector->getMethods( $flags );
1824
+ }
1825
+
1826
+ $constants = $reflector->getConstants();
1827
+ $interfaces = $reflector->getInterfaces();
1828
+ $traits = static::$env['is54'] ? $reflector->getTraits() : array();
1829
+ $parents = static::getParentClasses( $reflector );
1830
+
1831
+ // work-around for https://bugs.php.net/bug.php?id=49154
1832
+ // @see http://stackoverflow.com/questions/15672287/strange-behavior-of-reflectiongetproperties-with-numeric-keys
1833
+ if ( ! static::$env['is54'] ) {
1834
+ $props = array_values(
1835
+ array_filter(
1836
+ $props, function( $prop ) use ( $subject ) {
1837
+ return ! $prop->isPublic() || property_exists( $subject, $prop->name );
1838
+ }
1839
+ )
1840
+ );
1841
+ }
1842
+
1843
+ // no data to display?
1844
+ if ( ! $props && ! $methods && ! $constants && ! $interfaces && ! $traits ) {
1845
+ unset( $hashes[ $hash ] );
1846
+ return $this->fmt->emptyGroup();
1847
+ }
1848
+
1849
+ if ( ! $this->fmt->startGroup() ) {
1850
+ return;
1851
+ }
1852
+
1853
+ // show contents for iterators
1854
+ if ( static::$config['showIteratorContents'] && $reflector->isIterateable() ) {
1855
+
1856
+ $itContents = iterator_to_array( $subject );
1857
+ $this->fmt->sectionTitle( sprintf( 'Contents (%d)', count( $itContents ) ) );
1858
+
1859
+ foreach ( $itContents as $key => $value ) {
1860
+ $keyInfo = gettype( $key );
1861
+ if ( $keyInfo === 'string' ) {
1862
+ $encoding = static::$env['mbStr'] ? mb_detect_encoding( $key ) : '';
1863
+ $length = $encoding && ($encoding !== 'ASCII') ? static::strLen( $key ) . '; ' . $encoding : static::strLen( $key );
1864
+ $keyInfo = sprintf( '%s(%s)', $keyInfo, $length );
1865
+ }
1866
+
1867
+ $this->fmt->startRow();
1868
+ $this->fmt->text( array( 'key', 'iterator' ), $key, sprintf( 'Iterator key: %s', $keyInfo ) );
1869
+ $this->fmt->colDiv();
1870
+ $this->fmt->sep( '=>' );
1871
+ $this->fmt->colDiv();
1872
+ $this->evaluate( $value );
1873
+ // $this->evaluate($value instanceof \Traversable ? ((count($value) > 0) ? $value : (string)$value) : $value);
1874
+ $this->fmt->endRow();
1875
+ }
1876
+ }
1877
+
1878
+ // display the interfaces this objects' class implements
1879
+ if ( $interfaces ) {
1880
+ $items = array();
1881
+ $this->fmt->sectionTitle( 'Implements' );
1882
+ $this->fmt->startRow();
1883
+ $this->fmt->startContain( 'interfaces' );
1884
+
1885
+ $i = 0;
1886
+ $count = count( $interfaces );
1887
+
1888
+ foreach ( $interfaces as $name => $interface ) {
1889
+ $this->fromReflector( $interface );
1890
+
1891
+ if ( ++$i < $count ) {
1892
+ $this->fmt->sep( ', ' );
1893
+ }
1894
+ }
1895
+
1896
+ $this->fmt->endContain();
1897
+ $this->fmt->endRow();
1898
+ }
1899
+
1900
+ // traits this objects' class uses
1901
+ if ( $traits ) {
1902
+ $items = array();
1903
+ $this->fmt->sectionTitle( 'Uses' );
1904
+ $this->fmt->startRow();
1905
+ $this->fmt->startContain( 'traits' );
1906
+
1907
+ $i = 0;
1908
+ $count = count( $traits );
1909
+
1910
+ foreach ( $traits as $name => $trait ) {
1911
+ $this->fromReflector( $trait );
1912
+
1913
+ if ( ++$i < $count ) {
1914
+ $this->fmt->sep( ', ' );
1915
+ }
1916
+ }
1917
+
1918
+ $this->fmt->endContain();
1919
+ $this->fmt->endRow();
1920
+ }
1921
+
1922
+ // class constants
1923
+ if ( $constants ) {
1924
+ $this->fmt->sectionTitle( 'Constants' );
1925
+ $max = max( array_map( 'static::strLen', array_keys( $constants ) ) );
1926
+ foreach ( $constants as $name => $value ) {
1927
+ $meta = null;
1928
+ $type = array( 'const' );
1929
+ foreach ( $parents as $parent ) {
1930
+ if ( $parent->hasConstant( $name ) ) {
1931
+ if ( $parent !== $reflector ) {
1932
+ $type[] = 'inherited';
1933
+ $meta = array(
1934
+ 'sub' => array( array( 'Prototype defined by', $parent->name ) ),
1935
+ );
1936
+ }
1937
+ break;
1938
+ }
1939
+ }
1940
+
1941
+ $this->fmt->startRow();
1942
+ $this->fmt->sep( '::' );
1943
+ $this->fmt->colDiv();
1944
+ $this->fmt->startContain( $type );
1945
+ $this->fmt->text( 'name', $name, $meta, $this->linkify( $parent, $name ) );
1946
+ $this->fmt->endContain();
1947
+ $this->fmt->colDiv( $max - static::strLen( $name ) );
1948
+ $this->fmt->sep( '=' );
1949
+ $this->fmt->colDiv();
1950
+ $this->evaluate( $value );
1951
+ $this->fmt->endRow();
1952
+ }
1953
+ }
1954
+
1955
+ // object/class properties
1956
+ if ( $props ) {
1957
+ $this->fmt->sectionTitle( 'Properties' );
1958
+
1959
+ $max = 0;
1960
+ foreach ( $props as $idx => $prop ) {
1961
+ if ( ($propNameLen = static::strLen( $prop->name )) > $max ) {
1962
+ $max = $propNameLen;
1963
+ }
1964
+ }
1965
+
1966
+ foreach ( $props as $idx => $prop ) {
1967
+
1968
+ if ( $this->hasInstanceTimedOut() ) {
1969
+ break;
1970
+ }
1971
+
1972
+ $bubbles = array();
1973
+ $sourceClass = $prop->getDeclaringClass();
1974
+ $inherited = $reflector->getShortName() !== $sourceClass->getShortName();
1975
+ $meta = $sourceClass->isInternal() ? null : static::parseComment( $prop->getDocComment() );
1976
+
1977
+ if ( $meta ) {
1978
+ if ( $inherited ) {
1979
+ $meta['sub'] = array( array( 'Declared in', $sourceClass->getShortName() ) );
1980
+ }
1981
+
1982
+ if ( isset( $meta['tags']['var'][0] ) ) {
1983
+ $meta['left'] = $meta['tags']['var'][0][0];
1984
+ }
1985
+
1986
+ unset( $meta['tags'] );
1987
+ }
1988
+
1989
+ if ( $prop->isProtected() || $prop->isPrivate() ) {
1990
+ $prop->setAccessible( true );
1991
+ }
1992
+
1993
+ $value = $prop->getValue( $subject );
1994
+
1995
+ $this->fmt->startRow();
1996
+ $this->fmt->sep( $prop->isStatic() ? '::' : '->' );
1997
+ $this->fmt->colDiv();
1998
+
1999
+ $bubbles = array();
2000
+ if ( $prop->isProtected() ) {
2001
+ $bubbles[] = array( 'P', 'Protected' );
2002
+ }
2003
+
2004
+ if ( $prop->isPrivate() ) {
2005
+ $bubbles[] = array( '!', 'Private' );
2006
+ }
2007
+
2008
+ $this->fmt->bubbles( $bubbles );
2009
+
2010
+ $type = array( 'prop' );
2011
+
2012
+ if ( $inherited ) {
2013
+ $type[] = 'inherited';
2014
+ }
2015
+
2016
+ if ( $prop->isPrivate() ) {
2017
+ $type[] = 'private';
2018
+ }
2019
+
2020
+ $this->fmt->colDiv( 2 - count( $bubbles ) );
2021
+ $this->fmt->startContain( $type );
2022
+ $this->fmt->text( 'name', $prop->name, $meta, $this->linkify( $prop ) );
2023
+ $this->fmt->endContain();
2024
+ $this->fmt->colDiv( $max - static::strLen( $prop->name ) );
2025
+ $this->fmt->sep( '=' );
2026
+ $this->fmt->colDiv();
2027
+ $this->evaluate( $value );
2028
+ $this->fmt->endRow();
2029
+ }
2030
+ }
2031
+
2032
+ // __debugInfo()
2033
+ if ( $magicProps ) {
2034
+ $this->fmt->sectionTitle( 'Properties (magic)' );
2035
+
2036
+ $max = 0;
2037
+ foreach ( $magicProps as $name => $value ) {
2038
+ if ( ($propNameLen = static::strLen( $name )) > $max ) {
2039
+ $max = $propNameLen;
2040
+ }
2041
+ }
2042
+
2043
+ foreach ( $magicProps as $name => $value ) {
2044
+
2045
+ if ( $this->hasInstanceTimedOut() ) {
2046
+ break;
2047
+ }
2048
+
2049
+ // attempt to pull out doc comment from the "regular" property definition
2050
+ try {
2051
+ $prop = $reflector->getProperty( $name );
2052
+ $meta = static::parseComment( $prop->getDocComment() );
2053
+
2054
+ } catch ( \Exception $e ) {
2055
+ $meta = null;
2056
+ }
2057
+
2058
+ $this->fmt->startRow();
2059
+ $this->fmt->sep( '->' );
2060
+ $this->fmt->colDiv();
2061
+
2062
+ $type = array( 'prop' );
2063
+
2064
+ $this->fmt->startContain( $type );
2065
+ $this->fmt->text( 'name', $name, $meta );
2066
+ $this->fmt->endContain();
2067
+ $this->fmt->colDiv( $max - static::strLen( $name ) );
2068
+ $this->fmt->sep( '=' );
2069
+ $this->fmt->colDiv();
2070
+ $this->evaluate( $value );
2071
+ $this->fmt->endRow();
2072
+ }
2073
+ }
2074
+
2075
+ // class methods
2076
+ if ( $methods && ! $this->hasInstanceTimedOut() ) {
2077
+
2078
+ $this->fmt->sectionTitle( 'Methods' );
2079
+ foreach ( $methods as $idx => $method ) {
2080
+
2081
+ $this->fmt->startRow();
2082
+ $this->fmt->sep( $method->isStatic() ? '::' : '->' );
2083
+ $this->fmt->colDiv();
2084
+
2085
+ $bubbles = array();
2086
+ if ( $method->isAbstract() ) {
2087
+ $bubbles[] = array( 'A', 'Abstract' );
2088
+ }
2089
+
2090
+ if ( $method->isFinal() ) {
2091
+ $bubbles[] = array( 'F', 'Final' );
2092
+ }
2093
+
2094
+ if ( $method->isProtected() ) {
2095
+ $bubbles[] = array( 'P', 'Protected' );
2096
+ }
2097
+
2098
+ if ( $method->isPrivate() ) {
2099
+ $bubbles[] = array( '!', 'Private' );
2100
+ }
2101
+
2102
+ $this->fmt->bubbles( $bubbles );
2103
+
2104
+ $this->fmt->colDiv( 4 - count( $bubbles ) );
2105
+
2106
+ // is this method inherited?
2107
+ $inherited = $reflector->getShortName() !== $method->getDeclaringClass()->getShortName();
2108
+
2109
+ $type = array( 'method' );
2110
+
2111
+ if ( $inherited ) {
2112
+ $type[] = 'inherited';
2113
+ }
2114
+
2115
+ if ( $method->isPrivate() ) {
2116
+ $type[] = 'private';
2117
+ }
2118
+
2119
+ $this->fmt->startContain( $type );
2120
+
2121
+ $name = $method->name;
2122
+ if ( $method->returnsReference() ) {
2123
+ $name = "&{$name}";
2124
+ }
2125
+
2126
+ $this->fromReflector( $method, $name, $reflector );
2127
+
2128
+ $paramCom = $method->isInternal() ? array() : static::parseComment( $method->getDocComment(), 'tags' );
2129
+ $paramCom = empty( $paramCom['param'] ) ? array() : $paramCom['param'];
2130
+ $paramCount = $method->getNumberOfParameters();
2131
+
2132
+ $this->fmt->sep( '(' );
2133
+
2134
+ // process arguments
2135
+ foreach ( $method->getParameters() as $idx => $parameter ) {
2136
+ $meta = null;
2137
+ $paramName = "\${$parameter->name}";
2138
+ $optional = $parameter->isOptional();
2139
+ $variadic = static::$env['is56'] && $parameter->isVariadic();
2140
+
2141
+ if ( $parameter->isPassedByReference() ) {
2142
+ $paramName = "&{$paramName}";
2143
+ }
2144
+
2145
+ if ( $variadic ) {
2146
+ $paramName = "...{$paramName}";
2147
+ }
2148
+
2149
+ $type = array( 'param' );
2150
+
2151
+ if ( $optional ) {
2152
+ $type[] = 'optional';
2153
+ }
2154
+
2155
+ $this->fmt->startContain( $type );
2156
+
2157
+ // attempt to build meta
2158
+ foreach ( $paramCom as $tag ) {
2159
+ list($pcTypes, $pcName, $pcDescription) = $tag;
2160
+ if ( $pcName !== $paramName ) {
2161
+ continue;
2162
+ }
2163
+
2164
+ $meta = array(
2165
+ 'title' => $pcDescription,
2166
+ );
2167
+
2168
+ if ( $pcTypes ) {
2169
+ $meta['left'] = $pcTypes;
2170
+ }
2171
+
2172
+ break;
2173
+ }
2174
+
2175
+ try {
2176
+ $paramClass = $parameter->getClass();
2177
+ } catch ( \Exception $e ) {
2178
+ // @see https://bugs.php.net/bug.php?id=32177&edit=1
2179
+ }
2180
+
2181
+ if ( ! empty( $paramClass ) ) {
2182
+ $this->fmt->startContain( 'hint' );
2183
+ $this->fromReflector( $paramClass, $paramClass->name );
2184
+ $this->fmt->endContain();
2185
+ $this->fmt->sep( ' ' );
2186
+
2187
+ } elseif ( $parameter->isArray() ) {
2188
+ $this->fmt->text( 'hint', 'array' );
2189
+ $this->fmt->sep( ' ' );
2190
+
2191
+ } else {
2192
+ $hasType = static::$env['is7'] && $parameter->hasType();
2193
+ if ( $hasType ) {
2194
+ $type = $parameter->getType();
2195
+ $this->fmt->text( 'hint', (string) $type );
2196
+ $this->fmt->sep( ' ' );
2197
+ }
2198
+ }
2199
+
2200
+ $this->fmt->text( 'name', $paramName, $meta );
2201
+
2202
+ if ( $optional ) {
2203
+ $paramValue = $parameter->isDefaultValueAvailable() ? $parameter->getDefaultValue() : null;
2204
+ if ( $paramValue !== null ) {
2205
+ $this->fmt->sep( ' = ' );
2206
+
2207
+ if ( static::$env['is546'] && ! $parameter->getDeclaringFunction()->isInternal() && $parameter->isDefaultValueConstant() ) {
2208
+ $this->fmt->text( 'constant', $parameter->getDefaultValueConstantName(), 'Constant' );
2209
+
2210
+ } else {
2211
+ $this->evaluate( $paramValue, true );
2212
+ }
2213
+ }
2214
+ }
2215
+
2216
+ $this->fmt->endContain();
2217
+
2218
+ if ( $idx < $paramCount - 1 ) {
2219
+ $this->fmt->sep( ', ' );
2220
+ }
2221
+ }
2222
+ $this->fmt->sep( ')' );
2223
+ $this->fmt->endContain();
2224
+
2225
+ $hasReturnType = static::$env['is7'] && $method->hasReturnType();
2226
+ if ( $hasReturnType ) {
2227
+ $type = $method->getReturnType();
2228
+ $this->fmt->startContain( 'ret' );
2229
+ $this->fmt->sep( ':' );
2230
+ $this->fmt->text( 'hint', (string) $type );
2231
+ $this->fmt->endContain();
2232
+ }
2233
+
2234
+ $this->fmt->endRow();
2235
+ }
2236
+ }
2237
+
2238
+ unset( $hashes[ $hash ] );
2239
+ $this->fmt->endGroup();
2240
+
2241
+ $this->fmt->cacheLock( $hash );
2242
+ }
2243
+
2244
+
2245
+
2246
+ /**
2247
+ * Scans for known classes and functions inside the provided expression,
2248
+ * and linkifies them when possible
2249
+ *
2250
+ * @param string $expression Expression to format
2251
+ * @return string Formatted output
2252
+ */
2253
+ protected function evaluateExp( $expression = null ) {
2254
+
2255
+ if ( $expression === null ) {
2256
+ return;
2257
+ }
2258
+
2259
+ if ( static::strLen( $expression ) > 120 ) {
2260
+ $expression = substr( $expression, 0, 120 ) . '...';
2261
+ }
2262
+
2263
+ $this->fmt->sep( '> ' );
2264
+
2265
+ if ( strpos( $expression, '(' ) === false ) {
2266
+ return $this->fmt->text( 'expTxt', $expression );
2267
+ }
2268
+
2269
+ $keywords = array_map( 'trim', explode( '(', $expression, 2 ) );
2270
+ $parts = array();
2271
+
2272
+ // try to find out if this is a function
2273
+ try {
2274
+ $reflector = new \ReflectionFunction( $keywords[0] );
2275
+ $parts[] = array( $keywords[0], $reflector, '' );
2276
+
2277
+ } catch ( \Exception $e ) {
2278
+
2279
+ if ( stripos( $keywords[0], 'new ' ) === 0 ) {
2280
+ $cn = explode( ' ' , $keywords[0], 2 );
2281
+
2282
+ // linkify 'new keyword' (as constructor)
2283
+ try {
2284
+ $reflector = new \ReflectionMethod( $cn[1], '__construct' );
2285
+ $parts[] = array( $cn[0], $reflector, '' );
2286
+
2287
+ } catch ( \Exception $e ) {
2288
+ $reflector = null;
2289
+ $parts[] = $cn[0];
2290
+ }
2291
+
2292
+ // class name...
2293
+ try {
2294
+ $reflector = new \ReflectionClass( $cn[1] );
2295
+ $parts[] = array( $cn[1], $reflector, ' ' );
2296
+
2297
+ } catch ( \Exception $e ) {
2298
+ $reflector = null;
2299
+ $parts[] = $cn[1];
2300
+ }
2301
+ } else {
2302
+
2303
+ // we can only linkify methods called statically
2304
+ if ( strpos( $keywords[0], '::' ) === false ) {
2305
+ return $this->fmt->text( 'expTxt', $expression );
2306
+ }
2307
+
2308
+ $cn = explode( '::', $keywords[0], 2 );
2309
+
2310
+ // attempt to linkify class name
2311
+ try {
2312
+ $reflector = new \ReflectionClass( $cn[0] );
2313
+ $parts[] = array( $cn[0], $reflector, '' );
2314
+
2315
+ } catch ( \Exception $e ) {
2316
+ $reflector = null;
2317
+ $parts[] = $cn[0];
2318
+ }
2319
+
2320
+ // perhaps it's a static class method; try to linkify method
2321
+ try {
2322
+ $reflector = new \ReflectionMethod( $cn[0], $cn[1] );
2323
+ $parts[] = array( $cn[1], $reflector, '::' );
2324
+
2325
+ } catch ( \Exception $e ) {
2326
+ $reflector = null;
2327
+ $parts[] = $cn[1];
2328
+ }
2329
+ }
2330
+ }
2331
+
2332
+ $parts[] = "({$keywords[1]}";
2333
+
2334
+ foreach ( $parts as $element ) {
2335
+ if ( ! is_array( $element ) ) {
2336
+ $this->fmt->text( 'expTxt', $element );
2337
+ continue;
2338
+ }
2339
+
2340
+ list($text, $reflector, $prefix) = $element;
2341
+
2342
+ if ( $prefix !== '' ) {
2343
+ $this->fmt->text( 'expTxt', $prefix );
2344
+ }
2345
+
2346
+ $this->fromReflector( $reflector, $text );
2347
+ }
2348
+
2349
+ }
2350
+
2351
+
2352
+
2353
+ /**
2354
+ * Calculates real string length
2355
+ *
2356
+ * @param string $string
2357
+ * @return int
2358
+ */
2359
+ protected static function strLen( $string ) {
2360
+ $encoding = function_exists( 'mb_detect_encoding' ) ? mb_detect_encoding( $string ) : false;
2361
+ return $encoding ? mb_strlen( $string, $encoding ) : strlen( $string );
2362
+ }
2363
+
2364
+
2365
+
2366
+ /**
2367
+ * Safe str_pad alternative
2368
+ *
2369
+ * @param string $string
2370
+ * @param int $padLen
2371
+ * @param string $padStr
2372
+ * @param int $padType
2373
+ * @return string
2374
+ */
2375
+ protected static function strPad( $input, $padLen, $padStr = ' ', $padType = STR_PAD_RIGHT ) {
2376
+ $diff = strlen( $input ) - static::strLen( $input );
2377
+ return str_pad( $input, $padLen + $diff, $padStr, $padType );
2378
+ }
2379
+
2380
+ }
2381
+
2382
+
2383
+
2384
+ /**
2385
+ * Formatter abstraction
2386
+ */
2387
+ abstract class RFormatter {
2388
+
2389
+ /**
2390
+ * Flush output and send contents to the output device
2391
+ */
2392
+ abstract public function flush();
2393
+
2394
+ /**
2395
+ * Generate a base entity
2396
+ *
2397
+ * @param string|array $type
2398
+ * @param string|null $text
2399
+ * @param string|array|null $meta
2400
+ * @param string|null $uri
2401
+ */
2402
+ abstract public function text( $type, $text = null, $meta = null, $uri = null);
2403
+
2404
+ /**
2405
+ * Generate container start token
2406
+ *
2407
+ * @param string|array $type
2408
+ * @param string|bool $label
2409
+ */
2410
+ public function startContain( $type, $label = false ) {}
2411
+
2412
+ /**
2413
+ * Generate container ending token
2414
+ */
2415
+ public function endContain(){}
2416
+
2417
+ /**
2418
+ * Generate empty group token
2419
+ *
2420
+ * @param string $prefix
2421
+ */
2422
+ public function emptyGroup( $prefix = '' ) {}
2423
+
2424
+ /**
2425
+ * Generate group start token
2426
+ *
2427
+ * This method must return boolean TRUE on success, false otherwise (eg. max depth reached).
2428
+ * The evaluator will skip this group on FALSE
2429
+ *
2430
+ * @param string $prefix
2431
+ * @return bool
2432
+ */
2433
+ public function startGroup( $prefix = '' ) {}
2434
+
2435
+ /**
2436
+ * Generate group ending token
2437
+ */
2438
+ public function endGroup(){}
2439
+
2440
+ /**
2441
+ * Generate section title
2442
+ *
2443
+ * @param string $title
2444
+ */
2445
+ public function sectionTitle( $title ) {}
2446
+
2447
+ /**
2448
+ * Generate row start token
2449
+ */
2450
+ public function startRow(){}
2451
+
2452
+ /**
2453
+ * Generate row ending token
2454
+ */
2455
+ public function endRow(){}
2456
+
2457
+ /**
2458
+ * Column divider (cell delimiter)
2459
+ *
2460
+ * @param int $padLen
2461
+ */
2462
+ public function colDiv( $padLen = null ) {}
2463
+
2464
+ /**
2465
+ * Generate modifier tokens
2466
+ *
2467
+ * @param array $items
2468
+ */
2469
+ public function bubbles( array $items ) {}
2470
+
2471
+ /**
2472
+ * Input expression start
2473
+ */
2474
+ public function startExp(){}
2475
+
2476
+ /**
2477
+ * Input expression end
2478
+ */
2479
+ public function endExp(){}
2480
+
2481
+ /**
2482
+ * Root starting token
2483
+ */
2484
+ public function startRoot(){}
2485
+
2486
+ /**
2487
+ * Root ending token
2488
+ */
2489
+ public function endRoot(){}
2490
+
2491
+ /**
2492
+ * Separator token
2493
+ *
2494
+ * @param string $label
2495
+ */
2496
+ public function sep( $label = ' ' ) {}
2497
+
2498
+ /**
2499
+ * Resolve cache request
2500
+ *
2501
+ * If the ID is not present in the cache, then a new cache entry is created
2502
+ * for the given ID, and string offsets are captured until cacheLock is called
2503
+ *
2504
+ * This method must return TRUE if the ID exists in the cache, and append the cached item
2505
+ * to the output, FALSE otherwise.
2506
+ *
2507
+ * @param string $id
2508
+ * @return bool
2509
+ */
2510
+ public function didCache( $id ) {
2511
+ return false;
2512
+ }
2513
+
2514
+ /**
2515
+ * Ends cache capturing for the given ID
2516
+ *
2517
+ * @param string $id
2518
+ */
2519
+ public function cacheLock( $id ) {}
2520
+
2521
+ }
2522
+
2523
+
2524
+
2525
+
2526
+ /**
2527
+ * Generates the output in HTML5 format
2528
+ */
2529
+ class RHtmlFormatter extends RFormatter {
2530
+
2531
+ protected
2532
+
2533
+ /**
2534
+ * Actual output
2535
+ *
2536
+ * @var string
2537
+ */
2538
+ $out = '',
2539
+
2540
+ /**
2541
+ * Tracks current nesting level
2542
+ *
2543
+ * @var int
2544
+ */
2545
+ $level = 0,
2546
+
2547
+ /**
2548
+ * Stores tooltip content for all entries
2549
+ *
2550
+ * To avoid having duplicate tooltip data in the HTML, we generate them once,
2551
+ * and use references (the Q index) to pull data when required;
2552
+ * this improves performance significantly
2553
+ *
2554
+ * @var array
2555
+ */
2556
+ $tips = array(),
2557
+
2558
+ /**
2559
+ * Used to cache output to speed up processing.
2560
+ *
2561
+ * Contains hashes as keys and string offsets as values.
2562
+ * Cached objects will not be processed again in the same query
2563
+ *
2564
+ * @var array
2565
+ */
2566
+ $cache = array(),
2567
+
2568
+ /**
2569
+ * Map of used HTML tag and attributes
2570
+ *
2571
+ * @var string
2572
+ */
2573
+ $def = array();
2574
+
2575
+
2576
+
2577
+ protected static
2578
+
2579
+ /**
2580
+ * Instance counter
2581
+ *
2582
+ * @var int
2583
+ */
2584
+ $counter = 0,
2585
+
2586
+ /**
2587
+ * Tracks style/jscript inclusion state
2588
+ *
2589
+ * @var bool
2590
+ */
2591
+ $didAssets = false;
2592
+
2593
+
2594
+ public function __construct() {
2595
+
2596
+ if ( WSAL_Ref::config( 'validHtml' ) ) {
2597
+
2598
+ $this->def = array(
2599
+ 'base' => 'span',
2600
+ 'tip' => 'div',
2601
+ 'cell' => 'data-cell',
2602
+ 'table' => 'data-table',
2603
+ 'row' => 'data-row',
2604
+ 'group' => 'data-group',
2605
+ 'gLabel' => 'data-gLabel',
2606
+ 'match' => 'data-match',
2607
+ 'tipRef' => 'data-tip',
2608
+ );
2609
+
2610
+ } else {
2611
+
2612
+ $this->def = array(
2613
+ 'base' => 'r',
2614
+ 'tip' => 't',
2615
+ 'cell' => 'c',
2616
+ 'table' => 't',
2617
+ 'row' => 'r',
2618
+ 'group' => 'g',
2619
+ 'gLabel' => 'gl',
2620
+ 'match' => 'm',
2621
+ 'tipRef' => 'h',
2622
+ );
2623
+
2624
+ }
2625
+
2626
+ }
2627
+
2628
+
2629
+
2630
+ public function flush() {
2631
+ print $this->out;
2632
+ $this->out = '';
2633
+ $this->cache = array();
2634
+ $this->tips = array();
2635
+ }
2636
+
2637
+
2638
+ public function didCache( $id ) {
2639
+
2640
+ if ( ! isset( $this->cache[ $id ] ) ) {
2641
+ $this->cache[ $id ] = array();
2642
+ $this->cache[ $id ][] = strlen( $this->out );
2643
+ return false;
2644
+ }
2645
+
2646
+ if ( ! isset( $this->cache[ $id ][1] ) ) {
2647
+ $this->cache[ $id ][0] = strlen( $this->out );
2648
+ return false;
2649
+ }
2650
+
2651
+ $this->out .= substr( $this->out, $this->cache[ $id ][0], $this->cache[ $id ][1] );
2652
+ return true;
2653
+ }
2654
+
2655
+ public function cacheLock( $id ) {
2656
+ $this->cache[ $id ][] = strlen( $this->out ) - $this->cache[ $id ][0];
2657
+ }
2658
+
2659
+
2660
+ public function sep( $label = ' ' ) {
2661
+ $this->out .= $label !== ' ' ? '<i>' . static::escape( $label ) . '</i>' : $label;
2662
+ }
2663
+
2664
+ public function text( $type, $text = null, $meta = null, $uri = null ) {
2665
+
2666
+ if ( ! is_array( $type ) ) {
2667
+ $type = (array) $type;
2668
+ }
2669
+
2670
+ $tip = '';
2671
+ $text = ($text !== null) ? static::escape( $text ) : static::escape( $type[0] );
2672
+
2673
+ if ( in_array( 'special', $type ) ) {
2674
+ $text = strtr(
2675
+ $text, array(
2676
+ "\r" => '<i>\r</i>', // carriage return
2677
+ "\t" => '<i>\t</i>', // horizontal tab
2678
+ "\n" => '<i>\n</i>', // linefeed (new line)
2679
+ "\v" => '<i>\v</i>', // vertical tab
2680
+ "\e" => '<i>\e</i>', // escape
2681
+ "\f" => '<i>\f</i>', // form feed
2682
+ "\0" => '<i>\0</i>',
2683
+ )
2684
+ );
2685
+ }
2686
+
2687
+ // generate tooltip reference (probably the slowest part of the code ;)
2688
+ if ( $meta !== null ) {
2689
+ $tipIdx = array_search( $meta, $this->tips, true );
2690
+
2691
+ if ( $tipIdx === false ) {
2692
+ $tipIdx = array_push( $this->tips, $meta ) - 1;
2693
+ }
2694
+
2695
+ $tip = " {$this->def['tipRef']}=\"{$tipIdx}\"";
2696
+ // $tip = sprintf('%s="%d"', $this->def['tipRef'], $tipIdx);
2697
+ }
2698
+
2699
+ // wrap text in a link?
2700
+ if ( $uri !== null ) {
2701
+ $text = '<a href="' . $uri . '" target="_blank">' . $text . '</a>';
2702
+ }
2703
+
2704
+ $typeStr = '';
2705
+ foreach ( $type as $part ) {
2706
+ $typeStr .= " data-{$part}";
2707
+ }
2708
+
2709
+ $this->out .= "<{$this->def['base']}{$typeStr}{$tip}>{$text}</{$this->def['base']}>";
2710
+ // $this->out .= sprintf('<%1$s%2$s %3$s>%4$s</%1$s>', $this->def['base'], $typeStr, $tip, $text);
2711
+ }
2712
+
2713
+ public function startContain( $type, $label = false ) {
2714
+
2715
+ if ( ! is_array( $type ) ) {
2716
+ $type = (array) $type;
2717
+ }
2718
+
2719
+ if ( $label ) {
2720
+ $this->out .= '<br>';
2721
+ }
2722
+
2723
+ $typeStr = '';
2724
+ foreach ( $type as $part ) {
2725
+ $typeStr .= " data-{$part}";
2726
+ }
2727
+
2728
+ $this->out .= "<{$this->def['base']}{$typeStr}>";
2729
+
2730
+ if ( $label ) {
2731
+ $this->out .= "<{$this->def['base']} {$this->def['match']}>{$type[0]}</{$this->def['base']}>";
2732
+ }
2733
+ }
2734
+
2735
+ public function endContain() {
2736
+ $this->out .= "</{$this->def['base']}>";
2737
+ }
2738
+
2739
+ public function emptyGroup( $prefix = '' ) {
2740
+
2741
+ if ( $prefix !== '' ) {
2742
+ $prefix = "<{$this->def['base']} {$this->def['gLabel']}>" . static::escape( $prefix ) . "</{$this->def['base']}>";
2743
+ }
2744
+
2745
+ $this->out .= "<i>(</i>{$prefix}<i>)</i>";
2746
+ }
2747
+
2748
+
2749
+ public function startGroup( $prefix = '' ) {
2750
+
2751
+ $maxDepth = WSAL_Ref::config( 'maxDepth' );
2752
+
2753
+ if ( ($maxDepth > 0) && (($this->level + 1) > $maxDepth) ) {
2754
+ $this->emptyGroup( '...' );
2755
+ return false;
2756
+ }
2757
+
2758
+ $this->level++;
2759
+
2760
+ $expLvl = WSAL_Ref::config( 'expLvl' );
2761
+ $exp = ($expLvl < 0) || (($expLvl > 0) && ($this->level <= $expLvl)) ? ' data-exp' : '';
2762
+
2763
+ if ( $prefix !== '' ) {
2764
+ $prefix = "<{$this->def['base']} {$this->def['gLabel']}>" . static::escape( $prefix ) . "</{$this->def['base']}>";
2765
+ }
2766
+
2767
+ $this->out .= "<i>(</i>{$prefix}<{$this->def['base']} data-toggle{$exp}></{$this->def['base']}><{$this->def['base']} {$this->def['group']}><{$this->def['base']} {$this->def['table']}>";
2768
+
2769
+ return true;
2770
+ }
2771
+
2772
+ public function endGroup() {
2773
+ $this->out .= "</{$this->def['base']}></{$this->def['base']}><i>)</i>";
2774
+ $this->level--;
2775
+ }
2776
+
2777
+ public function sectionTitle( $title ) {
2778
+ $this->out .= "</{$this->def['base']}><{$this->def['base']} data-tHead>{$title}</{$this->def['base']}><{$this->def['base']} {$this->def['table']}>";
2779
+ }
2780
+
2781
+ public function startRow() {
2782
+ $this->out .= "<{$this->def['base']} {$this->def['row']}><{$this->def['base']} {$this->def['cell']}>";
2783
+ }
2784
+
2785
+ public function endRow() {
2786
+ $this->out .= "</{$this->def['base']}></{$this->def['base']}>";
2787
+ }
2788
+
2789
+ public function colDiv( $padLen = null ) {
2790
+ $this->out .= "</{$this->def['base']}><{$this->def['base']} {$this->def['cell']}>";
2791
+ }
2792
+
2793
+ public function bubbles( array $items ) {
2794
+
2795
+ if ( ! $items ) {
2796
+ return;
2797
+ }
2798
+
2799
+ $this->out .= "<{$this->def['base']} data-mod>";
2800
+
2801
+ foreach ( $items as $info ) {
2802
+ $this->out .= $this->text( 'mod-' . strtolower( $info[1] ), $info[0], $info[1] );
2803
+ }
2804
+
2805
+ $this->out .= "</{$this->def['base']}>";
2806
+ }
2807
+
2808
+ public function startExp() {
2809
+ $this->out .= "<{$this->def['base']} data-input>";
2810
+ }
2811
+
2812
+ public function endExp() {
2813
+ if ( WSAL_Ref::config( 'showBacktrace' ) && ($trace = WSAL_Ref::getBacktrace()) ) {
2814
+ $docRoot = isset( $_SERVER['DOCUMENT_ROOT'] ) ? $_SERVER['DOCUMENT_ROOT'] : '';
2815
+ $path = strpos( $trace['file'], $docRoot ) !== 0 ? $trace['file'] : ltrim( str_replace( $docRoot, '', $trace['file'] ), '/' );
2816
+ // $this->out .= "<{$this->def['base']} data-backtrace>{$path}:{$trace['line']}</{$this->def['base']}>";
2817
+ }
2818
+
2819
+ $this->out .= "</{$this->def['base']}><{$this->def['base']} data-output>";
2820
+ }
2821
+
2822
+ public function startRoot() {
2823
+ $this->out .= '<!-- ref#' . ++static::$counter . ' --><div>' . static::getAssets() . '<div class="ref">';
2824
+ }
2825
+
2826
+ public function endRoot() {
2827
+ $this->out .= "</{$this->def['base']}>";
2828
+
2829
+ // process tooltips
2830
+ $tipHtml = '';
2831
+ foreach ( $this->tips as $idx => $meta ) {
2832
+
2833
+ $tip = '';
2834
+ if ( ! is_array( $meta ) ) {
2835
+ $meta = array(
2836
+ 'title' => $meta,
2837
+ );
2838
+ }
2839
+
2840
+ $meta += array(
2841
+ 'title' => '',
2842
+ 'left' => '',
2843
+ 'description' => '',
2844
+ 'tags' => array(),
2845
+ 'sub' => array(),
2846
+ );
2847
+
2848
+ $meta = static::escape( $meta );
2849
+ $cols = array();
2850
+
2851
+ if ( $meta['left'] ) {
2852
+ $cols[] = "<{$this->def['base']} {$this->def['cell']} data-varType>{$meta['left']}</{$this->def['base']}>";
2853
+ }
2854
+
2855
+ $title = $meta['title'] ? "<{$this->def['base']} data-title>{$meta['title']}</{$this->def['base']}>" : '';
2856
+ $desc = $meta['description'] ? "<{$this->def['base']} data-desc>{$meta['description']}</{$this->def['base']}>" : '';
2857
+ $tags = '';
2858
+
2859
+ foreach ( $meta['tags'] as $tag => $values ) {
2860
+ foreach ( $values as $value ) {
2861
+ if ( $tag === 'param' ) {
2862
+ $value[0] = "{$value[0]} {$value[1]}";
2863
+ unset( $value[1] );
2864
+ }
2865
+
2866
+ $value = is_array( $value ) ? implode( "</{$this->def['base']}><{$this->def['base']} {$this->def['cell']}>", $value ) : $value;
2867
+ $tags .= "<{$this->def['base']} {$this->def['row']}><{$this->def['base']} {$this->def['cell']}>@{$tag}</{$this->def['base']}><{$this->def['base']} {$this->def['cell']}>{$value}</{$this->def['base']}></{$this->def['base']}>";
2868
+ }
2869
+ }
2870
+
2871
+ if ( $tags ) {
2872
+ $tags = "<{$this->def['base']} {$this->def['table']}>{$tags}</{$this->def['base']}>";
2873
+ }
2874
+
2875
+ if ( $title || $desc || $tags ) {
2876
+ $cols[] = "<{$this->def['base']} {$this->def['cell']}>{$title}{$desc}{$tags}</{$this->def['base']}>";
2877
+ }
2878
+
2879
+ if ( $cols ) {
2880
+ $tip = "<{$this->def['base']} {$this->def['row']}>" . implode( '', $cols ) . "</{$this->def['base']}>";
2881
+ }
2882
+
2883
+ $sub = '';
2884
+ foreach ( $meta['sub'] as $line ) {
2885
+ $sub .= "<{$this->def['base']} {$this->def['row']}><{$this->def['base']} {$this->def['cell']}>" . implode( "</{$this->def['base']}><{$this->def['base']} {$this->def['cell']}>", $line ) . "</{$this->def['base']}></{$this->def['base']}>";
2886
+ }
2887
+
2888
+ if ( $sub ) {
2889
+ $tip .= "<{$this->def['base']} {$this->def['row']}><{$this->def['base']} {$this->def['cell']} data-sub><{$this->def['base']} {$this->def['table']}>{$sub}</{$this->def['base']}></{$this->def['base']}></{$this->def['base']}>";
2890
+ }
2891
+
2892
+ if ( $tip ) {
2893
+ $this->out .= "<{$this->def['tip']}>{$tip}</{$this->def['tip']}>";
2894
+ }
2895
+ }
2896
+
2897
+ if ( ($timeout = WSAL_Ref::getTimeoutPoint()) > 0 ) {
2898
+ $this->out .= sprintf( "<{$this->def['base']} data-error>Listing incomplete. Timed-out after %4.2fs</{$this->def['base']}>", $timeout );
2899
+ }
2900
+
2901
+ $this->out .= '</div></div><!-- /ref#' . static::$counter . ' -->';
2902
+ }
2903
+
2904
+
2905
+
2906
+ /**
2907
+ * Get styles and javascript (only generated for the 1st call)
2908
+ *
2909
+ * @return string
2910
+ */
2911
+ public static function getAssets() {
2912
+
2913
+ // first call? include styles and javascript
2914
+ if ( static::$didAssets ) {
2915
+ return '';
2916
+ }
2917
+
2918
+ ob_start();
2919
+
2920
+ if ( WSAL_Ref::config( 'stylePath' ) !== false ) {
2921
+ ?>
2922
+ <style>
2923
+ <?php readfile( str_replace( '{:dir}', __DIR__, WSAL_Ref::config( 'stylePath' ) ) ); ?>
2924
+ </style>
2925
+ <?php
2926
+ }
2927
+
2928
+ if ( WSAL_Ref::config( 'scriptPath' ) !== false ) {
2929
+ ?>
2930
+ <script>
2931
+ <?php readfile( str_replace( '{:dir}', __DIR__, WSAL_Ref::config( 'scriptPath' ) ) ); ?>
2932
+ </script>
2933
+ <?php
2934
+ }
2935
+
2936
+ // normalize space and remove comments
2937
+ $output = preg_replace( '/\s+/', ' ', trim( ob_get_clean() ) );
2938
+ $output = preg_replace( '!/\*.*?\*/!s', '', $output );
2939
+ $output = preg_replace( '/\n\s*\n/', "\n", $output );
2940
+
2941
+ static::$didAssets = true;
2942
+ return $output;
2943
+ }
2944
+
2945
+
2946
+ /**
2947
+ * Escapes variable for HTML output
2948
+ *
2949
+ * @param string|array $var
2950
+ * @return string|array
2951
+ */
2952
+ protected static function escape( $var ) {
2953
+ return is_array( $var ) ? array_map( 'static::escape', $var ) : htmlspecialchars( $var, ENT_QUOTES );
2954
+ }
2955
+
2956
+ }
2957
+
2958
+
2959
+
2960
+ /**
2961
+ * Generates the output in plain text format
2962
+ */
2963
+ class RTextFormatter extends RFormatter {
2964
+
2965
+ protected
2966
+
2967
+ /**
2968
+ * Actual output
2969
+ *
2970
+ * @var string
2971
+ */
2972
+ $out = '',
2973
+
2974
+ /**
2975
+ * Tracks current nesting level
2976
+ *
2977
+ * @var int
2978
+ */
2979
+ $level = 0,
2980
+
2981
+ /**
2982
+ * Current indenting level
2983
+ *
2984
+ * @var int
2985
+ */
2986
+ $indent = 0,
2987
+
2988
+ $lastIdx = 0,
2989
+ $lastLineSt = 0,
2990
+ $levelPad = array( 0 );
2991
+
2992
+
2993
+
2994
+ public function flush() {
2995
+ print $this->out;
2996
+ $this->out = '';
2997
+ $this->cache = array();
2998
+ }
2999
+
3000
+ public function sep( $label = ' ' ) {
3001
+ $this->out .= $label;
3002
+ }
3003
+
3004
+ public function text( $type, $text = null, $meta = null, $uri = null ) {
3005
+
3006
+ if ( ! is_array( $type ) ) {
3007
+ $type = (array) $type;
3008
+ }
3009
+
3010
+ if ( $text === null ) {
3011
+ $text = $type[0];
3012
+ }
3013
+
3014
+ if ( in_array( 'special', $type, true ) ) {
3015
+ $text = strtr(
3016
+ $text, array(
3017
+ "\r" => '\r', // carriage return
3018
+ "\t" => '\t', // horizontal tab
3019
+ "\n" => '\n', // linefeed (new line)
3020
+ "\v" => '\v', // vertical tab
3021
+ "\e" => '\e', // escape
3022
+ "\f" => '\f', // form feed
3023
+ "\0" => '\0',
3024
+ )
3025
+ );
3026
+
3027
+ $this->out .= $text;
3028
+ return;
3029
+ }
3030
+
3031
+ $formatMap = array(
3032
+ 'string' => '%3$s "%2$s"',
3033
+ 'integer' => 'int(%2$s)',
3034
+ 'double' => 'double(%2$s)',
3035
+ 'true' => 'bool(%2$s)',
3036
+ 'false' => 'bool(%2$s)',
3037
+ 'key' => '[%2$s]',
3038
+ );
3039
+
3040
+ if ( ! is_string( $meta ) ) {
3041
+ $meta = '';
3042
+ }
3043
+
3044
+ $this->out .= isset( $formatMap[ $type[0] ] ) ? sprintf( $formatMap[ $type[0] ], $type[0], $text, $meta ) : $text;
3045
+ }
3046
+
3047
+ public function startContain( $type, $label = false ) {
3048
+
3049
+ if ( ! is_array( $type ) ) {
3050
+ $type = (array) $type;
3051
+ }
3052
+
3053
+ if ( $label ) {
3054
+ $this->out .= "\n" . str_repeat( ' ', $this->indent + $this->levelPad[ $this->level ] ) . "┗ {$type[0]} ~ ";
3055
+ }
3056
+ }
3057
+
3058
+ public function emptyGroup( $prefix = '' ) {
3059
+ $this->out .= "({$prefix})";
3060
+ }
3061
+
3062
+ public function startGroup( $prefix = '' ) {
3063
+
3064
+ $maxDepth = WSAL_Ref::config( 'maxDepth' );
3065
+
3066
+ if ( ($maxDepth > 0) && (($this->level + 1) > $maxDepth) ) {
3067
+ $this->emptyGroup( '...' );
3068
+ return false;
3069
+ }
3070
+
3071
+ $this->level++;
3072
+ $this->out .= '(';
3073
+
3074
+ $this->indent += $this->levelPad[ $this->level - 1 ];
3075
+ return true;
3076
+ }
3077
+
3078
+ public function endGroup() {
3079
+ $this->out .= "\n" . str_repeat( ' ', $this->indent ) . ')';
3080
+ $this->indent -= $this->levelPad[ $this->level - 1 ];
3081
+ $this->level--;
3082
+ }
3083
+
3084
+ public function sectionTitle( $title ) {
3085
+ $pad = str_repeat( ' ', $this->indent + 2 );
3086
+ $this->out .= sprintf( "\n\n%s%s\n%s%s", $pad, $title, $pad, str_repeat( '-', strlen( $title ) ) );
3087
+ }
3088
+
3089
+ public function startRow() {
3090
+ $this->out .= "\n " . str_repeat( ' ', $this->indent );
3091
+ $this->lastLineSt = strlen( $this->out );
3092
+ }
3093
+
3094
+ public function endRow() {
3095
+ }
3096
+
3097
+ public function colDiv( $padLen = null ) {
3098
+ $padLen = ($padLen !== null) ? $padLen + 1 : 1;
3099
+ $this->out .= str_repeat( ' ', $padLen );
3100
+
3101
+ $this->lastIdx = strlen( $this->out );
3102
+ $this->levelPad[ $this->level ] = $this->lastIdx - $this->lastLineSt + 2;
3103
+ }
3104
+
3105
+ public function bubbles( array $items ) {
3106
+
3107
+ if ( ! $items ) {
3108
+ $this->out .= ' ';
3109
+ return;
3110
+ }
3111
+
3112
+ $this->out .= '<';
3113
+
3114
+ foreach ( $items as $item ) {
3115
+ $this->out .= $item[0];
3116
+ }
3117
+
3118
+ $this->out .= '>';
3119
+ }
3120
+
3121
+ public function endExp() {
3122
+
3123
+ if ( WSAL_Ref::config( 'showBacktrace' ) && ($trace = WSAL_Ref::getBacktrace()) ) {
3124
+ $this->out .= ' - ' . $trace['file'] . ':' . $trace['line'];
3125
+ }
3126
+
3127
+ $this->out .= "\n" . str_repeat( '=', strlen( $this->out ) ) . "\n";
3128
+ }
3129
+
3130
+ public function startRoot() {
3131
+ $this->out .= "\n\n";
3132
+
3133
+ }
3134
+
3135
+ public function endRoot() {
3136
+ $this->out .= "\n";
3137
+ if ( ($timeout = WSAL_Ref::getTimeoutPoint()) > 0 ) {
3138
+ $this->out .= sprintf( "\n-- Listing incomplete. Timed-out after %4.2fs -- \n", $timeout );
3139
+ }
3140
+ }
3141
+
3142
+ }
3143
+
3144
+
3145
+
3146
+ /**
3147
+ * Text formatter with color support for CLI -- unfinished
3148
+ */
3149
+ class RCliTextFormatter extends RTextFormatter {
3150
+
3151
+ public function sectionTitle( $title ) {
3152
+ $pad = str_repeat( ' ', $this->indent + 2 );
3153
+ $this->out .= sprintf( "\n\n%s\x1b[4;97m%s\x1b[0m", $pad, $title );
3154
+ }
3155
+
3156
+ public function startExp() {
3157
+ $this->out .= "\x1b[1;44;96m ";
3158
+ }
3159
+
3160
+ public function endExp() {
3161
+ if ( WSAL_Ref::config( 'showBacktrace' ) && ($trace = WSAL_Ref::getBacktrace()) ) {
3162
+ $this->out .= "\x1b[0m\x1b[44;36m " . $trace['file'] . ':' . $trace['line'];
3163
+ }
3164
+
3165
+ $this->out .= " \x1b[0m\n";
3166
+ }
3167
+
3168
+ public function endRoot() {
3169
+ $this->out .= "\n";
3170
+ if ( ($timeout = WSAL_Ref::getTimeoutPoint()) > 0 ) {
3171
+ $this->out .= sprintf( "\n\x1b[3;91m-- Listing incomplete. Timed-out after %4.2fs --\x1b[0m\n", $timeout );
3172
+ }
3173
+ }
3174
+
3175
+ }
classes/Sensors/Content.php CHANGED
@@ -226,6 +226,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
226
  'TagLink' => $term_link,
227
  'old_desc' => $old_desc,
228
  'new_desc' => $new_desc,
 
229
  )
230
  );
231
  }
@@ -912,6 +913,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
912
  'OldUrl' => $old_link,
913
  'NewUrl' => $new_link,
914
  $editor_link['name'] => $editor_link['value'],
 
915
  )
916
  );
917
  return 1;
226
  'TagLink' => $term_link,
227
  'old_desc' => $old_desc,
228
  'new_desc' => $new_desc,
229
+ 'ReportText' => $old_desc . '|' . $new_desc,
230
  )
231
  );
232
  }
913
  'OldUrl' => $old_link,
914
  'NewUrl' => $new_link,
915
  $editor_link['name'] => $editor_link['value'],
916
+ 'ReportText' => '"' . $old_link . '"|"' . $new_link . '"',
917
  )
918
  );
919
  return 1;
classes/Sensors/LogInOut.php CHANGED
@@ -97,6 +97,51 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
97
  * @param object $user - WP_User object.
98
  */
99
  public function EventLogin( $user_login, $user = null ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  if ( empty( $user ) ) {
101
  $user = get_user_by( 'login', $user_login );
102
  }
97
  * @param object $user - WP_User object.
98
  */
99
  public function EventLogin( $user_login, $user = null ) {
100
+ // Get global POST array.
101
+ $post_array = filter_input_array( INPUT_POST );
102
+
103
+ /**
104
+ * Check for Ultimate Member plugin.
105
+ *
106
+ * @since 3.1.6
107
+ */
108
+ if ( isset( $post_array['_um_account'] )
109
+ && isset( $post_array['_um_account_tab'] )
110
+ && 'password' === $post_array['_um_account_tab'] ) {
111
+ /**
112
+ * If the data is coming from UM plugin account change
113
+ * password page, check for change in password.
114
+ *
115
+ * 1. Check previous password.
116
+ * 2. Check new password.
117
+ * 3. Check confirm new password.
118
+ * 4. If current & new password don't match.
119
+ * 5. And new & confirm password are same then log change password alert.
120
+ */
121
+ if ( isset( $post_array['current_user_password'] ) // Previous password.
122
+ && isset( $post_array['user_password'] ) // New password.
123
+ && isset( $post_array['confirm_user_password'] ) // Confirm new password.
124
+ && $post_array['current_user_password'] !== $post_array['user_password'] // If current & new password don't match.
125
+ && $post_array['user_password'] === $post_array['confirm_user_password'] ) { // And new & confirm password are same then.
126
+ // Get user.
127
+ if ( empty( $user ) ) {
128
+ $user = get_user_by( 'login', $user_login );
129
+ }
130
+
131
+ // Log user changed password alert.
132
+ if ( ! empty( $user ) ) {
133
+ $user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
134
+ $this->plugin->alerts->Trigger(
135
+ 4003, array(
136
+ 'Username' => $user->user_login,
137
+ 'CurrentUserRoles' => $user_roles,
138
+ ), true
139
+ );
140
+ }
141
+ }
142
+ return; // Return.
143
+ }
144
+
145
  if ( empty( $user ) ) {
146
  $user = get_user_by( 'login', $user_login );
147
  }
classes/Sensors/MetaData.php CHANGED
@@ -259,6 +259,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractSensor {
259
  'MetaValueOld' => $this->old_meta[ $meta_id ]->val,
260
  'MetaLink' => $meta_key,
261
  $editor_link['name'] => $editor_link['value'],
 
262
  )
263
  );
264
  }
@@ -429,13 +430,17 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractSensor {
429
  // Filter $_POST global array for security.
430
  $post_array = filter_input_array( INPUT_POST );
431
 
432
- // Check nonce.
433
- if ( isset( $post_array['_wpnonce'] ) && ! wp_verify_nonce( $post_array['_wpnonce'], 'update-user_' . $user->ID ) ) {
434
- return false;
435
- }
436
-
437
  // If update action is set then trigger the alert.
438
- if ( isset( $post_array['action'] ) && 'update' == $post_array['action'] ) {
 
 
 
 
 
 
 
 
 
439
  if ( isset( $this->old_meta[ $meta_id ] ) && ! in_array( $meta_key, $username_meta, true ) ) {
440
  // Check change in meta value.
441
  if ( $this->old_meta[ $meta_id ]->val != $meta_value ) {
@@ -445,6 +450,7 @@ class WSAL_Sensors_MetaData extends WSAL_AbstractSensor {
445
  'custom_field_name' => $meta_key,
446
  'new_value' => $meta_value,
447
  'old_value' => $this->old_meta[ $meta_id ]->val,
 
448
  )
449
  );
450
  }
259
  'MetaValueOld' => $this->old_meta[ $meta_id ]->val,
260
  'MetaLink' => $meta_key,
261
  $editor_link['name'] => $editor_link['value'],
262
+ 'ReportText' => $this->old_meta[ $meta_id ]->val . '|' . $meta_value,
263
  )
264
  );
265
  }
430
  // Filter $_POST global array for security.
431
  $post_array = filter_input_array( INPUT_POST );
432
 
 
 
 
 
 
433
  // If update action is set then trigger the alert.
434
+ if ( ( isset( $post_array['_wpnonce'] ) // WP Dashboard Support.
435
+ && wp_verify_nonce( $post_array['_wpnonce'], 'update-user_' . $user->ID )
436
+ && isset( $post_array['action'] )
437
+ && 'update' == $post_array['action'] )
438
+ ||
439
+ ( isset( $post_array['_um_account'] ) // Ultimate Member Plugin support.
440
+ && '1' === $post_array['_um_account']
441
+ && isset( $post_array['_um_account_tab'] )
442
+ && 'general' === $post_array['_um_account_tab'] )
443
+ ) {
444
  if ( isset( $this->old_meta[ $meta_id ] ) && ! in_array( $meta_key, $username_meta, true ) ) {
445
  // Check change in meta value.
446
  if ( $this->old_meta[ $meta_id ]->val != $meta_value ) {
450
  'custom_field_name' => $meta_key,
451
  'new_value' => $meta_value,
452
  'old_value' => $this->old_meta[ $meta_id ]->val,
453
+ 'ReportText' => $this->old_meta[ $meta_id ]->val . '|' . $meta_value,
454
  )
455
  );
456
  }
classes/Sensors/UserProfile.php CHANGED
@@ -45,8 +45,8 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
45
  add_action( 'delete_user', array( $this, 'EventUserDeleted' ) );
46
  add_action( 'wpmu_delete_user', array( $this, 'EventUserDeleted' ) );
47
  add_action( 'set_user_role', array( $this, 'EventUserRoleChanged' ), 10, 3 );
48
-
49
  add_action( 'edit_user_profile', array( $this, 'EventOpenProfile' ), 10, 1 );
 
50
  }
51
 
52
  /**
@@ -300,4 +300,34 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
300
  || $mgr->WillOrHasTriggered( 4001 )
301
  );
302
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  }
45
  add_action( 'delete_user', array( $this, 'EventUserDeleted' ) );
46
  add_action( 'wpmu_delete_user', array( $this, 'EventUserDeleted' ) );
47
  add_action( 'set_user_role', array( $this, 'EventUserRoleChanged' ), 10, 3 );
 
48
  add_action( 'edit_user_profile', array( $this, 'EventOpenProfile' ), 10, 1 );
49
+ add_action( 'profile_update', array( $this, 'event_email_changed' ), 10, 2 );
50
  }
51
 
52
  /**
300
  || $mgr->WillOrHasTriggered( 4001 )
301
  );
302
  }
303
+
304
+ /**
305
+ * Method: Support for Ultimate Member email change
306
+ * alert.
307
+ *
308
+ * @param int $user_id - User ID.
309
+ * @param WP_User $old_userdata - Old WP_User object.
310
+ */
311
+ public function event_email_changed( $user_id, $old_userdata ) {
312
+ // Get $_POST global array.
313
+ $post_array = filter_input_array( INPUT_POST );
314
+
315
+ if ( isset( $post_array['_um_account_tab'] ) // Check for UM tab.
316
+ && 'general' === $post_array['_um_account_tab'] // Verify `General` UM tab.
317
+ && ! empty( $post_array['user_email'] ) ) { // Check if user email is set.
318
+ $old_email = $old_userdata->user_email; // Old email.
319
+ $new_email = trim( $post_array['user_email'] ); // New email.
320
+ if ( $old_email !== $new_email ) { // If both emails don't match then log alert.
321
+ $event = get_current_user_id() === $user_id ? 4005 : 4006;
322
+ $this->plugin->alerts->Trigger(
323
+ $event, array(
324
+ 'TargetUserID' => $user_id,
325
+ 'TargetUsername' => $old_userdata->user_login,
326
+ 'OldEmail' => $old_email,
327
+ 'NewEmail' => $new_email,
328
+ )
329
+ );
330
+ }
331
+ }
332
+ }
333
  }
classes/Sensors/WooCommerce.php CHANGED
@@ -163,16 +163,47 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
163
  * @param WC_Product $product - WooCommerce product object.
164
  */
165
  public function product_stock_changed( $product ) {
166
- // Return if current screen is admin panel.
167
- if ( is_admin() ) {
 
 
 
 
168
  return;
169
  }
170
 
171
- $old_stock = $this->_old_stock; // Get old stock quantity.
172
- $new_stock = $product->get_stock_quantity(); // Get new stock quantity.
173
- $old_stock_status = $this->_old_stock_status; // Get old stock status.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  $new_stock_status = $product->get_stock_status(); // Get new stock status.
175
- $product_id = $product->get_id(); // Get product id.
176
  $product_title = $product->get_title(); // Get product title.
177
 
178
  // Set post object.
@@ -270,7 +301,10 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
270
  * @param stdClass $oldpost - The old post.
271
  */
272
  public function EventChanged( $post_id, $newpost, $oldpost ) {
273
- if ( $this->CheckWooCommerce( $oldpost ) && is_admin() ) {
 
 
 
274
  $changes = 0 + $this->EventCreation( $oldpost, $newpost );
275
  if ( ! $changes ) {
276
  // Change Categories.
@@ -430,6 +464,8 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
430
  $this->plugin->alerts->Trigger(
431
  9004, array(
432
  'ProductTitle' => $oldpost->post_title,
 
 
433
  $editor_link['name'] => $editor_link['value'],
434
  )
435
  );
@@ -479,6 +515,7 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
479
  'OldUrl' => $old_link,
480
  'NewUrl' => $new_link,
481
  $editor_link['name'] => $editor_link['value'],
 
482
  )
483
  );
484
  return 1;
163
  * @param WC_Product $product - WooCommerce product object.
164
  */
165
  public function product_stock_changed( $product ) {
166
+ // Get product id.
167
+ $product_id = $product->get_id();
168
+
169
+ // Return if current screen is edit post page.
170
+ global $pagenow;
171
+ if ( is_admin() && 'post.php' === $pagenow ) {
172
  return;
173
  }
174
 
175
+ // Get global $_POST array.
176
+ $post_array = filter_input_array( INPUT_POST );
177
+
178
+ // Special conditions for WooCommerce Bulk Stock Management.
179
+ if ( 'edit.php' === $pagenow
180
+ && isset( $post_array['page'] )
181
+ && 'woocommerce-bulk-stock-management' === $post_array['page'] ) {
182
+ $old_acc_stock = isset( $post_array['current_stock_quantity'] ) ? $post_array['current_stock_quantity'] : false;
183
+ $new_acc_stock = isset( $post_array['stock_quantity'] ) ? $post_array['stock_quantity'] : false;
184
+
185
+ // Get old stock quantity.
186
+ $old_stock = ! empty( $this->_old_stock ) ? $this->_old_stock : $old_acc_stock[ $product_id ];
187
+
188
+ // Following cases handle the stock status.
189
+ if ( '0' === $old_acc_stock[ $product_id ] && '0' !== $new_acc_stock[ $product_id ] ) {
190
+ $old_stock_status = 'outofstock';
191
+ } elseif ( '0' !== $old_acc_stock[ $product_id ] && '0' === $new_acc_stock[ $product_id ] ) {
192
+ $old_stock_status = 'instock';
193
+ } elseif ( '0' === $old_acc_stock[ $product_id ] && '0' === $new_acc_stock[ $product_id ] ) {
194
+ $old_stock_status = 'outofstock';
195
+ } elseif ( '0' !== $old_acc_stock[ $product_id ] && '0' !== $new_acc_stock[ $product_id ] ) {
196
+ $old_stock_status = 'instock';
197
+ } else {
198
+ $old_stock_status = '';
199
+ }
200
+ } else {
201
+ $old_stock = $this->_old_stock; // Get old stock quantity.
202
+ $old_stock_status = $this->_old_stock_status; // Get old stock status.
203
+ }
204
+
205
+ $new_stock = $product->get_stock_quantity(); // Get new stock quantity.
206
  $new_stock_status = $product->get_stock_status(); // Get new stock status.
 
207
  $product_title = $product->get_title(); // Get product title.
208
 
209
  // Set post object.
301
  * @param stdClass $oldpost - The old post.
302
  */
303
  public function EventChanged( $post_id, $newpost, $oldpost ) {
304
+ // Global variable which returns current page.
305
+ global $pagenow;
306
+
307
+ if ( 'post.php' === $pagenow && $this->CheckWooCommerce( $oldpost ) && is_admin() ) {
308
  $changes = 0 + $this->EventCreation( $oldpost, $newpost );
309
  if ( ! $changes ) {
310
  // Change Categories.
464
  $this->plugin->alerts->Trigger(
465
  9004, array(
466
  'ProductTitle' => $oldpost->post_title,
467
+ 'OldDescription' => $oldpost->post_excerpt,
468
+ 'NewDescription' => $newpost->post_excerpt,
469
  $editor_link['name'] => $editor_link['value'],
470
  )
471
  );
515
  'OldUrl' => $old_link,
516
  'NewUrl' => $new_link,
517
  $editor_link['name'] => $editor_link['value'],
518
+ 'ReportText' => '"' . $old_link . '"|"' . $new_link . '"',
519
  )
520
  );
521
  return 1;
classes/Sensors/YoastSEO.php CHANGED
@@ -235,6 +235,7 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
235
  'OldSEOTitle' => $old_title,
236
  'NewSEOTitle' => $title,
237
  $editor_link['name'] => $editor_link['value'],
 
238
  )
239
  );
240
  }
@@ -268,6 +269,7 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
268
  'old_desc' => $old_desc,
269
  'new_desc' => $desc,
270
  $editor_link['name'] => $editor_link['value'],
 
271
  )
272
  );
273
  }
@@ -367,7 +369,7 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
367
  $old_adv = $this->get_post_seo_data( 'meta-robots-adv' );
368
 
369
  // If old and new values are empty then don't log the alert.
370
- if ( empty( $old_title ) && '-' === $advanced ) {
371
  return;
372
  }
373
 
@@ -398,6 +400,11 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
398
  // Get old title value.
399
  $old_url = $this->get_post_seo_data( 'canonical' );
400
 
 
 
 
 
 
401
  // If title is changed then log alert.
402
  if ( $old_url !== $canonical_url ) {
403
  $editor_link = $this->get_editor_link( $this->post_id );
@@ -412,6 +419,7 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
412
  'OldCanonicalUrl' => $old_url,
413
  'NewCanonicalUrl' => $canonical_url,
414
  $editor_link['name'] => $editor_link['value'],
 
415
  )
416
  );
417
  }
@@ -650,10 +658,12 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
650
 
651
  case 'title-home-wpseo':
652
  $alert_code = 8810;
 
653
  break;
654
 
655
  case 'metadesc-home-wpseo':
656
  $alert_code = 8811;
 
657
  break;
658
 
659
  case 'company_or_person':
@@ -789,4 +799,3 @@ class WSAL_Sensors_YoastSEO extends WSAL_AbstractSensor {
789
  }
790
  }
791
  }
792
-
235
  'OldSEOTitle' => $old_title,
236
  'NewSEOTitle' => $title,
237
  $editor_link['name'] => $editor_link['value'],
238
+ 'ReportText' => $old_title . '|' . $title,
239
  )
240
  );
241
  }
269
  'old_desc' => $old_desc,
270
  'new_desc' => $desc,
271
  $editor_link['name'] => $editor_link['value'],
272
+ 'ReportText' => $old_desc . '|' . $desc,
273
  )
274
  );
275
  }
369
  $old_adv = $this->get_post_seo_data( 'meta-robots-adv' );
370
 
371
  // If old and new values are empty then don't log the alert.
372
+ if ( empty( $old_adv ) && ( empty( $advanced ) || '-' === $advanced ) ) {
373
  return;
374
  }
375
 
400
  // Get old title value.
401
  $old_url = $this->get_post_seo_data( 'canonical' );
402
 
403
+ // Check to see if both change value are empty.
404
+ if ( empty( $old_url ) && empty( $canonical_url ) ) {
405
+ return; // Return if both are empty.
406
+ }
407
+
408
  // If title is changed then log alert.
409
  if ( $old_url !== $canonical_url ) {
410
  $editor_link = $this->get_editor_link( $this->post_id );
419
  'OldCanonicalUrl' => $old_url,
420
  'NewCanonicalUrl' => $canonical_url,
421
  $editor_link['name'] => $editor_link['value'],
422
+ 'ReportText' => '"' . $old_url . '"|"' . $canonical_url . '"',
423
  )
424
  );
425
  }
658
 
659
  case 'title-home-wpseo':
660
  $alert_code = 8810;
661
+ $alert_args['ReportText'] = $old_value . '|' . $new_value;
662
  break;
663
 
664
  case 'metadesc-home-wpseo':
665
  $alert_code = 8811;
666
+ $alert_args['ReportText'] = $old_value . '|' . $new_value;
667
  break;
668
 
669
  case 'company_or_person':
799
  }
800
  }
801
  }
 
classes/Views/AuditLog.php CHANGED
@@ -110,6 +110,20 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
110
  <?php
111
  }
112
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  }
114
 
115
  /**
@@ -260,18 +274,19 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
260
  }
261
  $occ = new WSAL_Models_Occurrence();
262
  $occ->Load( 'id = %d', array( (int) $get_array['occurrence'] ) );
 
 
 
 
 
 
263
 
264
  echo '<!DOCTYPE html><html><head>';
265
- echo '<link rel="stylesheet" id="open-sans-css" href="' . esc_url( $this->_plugin->GetBaseUrl() ) . '/css/nice_r.css" type="text/css" media="all">';
266
- echo '<script type="text/javascript" src="' . esc_url( $this->_plugin->GetBaseUrl() ) . '/js/nice_r.js"></script>';
267
  echo '<style type="text/css">';
268
  echo 'html, body { margin: 0; padding: 0; }';
269
- echo '.nice_r { position: absolute; padding: 8px; }';
270
- echo '.nice_r a { overflow: visible; }';
271
  echo '</style>';
272
  echo '</head><body>';
273
- $nicer = new WSAL_Nicer( $occ->GetMetaArray() );
274
- $nicer->render();
275
  echo '</body></html>';
276
  die;
277
  }
@@ -287,13 +302,15 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
287
  // Filter $_POST array for security.
288
  $post_array = filter_input_array( INPUT_POST );
289
 
 
290
  if ( ! isset( $post_array['logcount'] ) ) {
291
  die( 'Log count parameter expected.' );
292
  }
293
 
 
294
  $old = (int) $post_array['logcount'];
295
- $max = 40; // 40*500msec = 20sec
296
 
 
297
  $is_archive = false;
298
  if ( $this->_plugin->settings->IsArchivingEnabled() ) {
299
  $selected_db = get_transient( 'wsal_wp_selected_db' );
@@ -302,16 +319,16 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
302
  }
303
  }
304
 
305
- do {
306
- $occ = new WSAL_Models_Occurrence();
307
- $new = $occ->Count();
308
- usleep( 500000 ); // 500msec
309
- } while ( ($old == $new) && (--$max > 0) );
310
 
 
311
  if ( $is_archive ) {
312
  echo 'false';
313
  } else {
314
- echo $old == $new ? 'false' : esc_html( $new );
 
315
  }
316
  die;
317
  }
110
  <?php
111
  }
112
  }
113
+
114
+ // Get DB connector.
115
+ $db_config = WSAL_Connector_ConnectorFactory::GetConfig(); // Get DB connector configuration.
116
+ $wsal_db = $this->_plugin->getConnector( $db_config )->getConnection(); // Get DB connection.
117
+ $connection = 0 !== (int) $wsal_db->dbh->errno ? false : true; // Database connection error check.
118
+
119
+ // Add connectivity notice.
120
+ if ( ! $connection ) {
121
+ ?>
122
+ <div class="notice notice-error">
123
+ <p><?php esc_html_e( 'There are connectivity issues with the database where the WordPress activity log is stored. The logs will be temporary buffered in the WordPress database until the connection is fully restored.', 'wp-security-audit-log' ); ?></p>
124
+ </div>
125
+ <?php
126
+ }
127
  }
128
 
129
  /**
274
  }
275
  $occ = new WSAL_Models_Occurrence();
276
  $occ->Load( 'id = %d', array( (int) $get_array['occurrence'] ) );
277
+ $alert_meta = $occ->GetMetaArray();
278
+ unset( $alert_meta['ReportText'] );
279
+
280
+ // Set WSAL_Ref class scripts and styles.
281
+ WSAL_Ref::config( 'stylePath', esc_url( $this->_plugin->GetBaseDir() ) . '/css/wsal-ref.css' );
282
+ WSAL_Ref::config( 'scriptPath', esc_url( $this->_plugin->GetBaseDir() ) . '/js/wsal-ref.js' );
283
 
284
  echo '<!DOCTYPE html><html><head>';
 
 
285
  echo '<style type="text/css">';
286
  echo 'html, body { margin: 0; padding: 0; }';
 
 
287
  echo '</style>';
288
  echo '</head><body>';
289
+ wsal_r( $alert_meta );
 
290
  echo '</body></html>';
291
  die;
292
  }
302
  // Filter $_POST array for security.
303
  $post_array = filter_input_array( INPUT_POST );
304
 
305
+ // If log count is not set then return error.
306
  if ( ! isset( $post_array['logcount'] ) ) {
307
  die( 'Log count parameter expected.' );
308
  }
309
 
310
+ // Total number of alerts.
311
  $old = (int) $post_array['logcount'];
 
312
 
313
+ // Check if the user is viewing archived db.
314
  $is_archive = false;
315
  if ( $this->_plugin->settings->IsArchivingEnabled() ) {
316
  $selected_db = get_transient( 'wsal_wp_selected_db' );
319
  }
320
  }
321
 
322
+ // Check for new total number of alerts.
323
+ $occ = new WSAL_Models_Occurrence();
324
+ $new = (int) $occ->Count();
 
 
325
 
326
+ // If the current view is archive then don't refresh.
327
  if ( $is_archive ) {
328
  echo 'false';
329
  } else {
330
+ // If the count is changed, then return the new count.
331
+ echo $old === $new ? 'false' : esc_html( $new );
332
  }
333
  die;
334
  }
classes/Views/Settings.php CHANGED
@@ -371,7 +371,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
371
  $wsal_lpn = false;
372
  } elseif ( ! $wsal_lpn ) {
373
  // Default option value.
374
- $wsal_lpn = true;
375
  }
376
  ?>
377
  <input type="checkbox" name="login_page_notification" id="login_page_notification" <?php checked( $wsal_lpn ); ?> />
@@ -380,15 +380,27 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
380
  <?php
381
  // Get login page notification text.
382
  $wsal_lpn_text = $this->_plugin->settings->get_login_page_notification_text();
 
 
 
 
 
 
 
 
 
 
383
  ?>
384
  <textarea name="login_page_notification_text"
385
  id="login_page_notification_text"
386
- cols="50" rows="5"
387
  <?php echo ( $wsal_lpn ) ? false : 'disabled'; ?>
388
- ><?php echo ( $wsal_lpn_text ) ? wp_kses( $wsal_lpn_text, $this->_plugin->allowed_html_tags ) : false; ?></textarea>
389
  <br/>
390
  <span class="description">
391
- <?php esc_html_e( 'Many compliance regulations (such as the GDRP) require you, as a website administrator to tell all the users of this website that all their actions are being logged.', 'wp-security-audit-log' ); ?>
 
 
392
  </span>
393
  </fieldset>
394
  </td>
@@ -409,11 +421,11 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
409
  </p>
410
  <?php
411
  foreach ( array(
 
412
  WSAL_Settings::OPT_DEV_DATA_INSPECTOR => array(
413
  __( 'Data Inspector', 'wp-security-audit-log' ),
414
  __( 'View data logged for each triggered alert.', 'wp-security-audit-log' ),
415
  ),
416
- /**
417
  WSAL_Settings::OPT_DEV_PHP_ERRORS => array(
418
  __('PHP Errors', 'wp-security-audit-log'),
419
  __('Enables sensor for alerts generated from PHP.', 'wp-security-audit-log')
371
  $wsal_lpn = false;
372
  } elseif ( ! $wsal_lpn ) {
373
  // Default option value.
374
+ $wsal_lpn = false;
375
  }
376
  ?>
377
  <input type="checkbox" name="login_page_notification" id="login_page_notification" <?php checked( $wsal_lpn ); ?> />
380
  <?php
381
  // Get login page notification text.
382
  $wsal_lpn_text = $this->_plugin->settings->get_login_page_notification_text();
383
+ $wsal_lpn_text_default = __( 'For security and auditing purposes, a record of all of your logged-in actions and changes within the WordPress dashboard will be recorded in an audit log with the <a href="https://www.wpsecurityauditlog.com/" target="_blank">WP Security Audit Log plugin</a>. The audit log also includes the IP address where you accessed this site from.', 'wp-security-audit-log' );
384
+
385
+ // Allowed HTML tags for this setting.
386
+ $allowed_tags = array(
387
+ 'a' => array(
388
+ 'href' => array(),
389
+ 'title' => array(),
390
+ 'target' => array(),
391
+ ),
392
+ );
393
  ?>
394
  <textarea name="login_page_notification_text"
395
  id="login_page_notification_text"
396
+ cols="60" rows="6"
397
  <?php echo ( $wsal_lpn ) ? false : 'disabled'; ?>
398
+ ><?php echo ( $wsal_lpn_text ) ? wp_kses( $wsal_lpn_text, $allowed_tags ) : wp_kses( $wsal_lpn_text_default, $allowed_tags ); ?></textarea>
399
  <br/>
400
  <span class="description">
401
+ <?php esc_html_e( 'Many compliance regulations (such as the GDRP) require website administrators to tell the users of this website that a log is kept of all the changes they do when logged in.', 'wp-security-audit-log' ); ?>
402
+ <br />
403
+ <?php echo wp_kses( __( '<strong>Note: </strong>', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ) . esc_html__( 'The only HTML code allowed in the login page notification is for links ( < a href >...< /a > ).', 'wp-security-audit-log' ); ?>
404
  </span>
405
  </fieldset>
406
  </td>
421
  </p>
422
  <?php
423
  foreach ( array(
424
+ /**
425
  WSAL_Settings::OPT_DEV_DATA_INSPECTOR => array(
426
  __( 'Data Inspector', 'wp-security-audit-log' ),
427
  __( 'View data logged for each triggered alert.', 'wp-security-audit-log' ),
428
  ),
 
429
  WSAL_Settings::OPT_DEV_PHP_ERRORS => array(
430
  __('PHP Errors', 'wp-security-audit-log'),
431
  __('Enables sensor for alerts generated from PHP.', 'wp-security-audit-log')
classes/Views/ToggleAlerts.php CHANGED
@@ -160,6 +160,7 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
160
  }
161
  }
162
 
 
163
  $tab_id = $this->GetSafeCatgName( $subname );
164
 
165
  // Skip Pages and CPTs section.
@@ -178,6 +179,15 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
178
  </thead>
179
  <tbody>
180
  <?php
 
 
 
 
 
 
 
 
 
181
  foreach ( $alerts as $alert ) {
182
  if ( $alert->type <= 0006 ) {
183
  continue; // <- Ignore php alerts.
@@ -338,6 +348,9 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
338
  .wsal-tab td input[type=number] {
339
  width: 100%;
340
  }
 
 
 
341
  </style>
342
  <?php
343
  }
160
  }
161
  }
162
 
163
+ // Get tab id.
164
  $tab_id = $this->GetSafeCatgName( $subname );
165
 
166
  // Skip Pages and CPTs section.
179
  </thead>
180
  <tbody>
181
  <?php
182
+ if ( 'content' === $tab_id ) :
183
+ ?>
184
+ <tr>
185
+ <td colspan="4">
186
+ <p class="wsal-tab-help description"><?php echo wp_kses( __( '<strong>Note:</strong> Post refers to any type of content, i.e. blog post, page or a post with a custom post type.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?></p>
187
+ </td>
188
+ </tr>
189
+ <?php
190
+ endif;
191
  foreach ( $alerts as $alert ) {
192
  if ( $alert->type <= 0006 ) {
193
  continue; // <- Ignore php alerts.
348
  .wsal-tab td input[type=number] {
349
  width: 100%;
350
  }
351
+ .widefat td .wsal-tab-help {
352
+ margin: 0 8px;
353
+ }
354
  </style>
355
  <?php
356
  }
css/wsal-ref.css ADDED
@@ -0,0 +1,508 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ref{
2
+ font: normal normal 12px/18px Consolas, "Liberation Mono", Menlo, "Courier New", Courier, monospace;
3
+ color: #333;
4
+ }
5
+
6
+ /* reset default styles for these elements */
7
+ .ref i,
8
+ .ref span,
9
+ .ref r,
10
+ .ref a{
11
+ font-style: inherit;
12
+ font-weight: inherit;
13
+ margin: 0;
14
+ padding: 0;
15
+ text-align: left;
16
+ display: inline;
17
+ text-decoration: inherit;
18
+ white-space: normal;
19
+ background: none;
20
+ }
21
+
22
+ /* meta content (used to generate tooltips) */
23
+ .ref > div,
24
+ .ref > t{
25
+ display: none;
26
+ }
27
+
28
+ /* show help cursor when mouse is over an entity with a tooltip */
29
+ .ref [data-tip],
30
+ .ref [h]{
31
+ cursor: help;
32
+ }
33
+
34
+ /* pointer if inside a link */
35
+ .ref a > [data-tip],
36
+ .ref a > [h]{
37
+ cursor: pointer;
38
+ }
39
+
40
+ /* links */
41
+ .ref a{
42
+ color: inherit;
43
+ border-bottom: 1px dotted transparent;
44
+ border-color: inherit;
45
+ }
46
+
47
+ /* tooltip; note that the js overrides top/left properties, this is why we use margin */
48
+ #rTip{
49
+ display: none;
50
+ position: absolute;
51
+ z-index: 99999;
52
+ font-size: 12px;
53
+ white-space: pre;
54
+ text-align: left;
55
+ text-shadow: 0 -1px 0 #191919;
56
+ line-height: 16px;
57
+ background: #222;
58
+ color: #888;
59
+ border: 0;
60
+ border-radius: 4px;
61
+ opacity: 0.90;
62
+ box-shadow:0 0 4px rgba(0,0,0, 0.25);
63
+ -webkit-transition: opacity .25s, margin .25s;
64
+ transition: opacity .25s, margin .25s;
65
+ }
66
+
67
+ #rTip.visible{
68
+ display: table;
69
+ margin: 10px 0 0 15px;
70
+ }
71
+
72
+ #rTip.visible.fadingOut{
73
+ opacity: 0;
74
+ margin: 20px 0 0 25px;
75
+ }
76
+
77
+ #rTip [data-cell],
78
+ #rTip [c]{
79
+ padding: 2px 7px;
80
+ }
81
+
82
+ #rTip [data-title], #rTip [data-desc]{
83
+ padding: 8px;
84
+ display: block;
85
+ color: #ccc;
86
+ }
87
+
88
+ #rTip [data-desc]{
89
+ padding-top: 0px;
90
+ color: #777;
91
+ }
92
+
93
+ #rTip [data-cell][data-varType],
94
+ #rTip [c][data-varType]{
95
+ padding: 10px;
96
+ background: #333;
97
+ box-shadow: inset -1px 0 0 #444;
98
+ border-right:1px solid #111;
99
+ border-top-left-radius: 4px;
100
+ border-bottom-left-radius: 4px;
101
+ }
102
+
103
+ #rTip [data-cell][data-sub],
104
+ #rTip [c][data-sub]{
105
+ padding: 8px 10px 10px 10px;
106
+ background: #333;
107
+ box-shadow: inset 0 1px 0 #444;
108
+ border-top:1px solid #111;
109
+ border-bottom-right-radius: 4px;
110
+ border-bottom-left-radius: 4px;
111
+ }
112
+
113
+ #rTip [data-table] [data-cell]:first-child,
114
+ #rTip [t] [c]:first-child{
115
+ font: bold 11px Helvetica, Arial;
116
+ color: #888;
117
+ }
118
+
119
+ #rTip [data-table] [data-cell]:nth-child(2),
120
+ #rTip [t] [c]:nth-child(2){
121
+ color: #edd078;
122
+ }
123
+
124
+
125
+
126
+
127
+ /* base entity - can be nested */
128
+ .ref span, .ref r{
129
+ white-space: pre;
130
+ display: inline;
131
+ }
132
+
133
+ /* key-value dividers, property & method modifiers etc. */
134
+ .ref i{
135
+ white-space: pre;
136
+ color: #aaa;
137
+ }
138
+
139
+ /* source expression (input) */
140
+ .ref [data-input]{
141
+ margin: 2px 0 0;
142
+ padding: 10px 7px;
143
+ display: block;
144
+ color: #ccc;
145
+ background-color: #333;
146
+ border-bottom: 1px solid #fff;
147
+ }
148
+
149
+ .ref [data-backtrace]{
150
+ float: right;
151
+ }
152
+
153
+ .ref [data-output]{
154
+ background: #f9f9f9;
155
+ border: 1px solid #eee;
156
+ border-top: 0;
157
+ border-radius: 0 0 4px 4px;
158
+ box-shadow: inset 0px 4px 4px #f3f3f3, inset 0px -8px 8px #fff;
159
+ padding: 2px 5px;
160
+ margin: 0 0 4px;
161
+ text-shadow: 0 1px 0 #fff;
162
+ display: block;
163
+ }
164
+
165
+ /* expand/collapse toggle link for groups */
166
+ .ref [data-toggle]{
167
+ display: inline-block;
168
+ vertical-align: -3px;
169
+ margin-left: 2px;
170
+ width: 0px;
171
+ height: 0px;
172
+ border-style: solid;
173
+ border-width: 7px 0 7px 10px;
174
+ border-color: transparent transparent transparent #CC0033;
175
+ cursor: pointer;
176
+ -webkit-transition: all ease-in .15s;
177
+ transition: all ease-in .15s;
178
+ }
179
+
180
+ /* collapse graphic */
181
+ .ref [data-toggle][data-exp]{
182
+ -webkit-transform: rotate(90deg);
183
+ -ms-transform: rotate(90deg);
184
+ transform: rotate(90deg);
185
+ }
186
+
187
+ .ref [data-group],
188
+ .ref [g]{
189
+ display: none;
190
+ }
191
+
192
+ .ref [data-toggle][data-exp] ~ [data-group],
193
+ .ref [data-toggle][data-exp] ~ [g]{
194
+ display: block;
195
+ }
196
+
197
+ /* group sections */
198
+ .ref [data-table],
199
+ .ref [t]{
200
+ display: table;
201
+ }
202
+
203
+ /* section titles */
204
+ .ref [data-tHead]{
205
+ font: bold 11px Helvetica, Arial;
206
+ color: #bcbcbc;
207
+ text-transform: lowercase;
208
+ margin: 12px 0 2px 10px;
209
+ display: block;
210
+ }
211
+
212
+ /* emulate a table for displaying array & object members */
213
+ /* section row */
214
+ .ref [data-row],
215
+ .ref [r]{
216
+ display: table-row;
217
+ }
218
+
219
+ /* zebra-like rows */
220
+ .ref [data-output] [data-row]:nth-child(odd){background: #f4f4f4;}
221
+ .ref [data-output] [data-row]:nth-child(even){background: #f9f9f9;}
222
+ .ref [data-output] [r]:nth-child(odd){background: #f4f4f4;}
223
+ .ref [data-output] [r]:nth-child(even){background: #f9f9f9;}
224
+
225
+ /* section cells */
226
+ .ref [data-cell],
227
+ .ref [c]{
228
+ display: table-cell;
229
+ width: auto;
230
+ vertical-align: top;
231
+ padding: 1px 0 1px 10px;
232
+ }
233
+
234
+ /* last cell of a row (forces table to adjust width like we want to) */
235
+ .ref [data-output] [data-table],
236
+ .ref [data-output] [t],
237
+ .ref [data-output] [data-cell]:last-child,
238
+ .ref [data-output] [c]:last-child{
239
+ width: 100%;
240
+ }
241
+
242
+
243
+
244
+ /* tag-like appearance for boolean, null and resource types */
245
+ .ref [data-true],
246
+ .ref [data-false],
247
+ .ref [data-null],
248
+ .ref [data-unknown],
249
+ .ref [data-resource],
250
+ .ref [data-match],
251
+ .ref [m]{
252
+ font: bold 11px Helvetica, Arial;
253
+ color: #fff;
254
+ padding: 1px 3px;
255
+ text-transform: lowercase;
256
+ text-shadow: none;
257
+ border-radius: 2px;
258
+ margin-right: 5px;
259
+ background-color: #eee;
260
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.1) 40%,rgba(0,0,0,0.1) 100%);
261
+ background-image: linear-gradient(to bottom, rgba(255,255,255,0.1) 40%,rgba(0,0,0,0.1) 100%);
262
+ }
263
+
264
+ /* string matches */
265
+ .ref [data-match],
266
+ .ref [m]{
267
+ background-color: #d78035;
268
+ }
269
+
270
+ /* boolean true */
271
+ .ref [data-true]{
272
+ background-color: #339900;
273
+ }
274
+
275
+ /* boolean false */
276
+ .ref [data-false]{
277
+ background-color: #CC0033;
278
+ color: #fff;
279
+ }
280
+
281
+ /* null value */
282
+ .ref [data-null],
283
+ .ref [data-unknown]{
284
+ background-color: #eee;
285
+ color: #999;
286
+ text-shadow: inherit;
287
+ }
288
+
289
+ /* resources */
290
+ .ref [data-resource]{
291
+ background-color: #0057ae;
292
+ }
293
+
294
+ .ref [data-resourceProp]{
295
+ font: bold 11px Helvetica, Arial;
296
+ color: #999;
297
+ }
298
+
299
+ /* integer or double values */
300
+ .ref [data-integer],
301
+ .ref [data-double]{
302
+ color: #0099CC;
303
+ }
304
+
305
+ /* string values */
306
+ .ref [data-string]{
307
+ background: #e8f0e1;
308
+ color: #669933;
309
+ padding: 3px 1px;
310
+
311
+ /* prevent long strings from breaking the page layout */
312
+ white-space: -moz-pre-wrap; /* Mozilla */
313
+ white-space: -hp-pre-wrap; /* HP printers */
314
+ white-space: -o-pre-wrap; /* Opera 7 */
315
+ white-space: -pre-wrap; /* Opera 4-6 */
316
+ white-space: pre-wrap; /* CSS 2.1 */
317
+ white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
318
+ word-wrap: break-word; /* IE */
319
+ word-break: break-all;
320
+ }
321
+
322
+ .ref [data-string][data-special]{
323
+ background: none;
324
+ padding: 0;
325
+ }
326
+
327
+ .ref [data-string][data-special] i{
328
+ background: #faf3dc;
329
+ color: #d78035;
330
+ }
331
+
332
+ /* arrays & objects */
333
+ .ref [data-array],
334
+ .ref [data-array] ~ i,
335
+ .ref [data-object],
336
+ .ref [data-object] ~ i,
337
+ .ref [data-resource] ~ i{
338
+ color:#CC0033;
339
+ }
340
+
341
+ .ref [data-method]{
342
+ font-weight: bold;
343
+ color: #0057ae;
344
+ }
345
+
346
+ .ref [data-const][data-inherited],
347
+ .ref [data-prop][data-inherited]{
348
+ color: #999;
349
+ }
350
+
351
+ .ref [data-prop][data-private],
352
+ .ref [data-method][data-private]{
353
+ color: #CC0033;
354
+ }
355
+
356
+ /* inherited methods */
357
+ .ref [data-method][data-inherited]{
358
+ font-weight: bold;
359
+ color: #6da5de;
360
+ }
361
+
362
+ /* method arguments */
363
+ .ref [data-param]{
364
+ font-weight: normal;
365
+ color: #333;
366
+ }
367
+
368
+ /* optional method arguments */
369
+ .ref [data-param][data-optional]{
370
+ font-style: italic;
371
+ font-weight: normal;
372
+ color: #aaa;
373
+ }
374
+
375
+ /* group info prefix */
376
+ .ref [data-gLabel],
377
+ .ref [gl]{
378
+ font: bold 11px Helvetica, Arial;
379
+ padding: 0 3px;
380
+ color: #333;
381
+ }
382
+
383
+ /* tiny bubbles that indicate visibility info or class features */
384
+ .ref [data-mod]{
385
+ font: bold 11px Helvetica, Arial;
386
+ text-shadow: none;
387
+ color: #fff;
388
+ }
389
+
390
+ .ref [data-input] [data-mod]{
391
+ color: #444;
392
+ }
393
+
394
+ .ref [data-mod] span,
395
+ .ref [data-mod] r{
396
+ display: inline-block;
397
+ margin: 0 2px;
398
+ width: 14px;
399
+ height: 14px;
400
+ text-align: center;
401
+ border-radius: 30px;
402
+ line-height: 15px;
403
+ }
404
+
405
+ .ref [data-mod-interface],
406
+ .ref [data-mod-abstract]{
407
+ background: #baed78;
408
+ }
409
+
410
+ .ref [data-mod-anonymous]{
411
+ background: #444;
412
+ }
413
+
414
+ .ref [data-mod-protected]{
415
+ background: #edd078;
416
+ }
417
+
418
+ .ref [data-mod-private]{
419
+ background: #eea8b9;
420
+ }
421
+
422
+ .ref [data-mod-iterateable]{
423
+ background: #d5dea5;
424
+ }
425
+
426
+ .ref [data-mod-cloneable]{
427
+ background: #bdd7d1;
428
+ }
429
+
430
+ .ref [data-mod-final]{
431
+ background: #78bded;
432
+ }
433
+
434
+ /* regular expression (colors partially match RegexBuddy and RegexPal) */
435
+ .ref [data-regex]{
436
+ font-weight: bold;
437
+ text-shadow: none;
438
+ padding: 1px 0;
439
+ background: #e6e6e6;
440
+ word-wrap: break-word;
441
+ }
442
+
443
+ /* char class */
444
+ .ref [data-regex-chr]{
445
+ background: #ffc080;
446
+ color: #694c07;
447
+ }
448
+
449
+ .ref [data-regex-chr-meta]{background: #e0a060;} /* char class: metasequence */
450
+ .ref [data-regex-chr-range]{background: #ffcf9b;} /* char class: range-hyphen */
451
+
452
+ /* metasequence */
453
+ .ref [data-regex-meta]{
454
+ background: #80c0ff;
455
+ color: #105f8c;
456
+ }
457
+
458
+ /* group: depth 1 */
459
+ .ref [data-regex-g1]{
460
+ background: #00c000;
461
+ color: #fff;
462
+ }
463
+
464
+ /* group: depth 2 */
465
+ .ref [data-regex-g2]{
466
+ background: #c3e86c;
467
+ color: #648c1c;
468
+ }
469
+
470
+ /* group: depth 3 */
471
+ .ref [data-regex-g3]{
472
+ background: #008000;
473
+ color: #fff;
474
+ }
475
+
476
+ /* group: depth 4 */
477
+ .ref [data-regex-g4]{
478
+ background: #6dcb99;
479
+ color: #fff;
480
+ }
481
+
482
+ /* group: depth 5 */
483
+ .ref [data-regex-g5]{
484
+ background: #00ff00;
485
+ color: #2c8e24;
486
+ }
487
+
488
+ .ref [data-error]{
489
+ background: #CC0033;
490
+ color: #fff;
491
+ border-radius: 0 0 4px 4px;
492
+ padding: 2px 5px;
493
+ margin: 0 0 4px;
494
+ display: block;
495
+ }
496
+
497
+ /* make labels and less-relevant text non-selectable */
498
+ .ref [data-match],
499
+ .ref [m],
500
+ .ref [data-tHead],
501
+ .ref [data-gLabel],
502
+ .ref [gl],
503
+ .ref [data-mod]{
504
+ -webkit-user-select: none;
505
+ -moz-user-select: none;
506
+ -ms-user-select: none;
507
+ user-select: none;
508
+ }
defaults.php CHANGED
@@ -144,7 +144,7 @@ function wsaldefaults_wsal_init( WpSecurityAuditLog $wsal ) {
144
  array( 2012, E_WARNING, __( 'User moved a post to the trash', 'wp-security-audit-log' ), __( 'Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is %PostUrl%.', 'wp-security-audit-log' ) ),
145
  array( 2014, E_CRITICAL, __( 'User restored a post from trash', 'wp-security-audit-log' ), __( 'The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
146
  array( 2016, E_NOTICE, __( 'User changed post category', 'wp-security-audit-log' ), __( 'Changed the category of the %PostStatus% %PostType% titled %PostTitle% from %OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
147
- array( 2017, E_NOTICE, __( 'User changed post URL', 'wp-security-audit-log' ), __( 'Changed the URL of the %PostStatus% %PostType% titled %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
148
  array( 2019, E_NOTICE, __( 'User changed post author', 'wp-security-audit-log' ), __( 'Changed the author of the %PostStatus% %PostType% titled %PostTitle% from %OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
149
  array( 2021, E_NOTICE, __( 'User changed post status', 'wp-security-audit-log' ), __( 'Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to %NewStatus%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
150
  array( 2023, E_NOTICE, __( 'User created new category', 'wp-security-audit-log' ), __( 'Created a new category called %CategoryName%. Category slug is %Slug%. %CategoryLink%.', 'wp-security-audit-log' ) ),
@@ -157,25 +157,25 @@ function wsaldefaults_wsal_init( WpSecurityAuditLog $wsal ) {
157
  array( 2050, E_NOTICE, __( 'User removed post from sticky', 'wp-security-audit-log' ), __( 'Removed the post %PostTitle% from Sticky. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
158
  array( 2052, E_NOTICE, __( 'Changed the parent of a category.', 'wp-security-audit-log' ), __( 'Changed the parent of the category %CategoryName% from %OldParent% to %NewParent%. %CategoryLink%.', 'wp-security-audit-log' ) ),
159
  array( 2053, E_CRITICAL, __( 'User created a custom field for a post', 'wp-security-audit-log' ), __( 'Created a new custom field called %MetaKey% with value %MetaValue% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
160
- array( 2054, E_CRITICAL, __( 'User updated a custom field value for a post', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
161
  array( 2055, E_CRITICAL, __( 'User deleted a custom field from a post', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
162
  array( 2062, E_CRITICAL, __( 'User updated a custom field name for a post', 'wp-security-audit-log' ), __( 'Changed the custom field\'s name from %MetaKeyOld% to %MetaKeyNew% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
163
  array( 2065, E_WARNING, __( 'User modified the content of a post.', 'wp-security-audit-log' ), __( 'Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post URL is %PostUrl%. %RevisionLink% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
164
  array( 2073, E_NOTICE, __( 'User submitted a post for review', 'wp-security-audit-log' ), __( 'Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
165
  array( 2074, E_NOTICE, __( 'User scheduled a post', 'wp-security-audit-log' ), __( 'Scheduled the %PostType% titled %PostTitle% to be published on %PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
166
  array( 2086, E_NOTICE, __( 'User changed title of a post', 'wp-security-audit-log' ), __( 'Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
167
- array( 2100, E_NOTICE, __( 'User opened a post in the editor', 'wp-security-audit-log' ), __( 'Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
168
- array( 2101, E_NOTICE, __( 'User viewed a post', 'wp-security-audit-log' ), __( 'Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
169
- array( 2106, E_NOTICE, __( 'A plugin modified a post', 'wp-security-audit-log' ), __( 'Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type %PostType%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
170
- array( 2111, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks in a post.', 'wp-security-audit-log' ), __( 'Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
171
- array( 2112, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks in a post.', 'wp-security-audit-log' ), __( 'Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
172
- array( 2119, E_NOTICE, __( 'User added post tag', 'wp-security-audit-log' ), __( 'Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
173
- array( 2120, E_NOTICE, __( 'User removed post tag', 'wp-security-audit-log' ), __( 'Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
174
  array( 2121, E_NOTICE, __( 'User created new tag', 'wp-security-audit-log' ), __( 'Added a new tag called %TagName%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
175
  array( 2122, E_NOTICE, __( 'User deleted tag', 'wp-security-audit-log' ), __( 'Deleted the tag %TagName%.', 'wp-security-audit-log' ) ),
176
  array( 2123, E_NOTICE, __( 'User renamed tag', 'wp-security-audit-log' ), __( 'Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
177
  array( 2124, E_NOTICE, __( 'User changed tag slug', 'wp-security-audit-log' ), __( 'Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
178
- array( 2125, E_NOTICE, __( 'User changed tag description', 'wp-security-audit-log' ), __( 'Changed the description of the tag %tag% from %old_desc% to %new_desc%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
179
  ),
180
 
181
  /**
@@ -440,7 +440,7 @@ function wsaldefaults_wsal_init( WpSecurityAuditLog $wsal ) {
440
  array( 4006, E_NOTICE, __( 'User changed another user\'s email address', 'wp-security-audit-log' ), __( 'Changed the email address of the user %TargetUsername% from %OldEmail% to %NewEmail%.', 'wp-security-audit-log' ) ),
441
  array( 4007, E_CRITICAL, __( 'User was deleted by another user', 'wp-security-audit-log' ), __( 'Deleted the user %TargetUserData->Username% with the role of %TargetUserData->Roles%.', 'wp-security-audit-log' ) ),
442
  array( 4014, E_NOTICE, __( 'User opened the profile page of another user', 'wp-security-audit-log' ), __( '%UserChanger% opened the profile page of the user %TargetUsername%.', 'wp-security-audit-log' ) ),
443
- array( 4015, E_NOTICE, __( 'User updated a custom field value for a user', 'wp-security-audit-log' ), __( 'Changed the value of the custom field %custom_field_name% from %old_value% to %new_value% for the user %TargetUsername%.', 'wp-security-audit-log' ) ),
444
  array( 4016, E_NOTICE, __( 'User created a custom field value for a user', 'wp-security-audit-log' ), __( 'Created the value of the custom field %custom_field_name% with %new_value% for the user %TargetUsername%.', 'wp-security-audit-log' ) ),
445
  array( 4017, E_NOTICE, __( 'User changed first name for a user', 'wp-security-audit-log' ), __( 'Changed the first name of the user %TargetUsername% from %old_firstname% to %new_firstname%', 'wp-security-audit-log' ) ),
446
  array( 4018, E_NOTICE, __( 'User changed last name for a user', 'wp-security-audit-log' ), __( 'Changed the last name of the user %TargetUsername% from %old_lastname% to %new_lastname%', 'wp-security-audit-log' ) ),
@@ -490,9 +490,9 @@ function wsaldefaults_wsal_init( WpSecurityAuditLog $wsal ) {
490
  array( 9001, E_NOTICE, __( 'User published a product', 'wp-security-audit-log' ), __( 'Published a product called %ProductTitle%. Product URL is %ProductUrl%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
491
  array( 9002, E_NOTICE, __( 'User created a new product category', 'wp-security-audit-log' ), __( 'Created a new product category called %CategoryName% in WooCommerce. Product category slug is %Slug%.', 'wp-security-audit-log' ) ),
492
  array( 9003, E_NOTICE, __( 'User changed the category of a product', 'wp-security-audit-log' ), __( 'Changed the category of the product %ProductTitle% from %OldCategories% to %NewCategories%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
493
- array( 9004, E_NOTICE, __( 'User modified the short description of a product', 'wp-security-audit-log' ), __( 'Modified the short description of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
494
  array( 9005, E_NOTICE, __( 'User modified the text of a product', 'wp-security-audit-log' ), __( 'Modified the text of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
495
- array( 9006, E_NOTICE, __( 'User changed the URL of a product', 'wp-security-audit-log' ), __( 'Changed the URL of the product %ProductTitle% from %OldUrl% to %NewUrl%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
496
  array( 9007, E_NOTICE, __( 'User changed the Product Data of a product', 'wp-security-audit-log' ), __( 'Changed the Product Data of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
497
  array( 9008, E_NOTICE, __( 'User changed the date of a product', 'wp-security-audit-log' ), __( 'Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
498
  array( 9009, E_NOTICE, __( 'User changed the visibility of a product', 'wp-security-audit-log' ), __( 'Changed the visibility of the product %ProductTitle% from %OldVisibility% to %NewVisibility%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
@@ -523,17 +523,17 @@ function wsaldefaults_wsal_init( WpSecurityAuditLog $wsal ) {
523
  array( 9034, E_CRITICAL, __( 'User Enabled/Disabled cash on delivery', 'wp-security-audit-log' ), __( '%Status% the option Enable cash on delivery in WooCommerce.', 'wp-security-audit-log' ) ),
524
  ),
525
  __( 'Yoast SEO', 'wp-security-audit-log' ) => array(
526
- array( 8801, E_NOTICE, __( 'User changed title of a SEO post', 'wp-security-audit-log' ), __( 'Changed the SEO title of the %PostStatus% %PostType% from %OldSEOTitle% to %NewSEOTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
527
- array( 8802, E_NOTICE, __( 'User changed the meta description of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle% from %old_desc% to %new_desc%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
528
  array( 8803, E_NOTICE, __( 'User changed setting to allow search engines to show post in search results of a SEO post', 'wp-security-audit-log' ), __( 'Changed the setting to allow search engines to show post in search results from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
529
  array( 8804, E_NOTICE, __( 'User Enabled/Disabled the option for search engine to follow links of a SEO post', 'wp-security-audit-log' ), __( '%NewStatus% the option for search engine to follow links in the %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
530
  array( 8805, E_NOTICE, __( 'User set the meta robots advanced setting of a SEO post', 'wp-security-audit-log' ), __( 'Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
531
- array( 8806, E_NOTICE, __( 'User changed the canonical URL of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle% from %OldCanonicalUrl% to %NewCanonicalUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
532
  array( 8807, E_NOTICE, __( 'User changed the focus keyword of a SEO post', 'wp-security-audit-log' ), __( 'Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% from %old_keywords% to %new_keywords%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
533
  array( 8808, E_NOTICE, __( 'User Enabled/Disabled the option Cornerston Content of a SEO post', 'wp-security-audit-log' ), __( '%Status% the option Cornerston Content on the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
534
  array( 8809, E_WARNING, __( 'User changed the Title Separator setting', 'wp-security-audit-log' ), __( 'Changed the Title Separator from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
535
- array( 8810, E_WARNING, __( 'User changed the Homepage Title setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Title from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
536
- array( 8811, E_WARNING, __( 'User changed the Homepage Meta description setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Meta description from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
537
  array( 8812, E_WARNING, __( 'User changed the Company or Person setting', 'wp-security-audit-log' ), __( 'Changed the Company or Person setting from %old% to %new% in the YOAST SEO plugin settings.', 'wp-security-audit-log' ) ),
538
  array( 8813, E_WARNING, __( 'User Enabled/Disabled the option Show Posts/Pages in Search Results in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
539
  array( 8814, E_WARNING, __( 'User changed the Posts/Pages title template in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( 'Changed the %SEOPostType% title template from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
144
  array( 2012, E_WARNING, __( 'User moved a post to the trash', 'wp-security-audit-log' ), __( 'Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is %PostUrl%.', 'wp-security-audit-log' ) ),
145
  array( 2014, E_CRITICAL, __( 'User restored a post from trash', 'wp-security-audit-log' ), __( 'The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
146
  array( 2016, E_NOTICE, __( 'User changed post category', 'wp-security-audit-log' ), __( 'Changed the category of the %PostStatus% %PostType% titled %PostTitle% from %OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
147
+ array( 2017, E_NOTICE, __( 'User changed post URL', 'wp-security-audit-log' ), __( 'Changed the URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
148
  array( 2019, E_NOTICE, __( 'User changed post author', 'wp-security-audit-log' ), __( 'Changed the author of the %PostStatus% %PostType% titled %PostTitle% from %OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
149
  array( 2021, E_NOTICE, __( 'User changed post status', 'wp-security-audit-log' ), __( 'Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to %NewStatus%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
150
  array( 2023, E_NOTICE, __( 'User created new category', 'wp-security-audit-log' ), __( 'Created a new category called %CategoryName%. Category slug is %Slug%. %CategoryLink%.', 'wp-security-audit-log' ) ),
157
  array( 2050, E_NOTICE, __( 'User removed post from sticky', 'wp-security-audit-log' ), __( 'Removed the post %PostTitle% from Sticky. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
158
  array( 2052, E_NOTICE, __( 'Changed the parent of a category.', 'wp-security-audit-log' ), __( 'Changed the parent of the category %CategoryName% from %OldParent% to %NewParent%. %CategoryLink%.', 'wp-security-audit-log' ) ),
159
  array( 2053, E_CRITICAL, __( 'User created a custom field for a post', 'wp-security-audit-log' ), __( 'Created a new custom field called %MetaKey% with value %MetaValue% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
160
+ array( 2054, E_CRITICAL, __( 'User updated a custom field value for a post', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey%%ReportText% in the %PostStatus% %PostType% titled %PostTitle%.%ChangeText% URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
161
  array( 2055, E_CRITICAL, __( 'User deleted a custom field from a post', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
162
  array( 2062, E_CRITICAL, __( 'User updated a custom field name for a post', 'wp-security-audit-log' ), __( 'Changed the custom field\'s name from %MetaKeyOld% to %MetaKeyNew% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
163
  array( 2065, E_WARNING, __( 'User modified the content of a post.', 'wp-security-audit-log' ), __( 'Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post URL is %PostUrl%. %RevisionLink% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
164
  array( 2073, E_NOTICE, __( 'User submitted a post for review', 'wp-security-audit-log' ), __( 'Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
165
  array( 2074, E_NOTICE, __( 'User scheduled a post', 'wp-security-audit-log' ), __( 'Scheduled the %PostType% titled %PostTitle% to be published on %PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
166
  array( 2086, E_NOTICE, __( 'User changed title of a post', 'wp-security-audit-log' ), __( 'Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
167
+ array( 2100, E_NOTICE, __( 'User opened a post in the editor', 'wp-security-audit-log' ), __( 'Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
168
+ array( 2101, E_NOTICE, __( 'User viewed a post', 'wp-security-audit-log' ), __( 'Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
169
+ array( 2106, E_NOTICE, __( 'A plugin modified a post', 'wp-security-audit-log' ), __( 'Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type %PostType%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
170
+ array( 2111, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks in a post.', 'wp-security-audit-log' ), __( 'Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
171
+ array( 2112, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks in a post.', 'wp-security-audit-log' ), __( 'Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
172
+ array( 2119, E_NOTICE, __( 'User added post tag', 'wp-security-audit-log' ), __( 'Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
173
+ array( 2120, E_NOTICE, __( 'User removed post tag', 'wp-security-audit-log' ), __( 'Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
174
  array( 2121, E_NOTICE, __( 'User created new tag', 'wp-security-audit-log' ), __( 'Added a new tag called %TagName%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
175
  array( 2122, E_NOTICE, __( 'User deleted tag', 'wp-security-audit-log' ), __( 'Deleted the tag %TagName%.', 'wp-security-audit-log' ) ),
176
  array( 2123, E_NOTICE, __( 'User renamed tag', 'wp-security-audit-log' ), __( 'Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
177
  array( 2124, E_NOTICE, __( 'User changed tag slug', 'wp-security-audit-log' ), __( 'Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
178
+ array( 2125, E_NOTICE, __( 'User changed tag description', 'wp-security-audit-log' ), __( 'Changed the description of the tag %tag%%ReportText%.%ChangeText% View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
179
  ),
180
 
181
  /**
440
  array( 4006, E_NOTICE, __( 'User changed another user\'s email address', 'wp-security-audit-log' ), __( 'Changed the email address of the user %TargetUsername% from %OldEmail% to %NewEmail%.', 'wp-security-audit-log' ) ),
441
  array( 4007, E_CRITICAL, __( 'User was deleted by another user', 'wp-security-audit-log' ), __( 'Deleted the user %TargetUserData->Username% with the role of %TargetUserData->Roles%.', 'wp-security-audit-log' ) ),
442
  array( 4014, E_NOTICE, __( 'User opened the profile page of another user', 'wp-security-audit-log' ), __( '%UserChanger% opened the profile page of the user %TargetUsername%.', 'wp-security-audit-log' ) ),
443
+ array( 4015, E_NOTICE, __( 'User updated a custom field value for a user', 'wp-security-audit-log' ), __( 'Changed the value of the custom field %custom_field_name%%ReportText% for the user %TargetUsername%.%ChangeText%', 'wp-security-audit-log' ) ),
444
  array( 4016, E_NOTICE, __( 'User created a custom field value for a user', 'wp-security-audit-log' ), __( 'Created the value of the custom field %custom_field_name% with %new_value% for the user %TargetUsername%.', 'wp-security-audit-log' ) ),
445
  array( 4017, E_NOTICE, __( 'User changed first name for a user', 'wp-security-audit-log' ), __( 'Changed the first name of the user %TargetUsername% from %old_firstname% to %new_firstname%', 'wp-security-audit-log' ) ),
446
  array( 4018, E_NOTICE, __( 'User changed last name for a user', 'wp-security-audit-log' ), __( 'Changed the last name of the user %TargetUsername% from %old_lastname% to %new_lastname%', 'wp-security-audit-log' ) ),
490
  array( 9001, E_NOTICE, __( 'User published a product', 'wp-security-audit-log' ), __( 'Published a product called %ProductTitle%. Product URL is %ProductUrl%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
491
  array( 9002, E_NOTICE, __( 'User created a new product category', 'wp-security-audit-log' ), __( 'Created a new product category called %CategoryName% in WooCommerce. Product category slug is %Slug%.', 'wp-security-audit-log' ) ),
492
  array( 9003, E_NOTICE, __( 'User changed the category of a product', 'wp-security-audit-log' ), __( 'Changed the category of the product %ProductTitle% from %OldCategories% to %NewCategories%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
493
+ array( 9004, E_NOTICE, __( 'User modified the short description of a product', 'wp-security-audit-log' ), __( 'Modified the short description of the product %ProductTitle%.%ChangeText% View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
494
  array( 9005, E_NOTICE, __( 'User modified the text of a product', 'wp-security-audit-log' ), __( 'Modified the text of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
495
+ array( 9006, E_NOTICE, __( 'User changed the URL of a product', 'wp-security-audit-log' ), __( 'Changed the URL of the product %ProductTitle%%ReportText%.%ChangeText% View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
496
  array( 9007, E_NOTICE, __( 'User changed the Product Data of a product', 'wp-security-audit-log' ), __( 'Changed the Product Data of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
497
  array( 9008, E_NOTICE, __( 'User changed the date of a product', 'wp-security-audit-log' ), __( 'Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
498
  array( 9009, E_NOTICE, __( 'User changed the visibility of a product', 'wp-security-audit-log' ), __( 'Changed the visibility of the product %ProductTitle% from %OldVisibility% to %NewVisibility%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
523
  array( 9034, E_CRITICAL, __( 'User Enabled/Disabled cash on delivery', 'wp-security-audit-log' ), __( '%Status% the option Enable cash on delivery in WooCommerce.', 'wp-security-audit-log' ) ),
524
  ),
525
  __( 'Yoast SEO', 'wp-security-audit-log' ) => array(
526
+ array( 8801, E_NOTICE, __( 'User changed title of a SEO post', 'wp-security-audit-log' ), __( 'Changed the SEO title of the %PostStatus% %PostType%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
527
+ array( 8802, E_NOTICE, __( 'User changed the meta description of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
528
  array( 8803, E_NOTICE, __( 'User changed setting to allow search engines to show post in search results of a SEO post', 'wp-security-audit-log' ), __( 'Changed the setting to allow search engines to show post in search results from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
529
  array( 8804, E_NOTICE, __( 'User Enabled/Disabled the option for search engine to follow links of a SEO post', 'wp-security-audit-log' ), __( '%NewStatus% the option for search engine to follow links in the %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
530
  array( 8805, E_NOTICE, __( 'User set the meta robots advanced setting of a SEO post', 'wp-security-audit-log' ), __( 'Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
531
+ array( 8806, E_NOTICE, __( 'User changed the canonical URL of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
532
  array( 8807, E_NOTICE, __( 'User changed the focus keyword of a SEO post', 'wp-security-audit-log' ), __( 'Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% from %old_keywords% to %new_keywords%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
533
  array( 8808, E_NOTICE, __( 'User Enabled/Disabled the option Cornerston Content of a SEO post', 'wp-security-audit-log' ), __( '%Status% the option Cornerston Content on the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
534
  array( 8809, E_WARNING, __( 'User changed the Title Separator setting', 'wp-security-audit-log' ), __( 'Changed the Title Separator from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
535
+ array( 8810, E_WARNING, __( 'User changed the Homepage Title setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Title%ReportText% in the Yoast SEO plugin settings.%ChangeText%', 'wp-security-audit-log' ) ),
536
+ array( 8811, E_WARNING, __( 'User changed the Homepage Meta description setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Meta description%ReportText% in the Yoast SEO plugin settings.%ChangeText%', 'wp-security-audit-log' ) ),
537
  array( 8812, E_WARNING, __( 'User changed the Company or Person setting', 'wp-security-audit-log' ), __( 'Changed the Company or Person setting from %old% to %new% in the YOAST SEO plugin settings.', 'wp-security-audit-log' ) ),
538
  array( 8813, E_WARNING, __( 'User Enabled/Disabled the option Show Posts/Pages in Search Results in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
539
  array( 8814, E_WARNING, __( 'User changed the Posts/Pages title template in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( 'Changed the %SEOPostType% title template from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
js/auditlog.js CHANGED
@@ -1,13 +1,13 @@
1
  var WsalData;
2
 
3
- window['WsalAuditLogRefreshed'] = function(){
4
  // fix pagination links causing form params to get lost
5
- jQuery('span.pagination-links a').click(function(ev){
6
  ev.preventDefault();
7
- var deparam = function(url){
8
  var obj = {};
9
  var pairs = url.split('&');
10
- for(var i in pairs){
11
  var split = pairs[i].split('=');
12
  obj[decodeURIComponent(split[0])] = decodeURIComponent(split[1]);
13
  }
@@ -20,74 +20,89 @@ window['WsalAuditLogRefreshed'] = function(){
20
  ).submit();
21
  });
22
 
23
- var modification_alerts = [ '1002', '1003', '6007', '6023' ];
24
 
25
- jQuery( '.log-disable' ).each( function() {
26
- if ( -1 == modification_alerts.indexOf( this.innerText ) ) {
27
  // Tooltip Confirm disable alert.
28
- jQuery( this ).darkTooltip( {
29
- animation: 'fadeIn',
30
- size: 'small',
31
- gravity: 'west',
32
- confirm: true,
33
- yes: 'Disable',
34
- no: '',
35
- onYes: function( elem ) {
36
- WsalDisableByCode( elem.attr( 'data-alert-id' ), elem.data( 'disable-alert-nonce' ) )
37
  }
38
- } );
39
  } else {
40
  // Tooltip Confirm disable alert.
41
- jQuery( this ).darkTooltip( {
42
- animation: 'fadeIn',
43
- size: 'small',
44
- gravity: 'west',
45
- confirm: true,
46
- yes: 'Disable',
47
- no: '<span>Modify</span>',
48
- onYes: function( elem ) {
49
- WsalDisableByCode( elem.attr( 'data-alert-id' ), elem.data( 'disable-alert-nonce' ) );
50
  },
51
- onNo: function( elem ) {
52
- window.location.href = elem.attr( 'data-link' );
53
  }
54
- } );
55
  }
56
- } );
57
 
58
  // tooltip severity type
59
  jQuery('.tooltip').darkTooltip({
60
  animation: 'fadeIn',
61
- gravity: 'west',
62
- size: 'medium'
 
 
 
 
 
 
 
63
  });
64
  };
65
 
66
- function WsalAuditLogInit(_WsalData){
67
  WsalData = _WsalData;
68
  var WsalTkn = WsalData.autorefresh.token;
69
 
70
- // list refresher
71
  var WsalAjx = null;
72
- var WsalChk = function(){
73
- if(WsalAjx)WsalAjx.abort();
 
 
 
 
74
  WsalAjx = jQuery.post(WsalData.ajaxurl, {
75
  action: 'AjaxRefresh',
76
  logcount: WsalTkn
77
- }, function(data){
78
  WsalAjx = null;
79
- if(data && data !== 'false'){
80
  WsalTkn = data;
81
  jQuery('#audit-log-viewer').load(
82
  location.href + ' #audit-log-viewer-content',
83
  window['WsalAuditLogRefreshed']
84
  );
85
  }
86
- WsalChk();
87
  });
88
  };
89
- if(WsalData.autorefresh.enabled){
90
- setInterval(WsalChk, 40000);
 
 
 
 
 
91
  WsalChk();
92
  }
93
 
@@ -96,55 +111,55 @@ function WsalAuditLogInit(_WsalData){
96
 
97
  var WsalIppsPrev;
98
 
99
- function WsalIppsFocus(value){
100
  WsalIppsPrev = value;
101
  }
102
 
103
- function WsalIppsChange(value){
104
  jQuery('select.wsal-ipps').attr('disabled', true);
105
  jQuery.post(WsalData.ajaxurl, {
106
  action: 'AjaxSetIpp',
107
  count: value
108
- }, function(){
109
  location.reload();
110
  });
111
  }
112
 
113
- function WsalSsasInit(){
114
  var SsasAjx = null;
115
  var SsasInps = jQuery("input.wsal-ssas");
116
  SsasInps.after('<div class="wsal-ssas-dd" style="display: none;"/>');
117
- SsasInps.click(function(){
118
  jQuery(this).select();
119
  });
120
  window['WsalAuditLogRefreshed']();
121
- SsasInps.keyup(function(){
122
  var SsasInp = jQuery(this);
123
  var SsasDiv = SsasInp.next();
124
  var SsasVal = SsasInp.val();
125
- if(SsasAjx)SsasAjx.abort();
126
  SsasInp.removeClass('loading');
127
 
128
  // do a new search
129
- if(SsasInp.attr('data-oldvalue') !== SsasVal && SsasVal.length > 2){
130
  SsasInp.addClass('loading');
131
  SsasAjx = jQuery.post(WsalData.ajaxurl, {
132
  action: 'AjaxSearchSite',
133
  search: SsasVal
134
- }, function(data){
135
- if(SsasAjx)SsasAjx = null;
136
  SsasInp.removeClass('loading');
137
  SsasDiv.hide();
138
  SsasDiv.html('');
139
- if(data && data.length){
140
  var SsasReg = new RegExp(SsasVal.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'), 'gi');
141
- for (var i = 0; i < data.length; i++){
142
  var link = jQuery('<a href="javascript:;" onclick="WsalSsasChange(' + data[i].blog_id + ')"/>')
143
  .text(data[i].blogname + ' (' + data[i].domain + ')');
144
  link.html(link.text().replace(SsasReg, '<u>$&</u>'));
145
  SsasDiv.append(link);
146
  }
147
- }else{
148
  SsasDiv.append(jQuery('<span/>').text(WsalData.tr8n.searchnone));
149
  }
150
  SsasDiv.prepend(jQuery('<a href="javascript:;" onclick="WsalSsasChange(0)" class="allsites"/>').text(WsalData.tr8n.searchback));
@@ -155,8 +170,8 @@ function WsalSsasInit(){
155
 
156
  // handle keys
157
  });
158
- SsasInps.blur(function(){
159
- setTimeout(function(){
160
  var SsasInp = jQuery(this);
161
  var SsasDiv = SsasInp.next();
162
  SsasInp.attr('data-oldvalue', '');
@@ -165,30 +180,30 @@ function WsalSsasInit(){
165
  });
166
  }
167
 
168
- function WsalSsasChange(value){
169
  jQuery('div.wsal-ssas-dd').hide();
170
  jQuery('input.wsal-ssas').attr('disabled', true);
171
  jQuery('#wsal-cbid').val(value);
172
  jQuery('#audit-log-viewer').submit();
173
  }
174
 
175
- function WsalDisableCustom(link, meta_key){
176
  var nfe = jQuery(this).parents('div:first');
177
- var nonce = jQuery( this ).data( 'disable-custom-nonce' );
178
  jQuery(link).hide();
179
  jQuery.ajax({
180
  type: 'POST',
181
  url: ajaxurl,
182
  async: false,
183
  data: { action: 'AjaxDisableCustomField', notice: meta_key, disable_nonce: nonce },
184
- success: function(data) {
185
  var notice = jQuery('<div class="updated" data-notice-name="notifications-extension"></div>').html(data);
186
  jQuery("h2:first").after(notice);
187
  }
188
  });
189
  }
190
 
191
- function WsalDBChange(value){
192
  jQuery.ajax({
193
  type: 'POST',
194
  url: ajaxurl,
@@ -197,23 +212,23 @@ function WsalDBChange(value){
197
  action: 'AjaxSwitchDB',
198
  selected_db: value
199
  },
200
- success: function() {
201
  location.reload();
202
  }
203
  });
204
  }
205
 
206
- function WsalDisableByCode( code, nonce ) {
207
- jQuery.ajax( {
208
  type: 'POST',
209
  url: ajaxurl,
210
  async: true,
211
  data: { action: 'AjaxDisableByCode', code: code, disable_nonce: nonce },
212
- success: function( data ) {
213
  var notice = jQuery('<div class="updated" data-notice-name="disabled"></div>').html(data);
214
  jQuery("h2:first").after(notice);
215
  }
216
- } );
217
  }
218
 
219
  /**
@@ -222,21 +237,21 @@ function WsalDisableByCode( code, nonce ) {
222
  * @param {string} filename - File name.
223
  * @param {string} text - File content.
224
  */
225
- function download( filename, text ) {
226
  // Create temporary element.
227
  var element = document.createElement('a');
228
- element.setAttribute( 'href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text) );
229
- element.setAttribute( 'download', filename );
230
 
231
  // Set the element to not display.
232
  element.style.display = 'none';
233
- document.body.appendChild( element );
234
 
235
  // Simlate click on the element.
236
  element.click();
237
 
238
  // Remove temporary element.
239
- document.body.removeChild( element );
240
  }
241
 
242
  /**
@@ -244,16 +259,16 @@ function download( filename, text ) {
244
  *
245
  * @param {object} element - Current element.
246
  */
247
- function download_404_log( element ) {
248
- download_nonce = jQuery( element ).data( 'nonce-404' ); // Nonce.
249
- log_file = jQuery( element ).data( 'log-file' ); // Log file URL.
250
- site_id = jQuery( element ).data( 'site-id' ); // Site ID.
251
 
252
- if ( ! download_nonce || ! log_file ) {
253
- console.log( 'Something went wrong!' );
254
  }
255
 
256
- jQuery.ajax( {
257
  type: 'POST',
258
  url: ajaxurl,
259
  async: true,
@@ -264,14 +279,14 @@ function download_404_log( element ) {
264
  log_file: log_file,
265
  site_id: site_id
266
  },
267
- success: function( data ) {
268
- if ( data.success ) {
269
- download( data.filename, data.file_content );
270
  } else {
271
- console.log( data.message );
272
  }
273
  }
274
- } );
275
  }
276
 
277
  /**
@@ -279,11 +294,11 @@ function download_404_log( element ) {
279
  *
280
  * @param {object} element - Current element.
281
  */
282
- function download_failed_login_log( element ) {
283
- nonce = jQuery( element ).data( 'download-nonce' ); // Nonce.
284
- alert = jQuery( element ).parent().attr( 'id' ).substring( 5 );
285
 
286
- jQuery.ajax( {
287
  type: 'POST',
288
  url: ajaxurl,
289
  async: true,
@@ -292,10 +307,10 @@ function download_failed_login_log( element ) {
292
  download_nonce: nonce,
293
  alert_id: alert
294
  },
295
- success: function( data ) {
296
- data = data.replace( /,/g, '\n' );
297
  // Start file download.
298
- download( 'failed_logins.log', data );
299
  }
300
- } );
301
  }
1
  var WsalData;
2
 
3
+ window['WsalAuditLogRefreshed'] = function () {
4
  // fix pagination links causing form params to get lost
5
+ jQuery('span.pagination-links a').click(function (ev) {
6
  ev.preventDefault();
7
+ var deparam = function (url) {
8
  var obj = {};
9
  var pairs = url.split('&');
10
+ for (var i in pairs) {
11
  var split = pairs[i].split('=');
12
  obj[decodeURIComponent(split[0])] = decodeURIComponent(split[1]);
13
  }
20
  ).submit();
21
  });
22
 
23
+ var modification_alerts = ['1002', '1003', '6007', '6023'];
24
 
25
+ jQuery('.log-disable').each(function () {
26
+ if (-1 == modification_alerts.indexOf(this.innerText)) {
27
  // Tooltip Confirm disable alert.
28
+ jQuery(this).darkTooltip({
29
+ animation: 'fadeIn',
30
+ size: 'small',
31
+ gravity: 'west',
32
+ confirm: true,
33
+ yes: 'Disable',
34
+ no: '',
35
+ onYes: function (elem) {
36
+ WsalDisableByCode(elem.attr('data-alert-id'), elem.data('disable-alert-nonce'))
37
  }
38
+ });
39
  } else {
40
  // Tooltip Confirm disable alert.
41
+ jQuery(this).darkTooltip({
42
+ animation: 'fadeIn',
43
+ size: 'small',
44
+ gravity: 'west',
45
+ confirm: true,
46
+ yes: 'Disable',
47
+ no: '<span>Modify</span>',
48
+ onYes: function (elem) {
49
+ WsalDisableByCode(elem.attr('data-alert-id'), elem.data('disable-alert-nonce'));
50
  },
51
+ onNo: function (elem) {
52
+ window.location.href = elem.attr('data-link');
53
  }
54
+ });
55
  }
56
+ });
57
 
58
  // tooltip severity type
59
  jQuery('.tooltip').darkTooltip({
60
  animation: 'fadeIn',
61
+ gravity: 'west',
62
+ size: 'medium'
63
+ });
64
+
65
+ // Data inspector tooltip.
66
+ jQuery('.more-info').darkTooltip({
67
+ animation: 'fadeIn',
68
+ gravity: 'east',
69
+ size: 'medium'
70
  });
71
  };
72
 
73
+ function WsalAuditLogInit(_WsalData) {
74
  WsalData = _WsalData;
75
  var WsalTkn = WsalData.autorefresh.token;
76
 
77
+ // List refresher.
78
  var WsalAjx = null;
79
+
80
+ /**
81
+ * Check & Load New Alerts.
82
+ */
83
+ var WsalChk = function () {
84
+ if (WsalAjx) WsalAjx.abort();
85
  WsalAjx = jQuery.post(WsalData.ajaxurl, {
86
  action: 'AjaxRefresh',
87
  logcount: WsalTkn
88
+ }, function (data) {
89
  WsalAjx = null;
90
+ if (data && data !== 'false') {
91
  WsalTkn = data;
92
  jQuery('#audit-log-viewer').load(
93
  location.href + ' #audit-log-viewer-content',
94
  window['WsalAuditLogRefreshed']
95
  );
96
  }
 
97
  });
98
  };
99
+
100
+ // If audit log auto refresh is enabled.
101
+ if (WsalData.autorefresh.enabled) {
102
+ // Check for new alerts every 30 secs.
103
+ setInterval(WsalChk, 30000);
104
+
105
+ // Make the first call on page load.
106
  WsalChk();
107
  }
108
 
111
 
112
  var WsalIppsPrev;
113
 
114
+ function WsalIppsFocus(value) {
115
  WsalIppsPrev = value;
116
  }
117
 
118
+ function WsalIppsChange(value) {
119
  jQuery('select.wsal-ipps').attr('disabled', true);
120
  jQuery.post(WsalData.ajaxurl, {
121
  action: 'AjaxSetIpp',
122
  count: value
123
+ }, function () {
124
  location.reload();
125
  });
126
  }
127
 
128
+ function WsalSsasInit() {
129
  var SsasAjx = null;
130
  var SsasInps = jQuery("input.wsal-ssas");
131
  SsasInps.after('<div class="wsal-ssas-dd" style="display: none;"/>');
132
+ SsasInps.click(function () {
133
  jQuery(this).select();
134
  });
135
  window['WsalAuditLogRefreshed']();
136
+ SsasInps.keyup(function () {
137
  var SsasInp = jQuery(this);
138
  var SsasDiv = SsasInp.next();
139
  var SsasVal = SsasInp.val();
140
+ if (SsasAjx) SsasAjx.abort();
141
  SsasInp.removeClass('loading');
142
 
143
  // do a new search
144
+ if (SsasInp.attr('data-oldvalue') !== SsasVal && SsasVal.length > 2) {
145
  SsasInp.addClass('loading');
146
  SsasAjx = jQuery.post(WsalData.ajaxurl, {
147
  action: 'AjaxSearchSite',
148
  search: SsasVal
149
+ }, function (data) {
150
+ if (SsasAjx) SsasAjx = null;
151
  SsasInp.removeClass('loading');
152
  SsasDiv.hide();
153
  SsasDiv.html('');
154
+ if (data && data.length) {
155
  var SsasReg = new RegExp(SsasVal.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'), 'gi');
156
+ for (var i = 0; i < data.length; i++) {
157
  var link = jQuery('<a href="javascript:;" onclick="WsalSsasChange(' + data[i].blog_id + ')"/>')
158
  .text(data[i].blogname + ' (' + data[i].domain + ')');
159
  link.html(link.text().replace(SsasReg, '<u>$&</u>'));
160
  SsasDiv.append(link);
161
  }
162
+ } else {
163
  SsasDiv.append(jQuery('<span/>').text(WsalData.tr8n.searchnone));
164
  }
165
  SsasDiv.prepend(jQuery('<a href="javascript:;" onclick="WsalSsasChange(0)" class="allsites"/>').text(WsalData.tr8n.searchback));
170
 
171
  // handle keys
172
  });
173
+ SsasInps.blur(function () {
174
+ setTimeout(function () {
175
  var SsasInp = jQuery(this);
176
  var SsasDiv = SsasInp.next();
177
  SsasInp.attr('data-oldvalue', '');
180
  });
181
  }
182
 
183
+ function WsalSsasChange(value) {
184
  jQuery('div.wsal-ssas-dd').hide();
185
  jQuery('input.wsal-ssas').attr('disabled', true);
186
  jQuery('#wsal-cbid').val(value);
187
  jQuery('#audit-log-viewer').submit();
188
  }
189
 
190
+ function WsalDisableCustom(link, meta_key) {
191
  var nfe = jQuery(this).parents('div:first');
192
+ var nonce = jQuery(this).data('disable-custom-nonce');
193
  jQuery(link).hide();
194
  jQuery.ajax({
195
  type: 'POST',
196
  url: ajaxurl,
197
  async: false,
198
  data: { action: 'AjaxDisableCustomField', notice: meta_key, disable_nonce: nonce },
199
+ success: function (data) {
200
  var notice = jQuery('<div class="updated" data-notice-name="notifications-extension"></div>').html(data);
201
  jQuery("h2:first").after(notice);
202
  }
203
  });
204
  }
205
 
206
+ function WsalDBChange(value) {
207
  jQuery.ajax({
208
  type: 'POST',
209
  url: ajaxurl,
212
  action: 'AjaxSwitchDB',
213
  selected_db: value
214
  },
215
+ success: function () {
216
  location.reload();
217
  }
218
  });
219
  }
220
 
221
+ function WsalDisableByCode(code, nonce) {
222
+ jQuery.ajax({
223
  type: 'POST',
224
  url: ajaxurl,
225
  async: true,
226
  data: { action: 'AjaxDisableByCode', code: code, disable_nonce: nonce },
227
+ success: function (data) {
228
  var notice = jQuery('<div class="updated" data-notice-name="disabled"></div>').html(data);
229
  jQuery("h2:first").after(notice);
230
  }
231
+ });
232
  }
233
 
234
  /**
237
  * @param {string} filename - File name.
238
  * @param {string} text - File content.
239
  */
240
+ function download(filename, text) {
241
  // Create temporary element.
242
  var element = document.createElement('a');
243
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
244
+ element.setAttribute('download', filename);
245
 
246
  // Set the element to not display.
247
  element.style.display = 'none';
248
+ document.body.appendChild(element);
249
 
250
  // Simlate click on the element.
251
  element.click();
252
 
253
  // Remove temporary element.
254
+ document.body.removeChild(element);
255
  }
256
 
257
  /**
259
  *
260
  * @param {object} element - Current element.
261
  */
262
+ function download_404_log(element) {
263
+ download_nonce = jQuery(element).data('nonce-404'); // Nonce.
264
+ log_file = jQuery(element).data('log-file'); // Log file URL.
265
+ site_id = jQuery(element).data('site-id'); // Site ID.
266
 
267
+ if (!download_nonce || !log_file) {
268
+ console.log('Something went wrong!');
269
  }
270
 
271
+ jQuery.ajax({
272
  type: 'POST',
273
  url: ajaxurl,
274
  async: true,
279
  log_file: log_file,
280
  site_id: site_id
281
  },
282
+ success: function (data) {
283
+ if (data.success) {
284
+ download(data.filename, data.file_content);
285
  } else {
286
+ console.log(data.message);
287
  }
288
  }
289
+ });
290
  }
291
 
292
  /**
294
  *
295
  * @param {object} element - Current element.
296
  */
297
+ function download_failed_login_log(element) {
298
+ nonce = jQuery(element).data('download-nonce'); // Nonce.
299
+ alert = jQuery(element).parent().attr('id').substring(5);
300
 
301
+ jQuery.ajax({
302
  type: 'POST',
303
  url: ajaxurl,
304
  async: true,
307
  download_nonce: nonce,
308
  alert_id: alert
309
  },
310
+ success: function (data) {
311
+ data = data.replace(/,/g, '\n');
312
  // Start file download.
313
+ download('failed_logins.log', data);
314
  }
315
+ });
316
  }
js/wsal-ref.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.addEventListener('load', function(){
2
+
3
+ var tip = document.createElement('div'),
4
+ refs = document.querySelectorAll('.ref');
5
+
6
+ for(var i = 0, m = refs.length; i < m; i++){
7
+ var kbds = refs[i].querySelectorAll('[data-toggle]'),
8
+ tippable = refs[i].querySelectorAll('[data-tip],[h]'),
9
+ tips = refs[i].querySelectorAll('div, t');
10
+
11
+ for(var j = 0, n = kbds.length; j < n; j++){
12
+ if(kbds[j].parentNode !== refs[i])
13
+ kbds[j].onclick = function(e){
14
+ ('exp' in this.dataset) ? delete this.dataset.exp : this.dataset.exp = 1;
15
+ }
16
+ }
17
+
18
+ [].filter.call(tips, function(node){
19
+ return node.parentNode == refs[i];
20
+ });
21
+
22
+ for(var j = 0, n = tippable.length; j < n; j++){
23
+ tippable[j].tipRef = tips[tippable[j].dataset.tip] || tips[tippable[j].getAttribute('h')];
24
+ tippable[j].onmouseover = function(){
25
+ tip.className = 'ref visible';
26
+ tip.innerHTML = this.tipRef.innerHTML;
27
+ window.clearTimeout(tip.fadeOut);
28
+ };
29
+ tippable[j].onmouseout = function(){
30
+ tip.className = 'ref visible fadingOut';
31
+ tip.fadeOut = window.setTimeout(function(){
32
+ tip.innerHTML = '';
33
+ tip.className = '';
34
+ }, 250);
35
+ };
36
+ }
37
+
38
+ refs[i].onmousemove = function(e){
39
+ if(tip.className.indexOf('visible') < 0)
40
+ return;
41
+ tip.style.top = ((document.documentElement.clientHeight - e.clientY) < tip.offsetHeight + 20 ? Math.max(e.pageY - tip.offsetHeight, 0) : e.pageY) + 'px';
42
+ tip.style.left = ((document.documentElement.clientWidth - e.clientX) < tip.offsetWidth + 20 ? Math.max(e.pageX - tip.offsetWidth, 0) : e.pageX) + 'px';
43
+ };
44
+ }
45
+
46
+ tip.id = 'rTip';
47
+ document.body.appendChild(tip);
48
+
49
+ window.addEventListener('keydown', function(e){
50
+ if((e.keyCode != 88) || (['input', 'textarea', 'select'].indexOf(e.target.tagName.toLowerCase()) > -1))
51
+ return;
52
+
53
+ e.preventDefault();
54
+
55
+ if(e.ctrlKey && e.keyCode == 88){
56
+ var d = refs[0].style.display !== 'none' ? 'none' : 'block';
57
+ for(var i = 0, n = refs.length; i < n; i++)
58
+ refs[i].style.display = d;
59
+
60
+ return;
61
+ }
62
+
63
+ var kbds = document.querySelectorAll('.ref [data-toggle]'),
64
+ m = kbds.length,
65
+ partlyExp = document.querySelectorAll('.ref [data-toggle][data-exp]').length !== m;
66
+
67
+ for(var i = 0; i < m; i++)
68
+ partlyExp ? (kbds[i].dataset.exp = 1) : (delete kbds[i].dataset.exp);
69
+
70
+ });
71
+
72
+ });
73
+
languages/wp-security-audit-log.pot CHANGED
@@ -3,14 +3,14 @@ msgid ""
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: WP Security Audit Log\n"
6
- "POT-Creation-Date: 2017-09-19 15:19+0100\n"
7
- "PO-Revision-Date: 2017-09-19 15:19+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 2.0.3\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
  "X-Poedit-WPHeader: wp-security-audit-log.php\n"
@@ -21,582 +21,674 @@ msgstr ""
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
 
24
- #: classes/AuditLogListView.php:40
25
  msgid "No events so far."
26
  msgstr ""
27
 
28
- #: classes/AuditLogListView.php:46
29
- msgid "Other"
30
- msgstr ""
31
-
32
- #: classes/AuditLogListView.php:53
33
  msgid "Show "
34
  msgstr ""
35
 
36
- #: classes/AuditLogListView.php:63
37
  msgid " Items"
38
  msgstr ""
39
 
40
- #: classes/AuditLogListView.php:76 classes/Views/AuditLog.php:150
41
- #: classes/Views/AuditLog.php:170
42
  msgid "All Sites"
43
  msgstr ""
44
 
45
- #: classes/AuditLogListView.php:97
46
  msgid "Live Database"
47
  msgstr ""
48
 
49
- #: classes/AuditLogListView.php:98
50
  msgid "Archive Database"
51
  msgstr ""
52
 
53
- #: classes/AuditLogListView.php:137 classes/WidgetManager.php:51
54
  msgid "User"
55
  msgstr ""
56
 
57
- #: classes/AuditLogListView.php:139 classes/Views/Settings.php:529
58
  msgid "Username"
59
  msgstr ""
60
 
61
- #: classes/AuditLogListView.php:144 classes/AuditLogListView.php:161
62
- #: classes/Views/ToggleAlerts.php:109
63
- msgid "Code"
64
  msgstr ""
65
 
66
- #: classes/AuditLogListView.php:145 classes/AuditLogListView.php:164
67
- #: classes/Views/ToggleAlerts.php:110
68
- msgid "Type"
69
  msgstr ""
70
 
71
- #: classes/AuditLogListView.php:146 classes/AuditLogListView.php:167
72
  msgid "Date"
73
  msgstr ""
74
 
75
- #: classes/AuditLogListView.php:148 classes/AuditLogListView.php:173
76
  msgid "Source IP"
77
  msgstr ""
78
 
79
- #: classes/AuditLogListView.php:151 classes/AuditLogListView.php:176
80
  msgid "Site"
81
  msgstr ""
82
 
83
- #: classes/AuditLogListView.php:153 classes/AuditLogListView.php:179
84
  msgid "Message"
85
  msgstr ""
86
 
87
- #: classes/AuditLogListView.php:217
88
  msgid "Click to toggle."
89
  msgstr ""
90
 
91
- #: classes/AuditLogListView.php:220
92
  msgid "Disable this type of alerts."
93
  msgstr ""
94
 
95
- #: classes/AuditLogListView.php:225
96
  msgid "Unknown error code."
97
  msgstr ""
98
 
99
- #: classes/AuditLogListView.php:256
100
  msgid "Show me all activity by this User"
101
  msgstr ""
102
 
103
- #: classes/AuditLogListView.php:271
104
  msgid "Unknown"
105
  msgstr ""
106
 
107
- #: classes/AuditLogListView.php:275
 
108
  msgid "Plugin"
109
  msgstr ""
110
 
111
- #: classes/AuditLogListView.php:279
112
  msgid "Plugins"
113
  msgstr ""
114
 
115
- #: classes/AuditLogListView.php:283
116
  msgid "Website Visitor"
117
  msgstr ""
118
 
119
- #: classes/AuditLogListView.php:287
120
  msgid "System"
121
  msgstr ""
122
 
123
- #: classes/AuditLogListView.php:307 classes/AuditLogListView.php:320
124
  msgid "Show me all activity originating from this IP Address"
125
  msgstr ""
126
 
127
- #: classes/AuditLogListView.php:341
 
 
 
 
128
  msgid "Alert Data Inspector"
129
  msgstr ""
130
 
131
- #: classes/Sensors/Content.php:626 classes/Sensors/Content.php:634
132
- #: classes/Sensors/WooCommerce.php:331 classes/Sensors/WooCommerce.php:337
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  msgid "Password Protected"
134
  msgstr ""
135
 
136
- #: classes/Sensors/Content.php:628 classes/Sensors/Content.php:636
137
  msgid "Public"
138
  msgstr ""
139
 
140
- #: classes/Sensors/Content.php:630 classes/Sensors/Content.php:638
141
  msgid "Private"
142
  msgstr ""
143
 
144
- #: classes/Sensors/WooCommerce.php:807
145
  msgid "In stock"
146
  msgstr ""
147
 
148
- #: classes/Sensors/WooCommerce.php:809
149
  msgid "Out of stock"
150
  msgstr ""
151
 
152
- #: classes/Views/About.php:11
153
- msgid "About WP Security Audit Log"
154
  msgstr ""
155
 
156
- #: classes/Views/About.php:21
157
- msgid "About"
 
 
158
  msgstr ""
159
 
160
- #: classes/Views/About.php:37
161
  msgid ""
162
- "WP Security Audit Log enables WordPress administrators and owners to "
163
- "identify WordPress security issues before they become a security problem by "
164
- "keeping a security audit log. WP Security Audit Log is developed by "
165
- "WordPress security professionals WP White Security."
166
  msgstr ""
167
 
168
- #: classes/Views/About.php:39
169
- msgid ""
170
- "Keep A WordPress Security Audit Log & Identify WordPress Security Issues"
171
  msgstr ""
172
 
173
- #: classes/Views/About.php:41
174
  msgid ""
175
- "WP Security Audit Log logs everything happening on your WordPress blog or "
176
- "website and WordPress multisite network. By using WP Security Audit Log "
177
- "security plugin it is very easy to track suspicious user activity before it "
178
- "becomes a problem or a security issue. A WordPress security alert is "
179
- "generated by the plugin when:"
180
  msgstr ""
181
 
182
- #: classes/Views/About.php:44
183
- msgid "User creates a new user or a new user is registered"
184
  msgstr ""
185
 
186
- #: classes/Views/About.php:45
187
- msgid ""
188
- "Existing user changes the role, password or other properties of another user"
189
  msgstr ""
190
 
191
- #: classes/Views/About.php:46
192
- msgid "Existing user on a WordPress multisite network is added to a site"
 
 
 
193
  msgstr ""
194
 
195
- #: classes/Views/About.php:47
196
- msgid "User uploads or deletes a file, changes a password or email address"
197
  msgstr ""
198
 
199
- #: classes/Views/About.php:48
200
- msgid "User installs, activates, deactivates, upgrades or uninstalls a plugin"
201
  msgstr ""
202
 
203
- #: classes/Views/About.php:49
204
- msgid ""
205
- "User creates, modifies or deletes a new post, page, category or a custom "
206
- "post type"
207
  msgstr ""
208
 
209
- #: classes/Views/About.php:50
210
- msgid "User installs or activates a WordPress theme"
211
  msgstr ""
212
 
213
- #: classes/Views/About.php:51
214
- msgid "User adds, modifies or deletes a widget"
215
  msgstr ""
216
 
217
- #: classes/Views/About.php:52
218
- msgid "User uses the dashboard file editor"
219
  msgstr ""
220
 
221
- #: classes/Views/About.php:53
222
- msgid "WordPress settings are changed"
223
  msgstr ""
224
 
225
- #: classes/Views/About.php:54
226
- msgid "Failed login attempts"
227
  msgstr ""
228
 
229
- #: classes/Views/About.php:55
230
- msgid "and much more&hellip;"
231
  msgstr ""
232
 
233
- #: classes/Views/About.php:65
234
- msgid "Extend the Functionality & Get More Value from WP Security Audit Log"
 
 
235
  msgstr ""
236
 
237
- #: classes/Views/About.php:68
238
  msgid ""
239
- "Get more value out of WP Security Audit Log by extending the functionality "
240
- "of WP Security Audit Log with the premium Add-Ons."
241
  msgstr ""
242
 
243
- #: classes/Views/About.php:70
244
- msgid "See Add-Ons"
 
 
245
  msgstr ""
246
 
247
- #: classes/Views/About.php:74 classes/Views/Help.php:79
248
- msgid "WP Security Audit Log in your Language!"
249
  msgstr ""
250
 
251
- #: classes/Views/About.php:76 classes/Views/Help.php:81
252
- msgid ""
253
- "If you are interested in translating our plugin please drop us an email on"
254
  msgstr ""
255
 
256
- #: classes/Views/About.php:81
257
- msgid "WordPress Security Services"
258
  msgstr ""
259
 
260
- #: classes/Views/About.php:83
261
- msgid "Professional WordPress security services provided by WP White Security"
 
262
  msgstr ""
263
 
264
- #: classes/Views/AuditLog.php:72
265
- msgid "Upgrade to Premium"
 
 
266
  msgstr ""
267
 
268
- #: classes/Views/AuditLog.php:73
 
269
  msgid ""
270
- "and add Email Alerts, Reports, Search and Users Login and Session Management."
 
271
  msgstr ""
272
 
273
- #: classes/Views/AuditLog.php:74
274
- msgid "Upgrade Now!"
 
 
 
275
  msgstr ""
276
 
277
- #: classes/Views/AuditLog.php:90 classes/Views/AuditLog.php:102
278
- msgid "Audit Log Viewer"
279
  msgstr ""
280
 
281
- #: classes/Views/AuditLog.php:125 classes/Views/Licensing.php:47
282
- #: classes/Views/Settings.php:152 classes/Views/ToggleAlerts.php:39
283
- msgid "You do not have sufficient permissions to access this page."
284
  msgstr ""
285
 
286
- #: classes/Views/AuditLog.php:149 classes/Views/AuditLog.php:169
287
- msgid "Please enter the number of alerts you would like to see on one page:"
288
  msgstr ""
289
 
290
- #: classes/Views/AuditLog.php:151 classes/Views/AuditLog.php:171
291
- msgid "No Results"
 
 
292
  msgstr ""
293
 
294
- #: classes/Views/EmailNotifications.php:13
295
- msgid "Email Notifications Add-On"
296
  msgstr ""
297
 
298
- #: classes/Views/EmailNotifications.php:23
299
- msgid "Notifications Email"
300
  msgstr ""
301
 
302
- #: classes/Views/EmailNotifications.php:46 classes/Views/Extensions.php:78
303
- msgid "Email Notifications"
 
304
  msgstr ""
305
 
306
- #: classes/Views/EmailNotifications.php:48
307
  msgid ""
308
- "This premium add-on allows you to configure email alerts so you are "
309
- "<br>notified instantly when important changes happen on your WordPress."
310
  msgstr ""
311
 
312
- #: classes/Views/EmailNotifications.php:52 classes/Views/ExternalDB.php:52
313
- #: classes/Views/LogInUsers.php:51 classes/Views/Reports.php:51
314
- #: classes/Views/Search.php:51
315
- msgid "Learn More"
316
  msgstr ""
317
 
318
- #: classes/Views/EmailNotifications.php:61 classes/Views/ExternalDB.php:61
319
- #: classes/Views/LogInUsers.php:60 classes/Views/Reports.php:60
320
- #: classes/Views/Search.php:60
321
- msgid "Buy all Add-Ons Bundle"
322
  msgstr ""
323
 
324
- #: classes/Views/Extensions.php:13
325
- msgid "WP Security Audit Log Add-Ons"
326
  msgstr ""
327
 
328
- #: classes/Views/Extensions.php:23
329
- msgid " Add Functionality"
 
 
 
 
330
  msgstr ""
331
 
332
- #: classes/Views/Extensions.php:44
333
- msgid ""
334
- "The below add-ons allow you to extend the functionality of WP Security Audit "
335
- "Log plugin and enable you to get more benefits out of the WordPress security "
336
- "audit, such as configurable email alerts, ability to search using free text "
337
- "based searches & filters, and generate user activity reports to meet "
338
- "regulatory compliance requirements."
339
  msgstr ""
340
 
341
- #: classes/Views/Extensions.php:50
342
- msgid "All Add-Ons Bundle"
 
 
343
  msgstr ""
344
 
345
- #: classes/Views/Extensions.php:52
346
- #, php-format
347
  msgid ""
348
- "Benefit from a 60% discount when you purchase all the add-ons as a single "
349
- "bundle."
350
  msgstr ""
351
 
352
- #: classes/Views/Extensions.php:55
353
- msgid "Get this Bundle"
354
  msgstr ""
355
 
356
- #: classes/Views/Extensions.php:63
357
- msgid "Users Logins and Management"
358
  msgstr ""
359
 
360
- #: classes/Views/Extensions.php:65
361
- msgid ""
362
- "See who is logged in to your WordPress and manage user sessions and logins."
363
  msgstr ""
364
 
365
- #: classes/Views/Extensions.php:69 classes/Views/Extensions.php:84
366
- #: classes/Views/Extensions.php:99 classes/Views/Extensions.php:114
367
- #: classes/Views/Extensions.php:129
368
- msgid "Get this extension"
369
  msgstr ""
370
 
371
- #: classes/Views/Extensions.php:80
372
  msgid ""
373
- "Get notified instantly via email when important changes are made on your "
374
- "WordPress!"
 
375
  msgstr ""
376
 
377
- #: classes/Views/Extensions.php:93 classes/Views/Reports.php:22
378
- #: classes/Views/Reports.php:45
379
- msgid "Reports"
380
  msgstr ""
381
 
382
- #: classes/Views/Extensions.php:95
383
- msgid ""
384
- "Generate any type of user,site and activity report to keep track of user "
385
- "productivity and to meet regulatory compliance requirements."
386
  msgstr ""
387
 
388
- #: classes/Views/Extensions.php:108 classes/Views/Search.php:22
389
- #: classes/Views/Search.php:45
390
- msgid "Search"
 
 
 
391
  msgstr ""
392
 
393
- #: classes/Views/Extensions.php:110
394
  msgid ""
395
- "Do free-text based searches for specific activity in the WordPress audit "
396
- "trail. You can also use filters to fine-tune your searches."
397
  msgstr ""
398
 
399
- #: classes/Views/Extensions.php:123 classes/Views/ExternalDB.php:46
400
- msgid "External DB"
 
 
401
  msgstr ""
402
 
403
- #: classes/Views/Extensions.php:125
404
  msgid ""
405
- "Store the WordPress audit trial in an external database for a more secure "
406
- "and faster WordPress website."
407
  msgstr ""
408
 
409
- #: classes/Views/ExternalDB.php:13
410
- msgid "External DB Add-On"
411
  msgstr ""
412
 
413
- #: classes/Views/ExternalDB.php:23
414
- msgid "External DB "
415
  msgstr ""
416
 
417
- #: classes/Views/ExternalDB.php:48
418
- msgid ""
419
- "Meet Legal and Regulatory Compliance Requirements, Improve the Security of "
420
- "Your WordPress and Boost its Performance by storing the WordPress Audit "
421
- "Trail in an external database."
422
  msgstr ""
423
 
424
- #: classes/Views/Help.php:13 classes/Views/Help.php:23
425
- msgid "Help"
426
  msgstr ""
427
 
428
- #: classes/Views/Help.php:38
429
- msgid "Plugin Support"
430
  msgstr ""
431
 
432
- #: classes/Views/Help.php:40
433
- msgid ""
434
- "Have you encountered or noticed any issues while using WP Security Audit Log "
435
- "plugin?"
436
  msgstr ""
437
 
438
- #: classes/Views/Help.php:41
439
- msgid ""
440
- "Or you want to report something to us? Click any of the options below to "
441
- "post on the plugin's forum or contact our support directly."
442
  msgstr ""
443
 
444
- #: classes/Views/Help.php:43
445
- msgid "Free Support Forum"
446
  msgstr ""
447
 
448
- #: classes/Views/Help.php:45
449
- msgid "Free Support Email"
450
  msgstr ""
451
 
452
- #: classes/Views/Help.php:50
453
- msgid "Plugin Documentation"
454
  msgstr ""
455
 
456
- #: classes/Views/Help.php:52
457
- msgid ""
458
- "For more detailed information about WP Security Audit Log you can visit the "
459
- "plugin website."
460
  msgstr ""
461
 
462
- #: classes/Views/Help.php:53
463
- msgid ""
464
- "You can also visit the official list of WordPress Security Alerts for more "
465
- "information about all of the WordPress activity and changes you can monitor "
466
- "with WP Security Audit Log."
467
  msgstr ""
468
 
469
- #: classes/Views/Help.php:55
470
- msgid "Plugin Website"
471
  msgstr ""
472
 
473
- #: classes/Views/Help.php:57
474
- msgid "Plugin Documenation"
 
475
  msgstr ""
476
 
477
- #: classes/Views/Help.php:59
478
- msgid "FAQs"
 
479
  msgstr ""
480
 
481
- #: classes/Views/Help.php:61
482
- msgid "List of WordPress Security Alerts"
483
  msgstr ""
484
 
485
- #: classes/Views/Help.php:66
486
- msgid "Keep Yourself Up-to-Date with WordPress Security"
487
  msgstr ""
488
 
489
- #: classes/Views/Help.php:68
490
- msgid ""
491
- "Keep yourself informed with what is happening in the WordPress security "
492
- "ecosystem, which are the new vulnerabilities, which plugins you need to "
493
- "update and what are the latest WordPress security hacks so you can stay one "
494
- "step ahead of the hackers."
495
  msgstr ""
496
 
497
- #: classes/Views/Help.php:70
498
- msgid "Read the WP White Security Blog"
499
  msgstr ""
500
 
501
- #: classes/Views/Help.php:72
502
- msgid ""
503
- "Subscribe to WP Security Bloggers (An Aggregate of WordPress Security Blogs)"
504
  msgstr ""
505
 
506
- #: classes/Views/Licensing.php:11 classes/Views/Licensing.php:21
507
- msgid "Licensing"
508
  msgstr ""
509
 
510
- #: classes/Views/Licensing.php:52 classes/Views/Settings.php:158
511
- #: classes/Views/ToggleAlerts.php:56
512
- msgid "Settings have been saved."
513
  msgstr ""
514
 
515
- #: classes/Views/Licensing.php:54 classes/Views/Settings.php:161
516
- #: classes/Views/ToggleAlerts.php:58
517
- msgid "Error: "
518
  msgstr ""
519
 
520
- #: classes/Views/Licensing.php:74
521
- msgid "Version"
522
  msgstr ""
523
 
524
- #: classes/Views/Licensing.php:84
525
- msgid "Active"
526
  msgstr ""
527
 
528
- #: classes/Views/Licensing.php:86
529
- msgid "Inactive"
530
  msgstr ""
531
 
532
- #: classes/Views/LogInUsers.php:12
533
- msgid "User Sessions Management Add-On"
534
  msgstr ""
535
 
536
- #: classes/Views/LogInUsers.php:22
537
- msgid "Logged In Users"
538
  msgstr ""
539
 
540
- #: classes/Views/LogInUsers.php:45
541
- msgid "Users login and Management"
 
 
542
  msgstr ""
543
 
544
- #: classes/Views/LogInUsers.php:47
545
  msgid ""
546
- "This premium add-on allows you to see who is logged in to your WordPress,"
547
- "<br> block multiple same-user WordPress sessions and more."
548
  msgstr ""
549
 
550
- #: classes/Views/Reports.php:12
551
  msgid "Reports Add-On"
552
  msgstr ""
553
 
554
- #: classes/Views/Reports.php:47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  msgid ""
556
- "Generate any type of user and site activity report to keep track of user "
557
- "productivity<br> and meet regulatory compliance requirements. You can also "
558
- "configure automated weekly or monthly email summary reports."
559
  msgstr ""
560
 
561
- #: classes/Views/Search.php:12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  msgid "Search Add-On"
563
  msgstr ""
564
 
565
- #: classes/Views/Search.php:47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  msgid ""
567
- "Do free-text based searches for specific activity in the WordPress audit "
568
- "trail.<br> You can also use the built-in filters to fine-tune your searches."
569
  msgstr ""
570
 
571
- #: classes/Views/Settings.php:38 classes/Views/Settings.php:48
572
  msgid "Settings"
573
  msgstr ""
574
 
575
- #: classes/Views/Settings.php:166
576
  msgid "General"
577
  msgstr ""
578
 
579
- #: classes/Views/Settings.php:167
580
  msgid "Audit Log"
581
  msgstr ""
582
 
583
- #: classes/Views/Settings.php:168
584
  msgid "Exclude Objects"
585
  msgstr ""
586
 
587
- #: classes/Views/Settings.php:184
588
  msgid "From Email & Name"
589
  msgstr ""
590
 
591
- #: classes/Views/Settings.php:187
592
  msgid "Email Address"
593
  msgstr ""
594
 
595
- #: classes/Views/Settings.php:190
596
  msgid "Display Name"
597
  msgstr ""
598
 
599
- #: classes/Views/Settings.php:196
600
  #, php-format
601
  msgid ""
602
  "These email address and display name will be used as From details in the "
@@ -604,2835 +696,3406 @@ msgid ""
604
  "the domain of the specified email address."
605
  msgstr ""
606
 
607
- #: classes/Views/Settings.php:197
608
  msgid "(premium add-ons)"
609
  msgstr ""
610
 
611
- #: classes/Views/Settings.php:205
612
  msgid "Alerts Dashboard Widget"
613
  msgstr ""
614
 
615
- #: classes/Views/Settings.php:211
616
  msgid "On"
617
  msgstr ""
618
 
619
- #: classes/Views/Settings.php:216
620
  msgid "Off"
621
  msgstr ""
622
 
623
- #: classes/Views/Settings.php:221
624
  #, php-format
625
  msgid "Display a dashboard widget with the latest %d security alerts."
626
  msgstr ""
627
 
628
- #: classes/Views/Settings.php:230
629
  msgid "Reverse Proxy / Firewall Options"
630
  msgstr ""
631
 
632
- #: classes/Views/Settings.php:236
633
  msgid "WordPress running behind firewall or proxy"
634
  msgstr ""
635
 
636
- #: classes/Views/Settings.php:239
637
  msgid ""
638
  "Enable this option if your WordPress is running behind a firewall or reverse "
639
  "proxy. When this option is enabled the plugin will retrieve the user's IP "
640
  "address from the proxy header."
641
  msgstr ""
642
 
643
- #: classes/Views/Settings.php:244
644
  msgid "Filter Internal IP Addresses"
645
  msgstr ""
646
 
647
- #: classes/Views/Settings.php:247
648
  msgid ""
649
  "Enable this option to filter internal IP addresses from the proxy headers."
650
  msgstr ""
651
 
652
- #: classes/Views/Settings.php:253
653
  msgid "Can Manage Plugin"
654
  msgstr ""
655
 
656
- #: classes/Views/Settings.php:260
657
  msgid "Users and Roles in this list can manage the plugin settings"
658
  msgstr ""
659
 
660
- #: classes/Views/Settings.php:278
661
  msgid "Restrict Plugin Access"
662
  msgstr ""
663
 
664
- #: classes/Views/Settings.php:288
665
  msgid ""
666
  "If this option is disabled all the administrators on this WordPress have "
667
  "access to manage this plugin."
668
  msgstr ""
669
 
670
- #: classes/Views/Settings.php:289
671
  msgid ""
672
  "By enabling this option only <strong>You</strong> and the users specified in "
673
  "the <strong>Can Manage Plugin</strong> and <strong>Can View Alerts</strong> "
674
  "can configure this plugin or view the alerts in the WordPress audit trail."
675
  msgstr ""
676
 
677
- #: classes/Views/Settings.php:296
678
- msgid "Developer Options"
679
  msgstr ""
680
 
681
- #: classes/Views/Settings.php:304
682
  msgid ""
683
- "Only enable these options on testing, staging and development websites. "
684
- "Enabling any of the settings below on LIVE websites may cause unintended "
685
- "side-effects including degraded performance."
 
 
 
 
 
 
 
 
 
686
  msgstr ""
687
 
688
- #: classes/Views/Settings.php:309
689
- msgid "Data Inspector"
690
  msgstr ""
691
 
692
- #: classes/Views/Settings.php:310
693
- msgid "View data logged for each triggered alert."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
694
  msgstr ""
695
 
696
- #: classes/Views/Settings.php:317
697
  msgid "Request Log"
698
  msgstr ""
699
 
700
- #: classes/Views/Settings.php:318
701
  msgid "Enables logging request to file."
702
  msgstr ""
703
 
704
- #: classes/Views/Settings.php:336
705
  msgid ""
706
  "The request log file is saved in the /wp-content/uploads/wp-security-audit-"
707
  "log/ directory."
708
  msgstr ""
709
 
710
- #: classes/Views/Settings.php:344
711
  msgid "Hide Plugin in Plugins Page"
712
  msgstr ""
713
 
714
- #: classes/Views/Settings.php:350
715
  msgid "Hide"
716
  msgstr ""
717
 
718
- #: classes/Views/Settings.php:354
719
  msgid ""
720
  "To manually revert this setting set the value of option wsal-hide-plugin to "
721
  "0 in the wp_wsal_options table."
722
  msgstr ""
723
 
724
- #: classes/Views/Settings.php:361
725
- msgid "Logging"
726
- msgstr ""
727
-
728
- #: classes/Views/Settings.php:375
729
- msgid "Disable all plugin logging."
730
  msgstr ""
731
 
732
- #: classes/Views/Settings.php:382
733
- msgid "Remove Data on Uninstall"
 
734
  msgstr ""
735
 
736
- #: classes/Views/Settings.php:406
737
  msgid ""
738
  "The options below are disabled because you enabled archiving of alerts to "
739
  "the archiving table from"
740
  msgstr ""
741
 
742
- #: classes/Views/Settings.php:411
743
- msgid "Security Alerts Pruning"
744
  msgstr ""
745
 
746
- #: classes/Views/Settings.php:414 classes/Views/Settings.php:422
747
  msgid "(eg: 1 month)"
748
  msgstr ""
749
 
750
- #: classes/Views/Settings.php:418
751
  msgid "None"
752
  msgstr ""
753
 
754
- #: classes/Views/Settings.php:426
 
 
 
 
755
  msgid "Delete alerts older than"
756
  msgstr ""
757
 
758
- #: classes/Views/Settings.php:434
 
 
 
 
759
  msgid "(eg: 80)"
760
  msgstr ""
761
 
762
- #: classes/Views/Settings.php:438
763
  msgid "Keep up to"
764
  msgstr ""
765
 
766
- #: classes/Views/Settings.php:443
767
  msgid "alerts"
768
  msgstr ""
769
 
770
- #: classes/Views/Settings.php:447
771
  msgid "Next Scheduled Cleanup is in "
772
  msgstr ""
773
 
774
- #: classes/Views/Settings.php:451
775
  #, php-format
776
  msgid "(or %s)"
777
  msgstr ""
778
 
779
- #: classes/Views/Settings.php:452
780
  msgid "Run Manually"
781
  msgstr ""
782
 
783
- #: classes/Views/Settings.php:459
784
  msgid "Can View Alerts"
785
  msgstr ""
786
 
787
- #: classes/Views/Settings.php:466
788
  msgid "Users and Roles in this list can view the security alerts"
789
  msgstr ""
790
 
791
- #: classes/Views/Settings.php:482
792
  msgid "Refresh Audit Log Viewer"
793
  msgstr ""
794
 
795
- #: classes/Views/Settings.php:488
796
  msgid "Automatic"
797
  msgstr ""
798
 
799
- #: classes/Views/Settings.php:490
800
  msgid "Refresh Audit Log Viewer as soon as there are new alerts."
801
  msgstr ""
802
 
803
- #: classes/Views/Settings.php:494
804
  msgid "Manual"
805
  msgstr ""
806
 
807
- #: classes/Views/Settings.php:496
808
  msgid "Refresh Audit Log Viewer only when the page is reloaded."
809
  msgstr ""
810
 
811
- #: classes/Views/Settings.php:503
812
  msgid "Alerts Timestamp"
813
  msgstr ""
814
 
815
- #: classes/Views/Settings.php:509
816
  msgid "UTC"
817
  msgstr ""
818
 
819
- #: classes/Views/Settings.php:514
820
  msgid "WordPress' timezone"
821
  msgstr ""
822
 
823
- #: classes/Views/Settings.php:517
824
  msgid ""
825
  "Select which timestamp the alerts should have in the Audit Log viewer. Note "
826
  "that the WordPress' timezone might be different from that of the server."
827
  msgstr ""
828
 
829
- #: classes/Views/Settings.php:523
830
  msgid "User Information in Audit Log"
831
  msgstr ""
832
 
833
- #: classes/Views/Settings.php:534
834
  msgid "First Name & Last Name"
835
  msgstr ""
836
 
837
- #: classes/Views/Settings.php:537
838
  msgid ""
839
  "Select the type of user information that should be displayed in the audit "
840
  "log."
841
  msgstr ""
842
 
843
- #: classes/Views/Settings.php:543
844
  msgid "Audit Log Columns Selection"
845
  msgstr ""
846
 
847
- #: classes/Views/Settings.php:554
848
  msgid ""
849
  "When you disable any of the above such details won’t be shown in the Audit "
850
  "Log viewer though the plugin will still record such information in the "
851
  "database."
852
  msgstr ""
853
 
854
- #: classes/Views/Settings.php:560
855
  msgid "Disable Alerts for WordPress Background Activity"
856
  msgstr ""
857
 
858
- #: classes/Views/Settings.php:566
859
  msgid "Hide activity"
860
  msgstr ""
861
 
862
- #: classes/Views/Settings.php:570
863
  msgid ""
864
  "For example do not raise an alert when WordPress deletes the auto drafts."
865
  msgstr ""
866
 
867
- #: classes/Views/Settings.php:581
868
  msgid "Users & Roles"
869
  msgstr ""
870
 
871
- #: classes/Views/Settings.php:588
 
 
 
 
 
 
872
  msgid "Excluded Users"
873
  msgstr ""
874
 
875
- #: classes/Views/Settings.php:608
876
  msgid "Excluded Roles"
877
  msgstr ""
878
 
879
- #: classes/Views/Settings.php:627
880
  msgid "Custom Fields"
881
  msgstr ""
882
 
883
- #: classes/Views/Settings.php:635
 
 
 
 
 
 
 
 
 
 
 
 
 
 
884
  msgid "Excluded Custom Fields"
885
  msgstr ""
886
 
887
- #: classes/Views/Settings.php:654
888
  msgid "IP Addresses"
889
  msgstr ""
890
 
891
- #: classes/Views/Settings.php:661
 
 
 
 
 
 
892
  msgid "Excluded IP Addresses"
893
  msgstr ""
894
 
895
- #: classes/Views/Settings.php:680 defaults.php:106
896
  msgid "Custom Post Types"
897
  msgstr ""
898
 
899
- #: classes/Views/Settings.php:683
900
  msgid ""
901
  "The below list of Custom Post Types are excluded from monitoring. This means "
902
  "that all activity related to these Custom Post Types will not be recorded."
903
  msgstr ""
904
 
905
- #: classes/Views/Settings.php:686
906
  msgid "Exclude Custom Post Type from monitoring"
907
  msgstr ""
908
 
909
- #: classes/Views/ToggleAlerts.php:11 classes/Views/ToggleAlerts.php:21
910
  msgid "Enable/Disable Alerts"
911
  msgstr ""
912
 
913
- #: classes/Views/ToggleAlerts.php:111 classes/WidgetManager.php:52
 
 
 
 
 
 
 
 
914
  msgid "Description"
915
  msgstr ""
916
 
917
- #: classes/Views/ToggleAlerts.php:125
 
 
 
 
 
 
918
  msgid "Not Implemented"
919
  msgstr ""
920
 
921
- #: classes/Views/ToggleAlerts.php:128
922
  msgid "Not Available"
923
  msgstr ""
924
 
925
- #: classes/Views/ToggleAlerts.php:143 classes/Views/ToggleAlerts.php:170
926
  msgid ""
927
  "Capture 404 requests to file (the log file are created in the /wp-content/"
928
  "uploads/wp-security-audit-log/404s/ directory)"
929
  msgstr ""
930
 
931
- #: classes/Views/ToggleAlerts.php:148 classes/Views/ToggleAlerts.php:175
932
  msgid "Purge log files older than one month"
933
  msgstr ""
934
 
935
- #: classes/Views/ToggleAlerts.php:153 classes/Views/ToggleAlerts.php:180
936
- msgid "Number of 404 Requests to Log"
 
 
 
937
  msgstr ""
938
 
939
- #: classes/Views/ToggleAlerts.php:159 classes/Views/ToggleAlerts.php:186
940
- msgid ""
941
- "By default the plugin keeps up to 99 requests to non-existing pages from the "
942
- "same IP address. Increase the value in this setting to the desired amount to "
943
- "keep a log of more or less requests."
944
  msgstr ""
945
 
946
- #: classes/Views/ToggleAlerts.php:160 classes/Views/ToggleAlerts.php:187
947
  msgid ""
948
- "Note that by increasing this value to a high number, should your website be "
 
 
 
949
  "scanned the plugin will consume more resources to log all the requests."
950
  msgstr ""
951
 
952
- #: classes/Views/ToggleAlerts.php:200
 
 
 
 
 
 
 
953
  msgid "Save Changes"
954
  msgstr ""
955
 
956
- #: classes/WidgetManager.php:26
957
  msgid "Latest Alerts"
958
  msgstr ""
959
 
960
- #: classes/WidgetManager.php:46
961
  msgid "No alerts found."
962
  msgstr ""
963
 
964
- #: defaults.php:36
965
  msgid "Fatal run-time error."
966
  msgstr ""
967
 
968
- #: defaults.php:37
969
  msgid "Run-time warning (non-fatal error)."
970
  msgstr ""
971
 
972
- #: defaults.php:38
973
  msgid "Compile-time parse error."
974
  msgstr ""
975
 
976
- #: defaults.php:39
977
  msgid "Run-time notice."
978
  msgstr ""
979
 
980
- #: defaults.php:40
981
  msgid "Fatal error that occurred during startup."
982
  msgstr ""
983
 
984
- #: defaults.php:41
985
  msgid "Warnings that occurred during startup."
986
  msgstr ""
987
 
988
- #: defaults.php:42
989
  msgid "Fatal compile-time error."
990
  msgstr ""
991
 
992
- #: defaults.php:43
993
  msgid "Compile-time warning."
994
  msgstr ""
995
 
996
- #: defaults.php:44
997
  msgid "User-generated error message."
998
  msgstr ""
999
 
1000
- #: defaults.php:45
1001
  msgid "User-generated warning message."
1002
  msgstr ""
1003
 
1004
- #: defaults.php:46
1005
  msgid "User-generated notice message."
1006
  msgstr ""
1007
 
1008
- #: defaults.php:47
1009
  msgid "Non-standard/optimal code warning."
1010
  msgstr ""
1011
 
1012
- #: defaults.php:48
1013
  msgid "Catchable fatal error."
1014
  msgstr ""
1015
 
1016
- #: defaults.php:49
1017
  msgid "Run-time deprecation notices."
1018
  msgstr ""
1019
 
1020
- #: defaults.php:50
1021
  msgid "Run-time user deprecation notices."
1022
  msgstr ""
1023
 
1024
- #: defaults.php:52
1025
  msgid "Critical, high-impact messages."
1026
  msgstr ""
1027
 
1028
- #: defaults.php:53
1029
  msgid "Debug informational messages."
1030
  msgstr ""
1031
 
1032
- #: defaults.php:57
1033
  msgid "Content & Comments"
1034
  msgstr ""
1035
 
1036
- #: defaults.php:58
1037
- msgid "Blog Posts"
1038
  msgstr ""
1039
 
1040
- #: defaults.php:59
1041
- msgid "User created a new blog post and saved it as draft"
1042
  msgstr ""
1043
 
1044
- #: defaults.php:59
1045
  msgid ""
1046
- "Created a new post called %PostTitle% and saved it as draft. %EditorLinkPost"
1047
- "%."
1048
  msgstr ""
1049
 
1050
- #: defaults.php:60
1051
- msgid "User published a blog post"
1052
  msgstr ""
1053
 
1054
- #: defaults.php:60
1055
  msgid ""
1056
- "Published a post called %PostTitle%. Post URL is %PostUrl%. %EditorLinkPost%."
 
1057
  msgstr ""
1058
 
1059
- #: defaults.php:61
1060
- msgid "User modified a published blog post"
1061
  msgstr ""
1062
 
1063
- #: defaults.php:61
1064
  msgid ""
1065
- "Modified the published post %PostTitle%. Post URL is %PostUrl%. "
1066
  "%EditorLinkPost%."
1067
  msgstr ""
1068
 
1069
- #: defaults.php:62
1070
- msgid "User modified a draft blog post"
1071
  msgstr ""
1072
 
1073
- #: defaults.php:62
1074
- msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
1075
- msgstr ""
1076
-
1077
- #: defaults.php:63
1078
- msgid "User permanently deleted a blog post from the trash"
1079
- msgstr ""
1080
-
1081
- #: defaults.php:63
1082
- msgid "Permanently deleted the post %PostTitle%."
1083
  msgstr ""
1084
 
1085
- #: defaults.php:64
1086
- msgid "User moved a blog post to the trash"
1087
  msgstr ""
1088
 
1089
- #: defaults.php:64
1090
- msgid "Moved the post %PostTitle% to trash. Post URL is %PostUrl%."
 
 
1091
  msgstr ""
1092
 
1093
- #: defaults.php:65
1094
- msgid "User restored a blog post from trash"
1095
  msgstr ""
1096
 
1097
- #: defaults.php:65
1098
- msgid "Post %PostTitle% has been restored from trash. %EditorLinkPost%."
 
 
1099
  msgstr ""
1100
 
1101
- #: defaults.php:66
1102
- msgid "User changed blog post category"
1103
  msgstr ""
1104
 
1105
- #: defaults.php:66
1106
  msgid ""
1107
- "Changed the category of the post %PostTitle% from %OldCategories% to "
1108
- "%NewCategories%. %EditorLinkPost%."
1109
  msgstr ""
1110
 
1111
- #: defaults.php:67
1112
- msgid "User changed blog post URL"
1113
  msgstr ""
1114
 
1115
- #: defaults.php:67
1116
  msgid ""
1117
- "Changed the URL of the post %PostTitle% from %OldUrl% to %NewUrl%. "
1118
- "%EditorLinkPost%."
1119
  msgstr ""
1120
 
1121
- #: defaults.php:68
1122
- msgid "User changed blog post author"
1123
  msgstr ""
1124
 
1125
- #: defaults.php:68
1126
  msgid ""
1127
- "Changed the author of %PostTitle% post from %OldAuthor% to %NewAuthor%. "
1128
- "%EditorLinkPost%."
1129
  msgstr ""
1130
 
1131
- #: defaults.php:69
1132
- msgid "User changed blog post status"
1133
  msgstr ""
1134
 
1135
- #: defaults.php:69
1136
  msgid ""
1137
- "Changed the status of %PostTitle% post from %OldStatus% to %NewStatus%. "
1138
- "%EditorLinkPost%."
1139
  msgstr ""
1140
 
1141
- #: defaults.php:70
1142
  msgid "User created new category"
1143
  msgstr ""
1144
 
1145
- #: defaults.php:70
1146
  msgid ""
1147
- "Created a new category called %CategoryName% .Category slug is %Slug%. "
1148
  "%CategoryLink%."
1149
  msgstr ""
1150
 
1151
- #: defaults.php:71
1152
  msgid "User deleted category"
1153
  msgstr ""
1154
 
1155
- #: defaults.php:71
1156
- msgid "Deleted the category %CategoryName%. Category slug was %Slug%."
 
 
1157
  msgstr ""
1158
 
1159
- #: defaults.php:72
1160
- msgid "User changed the visibility of a blog post"
1161
  msgstr ""
1162
 
1163
- #: defaults.php:72
1164
  msgid ""
1165
- "Changed the visibility of the post %PostTitle% from %OldVisibility% to "
1166
- "%NewVisibility%. %EditorLinkPost%."
1167
  msgstr ""
1168
 
1169
- #: defaults.php:73
1170
- msgid "User changed the date of a blog post"
1171
  msgstr ""
1172
 
1173
- #: defaults.php:73
1174
  msgid ""
1175
- "Changed the date of the post %PostTitle% from %OldDate% to %NewDate%. "
1176
- "%EditorLinkPost%."
1177
  msgstr ""
1178
 
1179
- #: defaults.php:74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1180
  msgid "User set a post as sticky"
1181
  msgstr ""
1182
 
1183
- #: defaults.php:74
1184
  msgid ""
1185
  "Set the post %PostTitle% as Sticky. Post URL is %PostUrl%. %EditorLinkPost%."
1186
  msgstr ""
1187
 
1188
- #: defaults.php:75
1189
  msgid "User removed post from sticky"
1190
  msgstr ""
1191
 
1192
- #: defaults.php:75
1193
  msgid "Removed the post %PostTitle% from Sticky. %EditorLinkPost%."
1194
  msgstr ""
1195
 
1196
- #: defaults.php:76
1197
- msgid "User changed generic tables"
1198
  msgstr ""
1199
 
1200
- #: defaults.php:76
1201
  msgid ""
1202
  "Changed the parent of the category %CategoryName% from %OldParent% to "
1203
  "%NewParent%. %CategoryLink%."
1204
  msgstr ""
1205
 
1206
- #: defaults.php:77
1207
  msgid "User created a custom field for a post"
1208
  msgstr ""
1209
 
1210
- #: defaults.php:77
1211
  msgid ""
1212
- "Created a new custom field %MetaKey% with value %MetaValue% in the post "
1213
- "%PostTitle% %EditorLinkPost%.<br>%MetaLink%."
 
1214
  msgstr ""
1215
 
1216
- #: defaults.php:78
1217
  msgid "User updated a custom field value for a post"
1218
  msgstr ""
1219
 
1220
- #: defaults.php:78
1221
  msgid ""
1222
- "Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
1223
- "%MetaValueNew% in the post %PostTitle% %EditorLinkPost%.<br>%MetaLink%."
 
1224
  msgstr ""
1225
 
1226
- #: defaults.php:79
1227
  msgid "User deleted a custom field from a post"
1228
  msgstr ""
1229
 
1230
- #: defaults.php:79
1231
  msgid ""
1232
- "Deleted the custom field %MetaKey% with id %MetaID% from the post %PostTitle"
1233
- "% %EditorLinkPost%.<br>%MetaLink%."
1234
  msgstr ""
1235
 
1236
- #: defaults.php:80
1237
  msgid "User updated a custom field name for a post"
1238
  msgstr ""
1239
 
1240
- #: defaults.php:80
1241
  msgid ""
1242
- "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the post "
1243
- "%PostTitle% %EditorLinkPost%.<br>%MetaLink%."
 
1244
  msgstr ""
1245
 
1246
- #: defaults.php:81
1247
- msgid "User modified content for a published post"
1248
  msgstr ""
1249
 
1250
- #: defaults.php:81
1251
  msgid ""
1252
- "Modified the content of the published post %PostTitle%.%RevisionLink% "
1253
- "%EditorLinkPost%."
1254
  msgstr ""
1255
 
1256
- #: defaults.php:82
1257
- msgid "User modified content for a draft post"
1258
  msgstr ""
1259
 
1260
- #: defaults.php:82
1261
  msgid ""
1262
- "Modified the content of the draft post %PostTitle%.%RevisionLink% "
1263
  "%EditorLinkPost%."
1264
  msgstr ""
1265
 
1266
- #: defaults.php:83
1267
- msgid "User modified content of a post"
1268
  msgstr ""
1269
 
1270
- #: defaults.php:83
1271
  msgid ""
1272
- "Modified the content of post %PostTitle% which is submitted for review."
1273
- "%RevisionLink% %EditorLinkPost%."
1274
  msgstr ""
1275
 
1276
- #: defaults.php:84
1277
- msgid "User submitted a post for review"
1278
  msgstr ""
1279
 
1280
- #: defaults.php:84
1281
- msgid "Submitted the post %PostTitle% for review. %EditorLinkPost%."
 
 
1282
  msgstr ""
1283
 
1284
- #: defaults.php:85
1285
- msgid "User scheduled a post"
1286
  msgstr ""
1287
 
1288
- #: defaults.php:85
 
 
 
 
 
 
 
 
 
 
1289
  msgid ""
1290
- "Scheduled the post %PostTitle% to be published %PublishingDate%. "
1291
  "%EditorLinkPost%."
1292
  msgstr ""
1293
 
1294
- #: defaults.php:86
1295
- msgid "User changed title of a post"
1296
  msgstr ""
1297
 
1298
- #: defaults.php:86
1299
  msgid ""
1300
- "Changed the title of the post %OldTitle% to %NewTitle%. %EditorLinkPost%."
 
1301
  msgstr ""
1302
 
1303
- #: defaults.php:87
1304
- msgid "User opened a post in the editor"
1305
  msgstr ""
1306
 
1307
- #: defaults.php:87
1308
  msgid ""
1309
- "Opened the post %PostTitle% in the editor. View the post: %EditorLinkPost%."
 
1310
  msgstr ""
1311
 
1312
- #: defaults.php:88
1313
- msgid "User viewed a post"
1314
  msgstr ""
1315
 
1316
- #: defaults.php:88
1317
- msgid "Viewed the post %PostTitle%. View the post: %PostUrl%."
 
 
1318
  msgstr ""
1319
 
1320
- #: defaults.php:89
1321
- msgid "User disabled Comments/Trackbacks and Pingbacks on a published post"
1322
  msgstr ""
1323
 
1324
- #: defaults.php:89
1325
  msgid ""
1326
- "Disabled %Type% on the published post %PostTitle%. View the post: %PostUrl%."
 
1327
  msgstr ""
1328
 
1329
- #: defaults.php:90
1330
- msgid "User enabled Comments/Trackbacks and Pingbacks on a published post"
1331
  msgstr ""
1332
 
1333
- #: defaults.php:90
1334
  msgid ""
1335
- "Enabled %Type% on the published post %PostTitle%. View the post: %PostUrl%."
 
1336
  msgstr ""
1337
 
1338
- #: defaults.php:91
1339
- msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
 
 
 
 
 
 
 
 
 
 
 
 
1340
  msgstr ""
1341
 
1342
- #: defaults.php:91
 
 
 
 
 
 
 
 
 
 
 
 
1343
  msgid ""
1344
- "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
 
1345
  msgstr ""
1346
 
1347
- #: defaults.php:92
1348
- msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
1349
  msgstr ""
1350
 
1351
- #: defaults.php:92
1352
- msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
 
 
1353
  msgstr ""
1354
 
1355
- #: defaults.php:94
1356
  msgid "Comments"
1357
  msgstr ""
1358
 
1359
- #: defaults.php:95
1360
  msgid "User approved a comment"
1361
  msgstr ""
1362
 
1363
- #: defaults.php:95
1364
  msgid ""
1365
  "Approved the comment posted in response to the post %PostTitle% by %Author% "
1366
  "on %CommentLink%."
1367
  msgstr ""
1368
 
1369
- #: defaults.php:96
1370
  msgid "User unapproved a comment"
1371
  msgstr ""
1372
 
1373
- #: defaults.php:96
1374
  msgid ""
1375
  "Unapproved the comment posted in response to the post %PostTitle% by %Author"
1376
  "% on %CommentLink%."
1377
  msgstr ""
1378
 
1379
- #: defaults.php:97
1380
  msgid "User replied to a comment"
1381
  msgstr ""
1382
 
1383
- #: defaults.php:97
1384
  msgid ""
1385
  "Replied to the comment posted in response to the post %PostTitle% by %Author"
1386
  "% on %CommentLink%."
1387
  msgstr ""
1388
 
1389
- #: defaults.php:98
1390
  msgid "User edited a comment"
1391
  msgstr ""
1392
 
1393
- #: defaults.php:98
1394
  msgid ""
1395
  "Edited a comment posted in response to the post %PostTitle% by %Author% on "
1396
  "%CommentLink%."
1397
  msgstr ""
1398
 
1399
- #: defaults.php:99
1400
  msgid "User marked a comment as Spam"
1401
  msgstr ""
1402
 
1403
- #: defaults.php:99
1404
  msgid ""
1405
  "Marked the comment posted in response to the post %PostTitle% by %Author% on "
1406
  "%CommentLink% as Spam."
1407
  msgstr ""
1408
 
1409
- #: defaults.php:100
1410
  msgid "User marked a comment as Not Spam"
1411
  msgstr ""
1412
 
1413
- #: defaults.php:100
1414
  msgid ""
1415
  "Marked the comment posted in response to the post %PostTitle% by %Author% on "
1416
  "%CommentLink% as Not Spam."
1417
  msgstr ""
1418
 
1419
- #: defaults.php:101
1420
  msgid "User moved a comment to trash"
1421
  msgstr ""
1422
 
1423
- #: defaults.php:101
1424
  msgid ""
1425
  "Moved the comment posted in response to the post %PostTitle% by %Author% on "
1426
  "%Date% to trash."
1427
  msgstr ""
1428
 
1429
- #: defaults.php:102
1430
  msgid "User restored a comment from the trash"
1431
  msgstr ""
1432
 
1433
- #: defaults.php:102
1434
  msgid ""
1435
  "Restored the comment posted in response to the post %PostTitle% by %Author% "
1436
  "on %CommentLink% from the trash."
1437
  msgstr ""
1438
 
1439
- #: defaults.php:103
1440
  msgid "User permanently deleted a comment"
1441
  msgstr ""
1442
 
1443
- #: defaults.php:103
1444
  msgid ""
1445
  "Permanently deleted the comment posted in response to the post %PostTitle% "
1446
  "by %Author% on %Date%."
1447
  msgstr ""
1448
 
1449
- #: defaults.php:104
1450
  msgid "User posted a comment"
1451
  msgstr ""
1452
 
1453
- #: defaults.php:104
1454
  msgid "%CommentMsg% on %CommentLink%."
1455
  msgstr ""
1456
 
1457
- #: defaults.php:107
 
 
 
 
 
 
 
 
 
 
 
 
1458
  msgid "User created a new post with custom post type and saved it as draft"
1459
  msgstr ""
1460
 
1461
- #: defaults.php:107
1462
  msgid ""
1463
  "Created a new custom post called %PostTitle% of type %PostType%. "
1464
  "%EditorLinkPost%."
1465
  msgstr ""
1466
 
1467
- #: defaults.php:108
1468
  msgid "User published a post with custom post type"
1469
  msgstr ""
1470
 
1471
- #: defaults.php:108
1472
  msgid ""
1473
  "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
1474
  "%. %EditorLinkPost%."
1475
  msgstr ""
1476
 
1477
- #: defaults.php:109
1478
  msgid "User modified a post with custom post type"
1479
  msgstr ""
1480
 
1481
- #: defaults.php:109
1482
  msgid ""
1483
  "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
1484
  "%. %EditorLinkPost%."
1485
  msgstr ""
1486
 
1487
- #: defaults.php:110
1488
  msgid "User modified a draft post with custom post type"
1489
  msgstr ""
1490
 
1491
- #: defaults.php:110
1492
  msgid ""
1493
  "Modified the draft custom post %PostTitle% of type is %PostType%. "
1494
  "%EditorLinkPost%."
1495
  msgstr ""
1496
 
1497
- #: defaults.php:111
1498
  msgid "User permanently deleted post with custom post type"
1499
  msgstr ""
1500
 
1501
- #: defaults.php:111
1502
  msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
1503
  msgstr ""
1504
 
1505
- #: defaults.php:112
1506
  msgid "User moved post with custom post type to trash"
1507
  msgstr ""
1508
 
1509
- #: defaults.php:112
1510
  msgid ""
1511
  "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was "
1512
  "%PostUrl%."
1513
  msgstr ""
1514
 
1515
- #: defaults.php:113
1516
  msgid "User restored post with custom post type from trash"
1517
  msgstr ""
1518
 
1519
- #: defaults.php:113
1520
  msgid ""
1521
  "The custom post %PostTitle% of type %PostType% has been restored from trash. "
1522
  "%EditorLinkPost%."
1523
  msgstr ""
1524
 
1525
- #: defaults.php:114
1526
  msgid "User changed the category of a post with custom post type"
1527
  msgstr ""
1528
 
1529
- #: defaults.php:114
1530
  msgid ""
1531
  "Changed the category(ies) of the custom post %PostTitle% of type %PostType% "
1532
  "from %OldCategories% to %NewCategories%. %EditorLinkPost%."
1533
  msgstr ""
1534
 
1535
- #: defaults.php:115
1536
  msgid "User changed the URL of a post with custom post type"
1537
  msgstr ""
1538
 
1539
- #: defaults.php:115
1540
  msgid ""
1541
  "Changed the URL of the custom post %PostTitle% of type %PostType% from "
1542
  "%OldUrl% to %NewUrl%. %EditorLinkPost%."
1543
  msgstr ""
1544
 
1545
- #: defaults.php:116
1546
  msgid "User changed the author or post with custom post type"
1547
  msgstr ""
1548
 
1549
- #: defaults.php:116
1550
  msgid ""
1551
  "Changed the author of custom post %PostTitle% of type %PostType% from "
1552
  "%OldAuthor% to %NewAuthor%. %EditorLinkPost%."
1553
  msgstr ""
1554
 
1555
- #: defaults.php:117
1556
  msgid "User changed the status of post with custom post type"
1557
  msgstr ""
1558
 
1559
- #: defaults.php:117
1560
  msgid ""
1561
  "Changed the status of custom post %PostTitle% of type %PostType% from "
1562
  "%OldStatus% to %NewStatus%. %EditorLinkPost%."
1563
  msgstr ""
1564
 
1565
- #: defaults.php:118
1566
  msgid "User changed the visibility of a post with custom post type"
1567
  msgstr ""
1568
 
1569
- #: defaults.php:118
1570
  msgid ""
1571
  "Changed the visibility of the custom post %PostTitle% of type %PostType% "
1572
  "from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
1573
  msgstr ""
1574
 
1575
- #: defaults.php:119
1576
  msgid "User changed the date of post with custom post type"
1577
  msgstr ""
1578
 
1579
- #: defaults.php:119
1580
  msgid ""
1581
  "Changed the date of the custom post %PostTitle% of type %PostType% from "
1582
  "%OldDate% to %NewDate%. %EditorLinkPost%."
1583
  msgstr ""
1584
 
1585
- #: defaults.php:120
1586
  msgid "User created a custom field for a custom post type"
1587
  msgstr ""
1588
 
1589
- #: defaults.php:120
1590
  msgid ""
1591
  "Created a new custom field %MetaKey% with value %MetaValue% in custom post "
1592
  "%PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
1593
  msgstr ""
1594
 
1595
- #: defaults.php:121
1596
  msgid "User updated a custom field for a custom post type"
1597
  msgstr ""
1598
 
1599
- #: defaults.php:121
1600
  msgid ""
1601
  "Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
1602
  "%MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost"
1603
  "%.<br>%MetaLink%."
1604
  msgstr ""
1605
 
1606
- #: defaults.php:122
1607
  msgid "User deleted a custom field from a custom post type"
1608
  msgstr ""
1609
 
1610
- #: defaults.php:122
1611
  msgid ""
1612
  "Deleted the custom field %MetaKey% with id %MetaID% from custom post "
1613
  "%PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1614
  msgstr ""
1615
 
1616
- #: defaults.php:123
1617
  msgid "User updated a custom field name for a custom post type"
1618
  msgstr ""
1619
 
1620
- #: defaults.php:123
1621
  msgid ""
1622
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
1623
  "post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1624
  msgstr ""
1625
 
1626
- #: defaults.php:124
1627
  msgid "User modified content for a published custom post type"
1628
  msgstr ""
1629
 
1630
- #: defaults.php:124
1631
  msgid ""
1632
  "Modified the content of the published custom post type %PostTitle%. Post URL "
1633
  "is %PostUrl%.%EditorLinkPost%."
1634
  msgstr ""
1635
 
1636
- #: defaults.php:125
 
 
 
 
 
 
 
 
 
 
1637
  msgid "User modified content for a draft custom post type"
1638
  msgstr ""
1639
 
1640
- #: defaults.php:125
1641
  msgid ""
1642
  "Modified the content of the draft custom post type %PostTitle%."
1643
  "%EditorLinkPost%."
1644
  msgstr ""
1645
 
1646
- #: defaults.php:126
 
 
 
 
 
 
 
 
 
 
1647
  msgid "User scheduled a custom post type"
1648
  msgstr ""
1649
 
1650
- #: defaults.php:126
1651
  msgid ""
1652
  "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. "
1653
  "%EditorLinkPost%."
1654
  msgstr ""
1655
 
1656
- #: defaults.php:127
1657
  msgid "User changed title of a custom post type"
1658
  msgstr ""
1659
 
1660
- #: defaults.php:127
1661
  msgid ""
1662
  "Changed the title of the custom post %OldTitle% to %NewTitle%. "
1663
  "%EditorLinkPost%."
1664
  msgstr ""
1665
 
1666
- #: defaults.php:128
1667
  msgid "User opened a custom post type in the editor"
1668
  msgstr ""
1669
 
1670
- #: defaults.php:128
1671
  msgid ""
1672
  "Opened the custom post %PostTitle% of type %PostType% in the editor. View "
1673
  "the post: %EditorLinkPost%."
1674
  msgstr ""
1675
 
1676
- #: defaults.php:129
1677
  msgid "User viewed a custom post type"
1678
  msgstr ""
1679
 
1680
- #: defaults.php:129
1681
  msgid ""
1682
  "Viewed the custom post %PostTitle% of type %PostType%. View the post: "
1683
  "%PostUrl%."
1684
  msgstr ""
1685
 
1686
- #: defaults.php:131
1687
  msgid "Pages"
1688
  msgstr ""
1689
 
1690
- #: defaults.php:132
1691
  msgid "User created a new WordPress page and saved it as draft"
1692
  msgstr ""
1693
 
1694
- #: defaults.php:132
1695
  msgid ""
1696
  "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage"
1697
  "%."
1698
  msgstr ""
1699
 
1700
- #: defaults.php:133
1701
  msgid "User published a WordPress page"
1702
  msgstr ""
1703
 
1704
- #: defaults.php:133
1705
  msgid ""
1706
  "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
1707
  msgstr ""
1708
 
1709
- #: defaults.php:134
1710
  msgid "User modified a published WordPress page"
1711
  msgstr ""
1712
 
1713
- #: defaults.php:134
1714
  msgid ""
1715
  "Modified the published page %PostTitle%. Page URL is %PostUrl%. "
1716
  "%EditorLinkPage%."
1717
  msgstr ""
1718
 
1719
- #: defaults.php:135
1720
  msgid "User modified a draft WordPress page"
1721
  msgstr ""
1722
 
1723
- #: defaults.php:135
1724
  msgid ""
1725
  "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
1726
  msgstr ""
1727
 
1728
- #: defaults.php:136
1729
  msgid "User permanently deleted a page from the trash"
1730
  msgstr ""
1731
 
1732
- #: defaults.php:136
1733
  msgid "Permanently deleted the page %PostTitle%."
1734
  msgstr ""
1735
 
1736
- #: defaults.php:137
1737
  msgid "User moved WordPress page to the trash"
1738
  msgstr ""
1739
 
1740
- #: defaults.php:137
1741
  msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
1742
  msgstr ""
1743
 
1744
- #: defaults.php:138
1745
  msgid "User restored a WordPress page from trash"
1746
  msgstr ""
1747
 
1748
- #: defaults.php:138
1749
  msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
1750
  msgstr ""
1751
 
1752
- #: defaults.php:139
1753
  msgid "User changed page URL"
1754
  msgstr ""
1755
 
1756
- #: defaults.php:139
1757
  msgid ""
1758
  "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. "
1759
  "%EditorLinkPage%."
1760
  msgstr ""
1761
 
1762
- #: defaults.php:140
1763
  msgid "User changed page author"
1764
  msgstr ""
1765
 
1766
- #: defaults.php:140
1767
  msgid ""
1768
  "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. "
1769
  "%EditorLinkPage%."
1770
  msgstr ""
1771
 
1772
- #: defaults.php:141
1773
  msgid "User changed page status"
1774
  msgstr ""
1775
 
1776
- #: defaults.php:141
1777
  msgid ""
1778
  "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. "
1779
  "%EditorLinkPage%."
1780
  msgstr ""
1781
 
1782
- #: defaults.php:142
1783
  msgid "User changed the visibility of a page post"
1784
  msgstr ""
1785
 
1786
- #: defaults.php:142
1787
  msgid ""
1788
  "Changed the visibility of the page %PostTitle% from %OldVisibility% to "
1789
  "%NewVisibility%. %EditorLinkPage%."
1790
  msgstr ""
1791
 
1792
- #: defaults.php:143
1793
  msgid "User changed the date of a page post"
1794
  msgstr ""
1795
 
1796
- #: defaults.php:143
1797
  msgid ""
1798
  "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. "
1799
  "%EditorLinkPage%."
1800
  msgstr ""
1801
 
1802
- #: defaults.php:144
1803
- msgid "User changed the parent of a page"
1804
- msgstr ""
1805
-
1806
- #: defaults.php:144
1807
- msgid ""
1808
- "Changed the parent of the page %PostTitle% from %OldParentName% to "
1809
- "%NewParentName%. %EditorLinkPage%."
1810
- msgstr ""
1811
-
1812
- #: defaults.php:145
1813
- msgid "User changed the template of a page"
1814
- msgstr ""
1815
-
1816
- #: defaults.php:145
1817
- msgid ""
1818
- "Changed the template of the page %PostTitle% from %OldTemplate% to "
1819
- "%NewTemplate%. %EditorLinkPage%."
1820
- msgstr ""
1821
-
1822
- #: defaults.php:146
1823
  msgid "User created a custom field for a page"
1824
  msgstr ""
1825
 
1826
- #: defaults.php:146
1827
  msgid ""
1828
  "Created a new custom field called %MetaKey% with value %MetaValue% in the "
1829
  "page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1830
  msgstr ""
1831
 
1832
- #: defaults.php:147
1833
  msgid "User updated a custom field value for a page"
1834
  msgstr ""
1835
 
1836
- #: defaults.php:147
1837
  msgid ""
1838
  "Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
1839
  "%MetaValueNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1840
  msgstr ""
1841
 
1842
- #: defaults.php:148
1843
  msgid "User deleted a custom field from a page"
1844
  msgstr ""
1845
 
1846
- #: defaults.php:148
1847
  msgid ""
1848
  "Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% "
1849
  "%EditorLinkPage%.<br>%MetaLink%."
1850
  msgstr ""
1851
 
1852
- #: defaults.php:149
1853
  msgid "User updated a custom field name for a page"
1854
  msgstr ""
1855
 
1856
- #: defaults.php:149
1857
  msgid ""
1858
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page "
1859
  "%PostTitle% %EditorLinkPage%.<br>%MetaLink%."
1860
  msgstr ""
1861
 
1862
- #: defaults.php:150
1863
  msgid "User modified content for a published page"
1864
  msgstr ""
1865
 
1866
- #: defaults.php:150
1867
  msgid ""
1868
  "Modified the content of the published page %PostTitle%. Page URL is %PostUrl"
1869
- "%.%RevisionLink% %EditorLinkPage%."
1870
  msgstr ""
1871
 
1872
- #: defaults.php:151
1873
  msgid "User modified content for a draft page"
1874
  msgstr ""
1875
 
1876
- #: defaults.php:151
1877
  msgid ""
1878
  "Modified the content of draft page %PostTitle%.%RevisionLink% %EditorLinkPage"
1879
  "%."
1880
  msgstr ""
1881
 
1882
- #: defaults.php:152
1883
  msgid "User scheduled a page"
1884
  msgstr ""
1885
 
1886
- #: defaults.php:152
1887
  msgid ""
1888
  "Scheduled the page %PostTitle% to be published %PublishingDate%. "
1889
  "%EditorLinkPage%."
1890
  msgstr ""
1891
 
1892
- #: defaults.php:153
1893
  msgid "User changed title of a page"
1894
  msgstr ""
1895
 
1896
- #: defaults.php:153
1897
  msgid ""
1898
  "Changed the title of the page %OldTitle% to %NewTitle%. %EditorLinkPage%."
1899
  msgstr ""
1900
 
1901
- #: defaults.php:154
1902
  msgid "User opened a page in the editor"
1903
  msgstr ""
1904
 
1905
- #: defaults.php:154
1906
  msgid ""
1907
  "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
1908
  msgstr ""
1909
 
1910
- #: defaults.php:155
1911
  msgid "User viewed a page"
1912
  msgstr ""
1913
 
1914
- #: defaults.php:155
1915
  msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
1916
  msgstr ""
1917
 
1918
- #: defaults.php:156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1919
  msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
1920
  msgstr ""
1921
 
1922
- #: defaults.php:156
1923
  msgid ""
1924
  "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1925
  msgstr ""
1926
 
1927
- #: defaults.php:157
1928
  msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
1929
  msgstr ""
1930
 
1931
- #: defaults.php:157
1932
  msgid ""
1933
  "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
1934
  msgstr ""
1935
 
1936
- #: defaults.php:158
1937
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
1938
  msgstr ""
1939
 
1940
- #: defaults.php:158
1941
  msgid ""
1942
  "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1943
  msgstr ""
1944
 
1945
- #: defaults.php:159
1946
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
1947
  msgstr ""
1948
 
1949
- #: defaults.php:159
1950
  msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
1951
  msgstr ""
1952
 
1953
- #: defaults.php:162
1954
  msgid "WordPress & Multisite Management"
1955
  msgstr ""
1956
 
1957
- #: defaults.php:163
1958
  msgid "Database"
1959
  msgstr ""
1960
 
1961
- #: defaults.php:164
1962
  msgid "Plugin created tables"
1963
  msgstr ""
1964
 
1965
- #: defaults.php:164
1966
  msgid ""
1967
  "Plugin %Plugin->Name% created these tables in the database: %TableNames%."
1968
  msgstr ""
1969
 
1970
- #: defaults.php:165
1971
  msgid "Plugin modified tables structure"
1972
  msgstr ""
1973
 
1974
- #: defaults.php:165
1975
  msgid ""
1976
  "Plugin %Plugin->Name% modified the structure of these database tables: "
1977
  "%TableNames%."
1978
  msgstr ""
1979
 
1980
- #: defaults.php:166
1981
  msgid "Plugin deleted tables"
1982
  msgstr ""
1983
 
1984
- #: defaults.php:166
1985
  msgid ""
1986
  "Plugin %Plugin->Name% deleted the following tables from the database: "
1987
  "%TableNames%."
1988
  msgstr ""
1989
 
1990
- #: defaults.php:167
1991
  msgid "Theme created tables"
1992
  msgstr ""
1993
 
1994
- #: defaults.php:167
1995
  msgid "Theme %Theme->Name% created these tables in the database: %TableNames%."
1996
  msgstr ""
1997
 
1998
- #: defaults.php:168
1999
  msgid "Theme modified tables structure"
2000
  msgstr ""
2001
 
2002
- #: defaults.php:168
2003
  msgid ""
2004
  "Theme %Theme->Name% modified the structure of these database tables: "
2005
  "%TableNames%."
2006
  msgstr ""
2007
 
2008
- #: defaults.php:169
2009
  msgid "Theme deleted tables"
2010
  msgstr ""
2011
 
2012
- #: defaults.php:169
2013
  msgid ""
2014
  "Theme %Theme->Name% deleted the following tables from the database: "
2015
  "%TableNames%."
2016
  msgstr ""
2017
 
2018
- #: defaults.php:170
2019
  msgid "Unknown component created tables"
2020
  msgstr ""
2021
 
2022
- #: defaults.php:170
2023
  msgid ""
2024
  "An unknown component created these tables in the database: %TableNames%."
2025
  msgstr ""
2026
 
2027
- #: defaults.php:171
2028
  msgid "Unknown component modified tables structure"
2029
  msgstr ""
2030
 
2031
- #: defaults.php:171
2032
  msgid ""
2033
  "An unknown component modified the structure of these database tables: "
2034
  "%TableNames%."
2035
  msgstr ""
2036
 
2037
- #: defaults.php:172
2038
  msgid "Unknown component deleted tables"
2039
  msgstr ""
2040
 
2041
- #: defaults.php:172
2042
  msgid ""
2043
  "An unknown component deleted the following tables from the database: "
2044
  "%TableNames%."
2045
  msgstr ""
2046
 
2047
- #: defaults.php:174
2048
  msgid "MultiSite"
2049
  msgstr ""
2050
 
2051
- #: defaults.php:175
2052
  msgid "User granted Super Admin privileges"
2053
  msgstr ""
2054
 
2055
- #: defaults.php:175
2056
  msgid "Granted Super Admin privileges to %TargetUsername%."
2057
  msgstr ""
2058
 
2059
- #: defaults.php:176
2060
  msgid "User revoked from Super Admin privileges"
2061
  msgstr ""
2062
 
2063
- #: defaults.php:176
2064
  msgid "Revoked Super Admin privileges from %TargetUsername%."
2065
  msgstr ""
2066
 
2067
- #: defaults.php:177
2068
  msgid "Existing user added to a site"
2069
  msgstr ""
2070
 
2071
- #: defaults.php:177
2072
  msgid ""
2073
  "Added the existing user %TargetUsername% with %TargetUserRole% role to site "
2074
  "%SiteName%."
2075
  msgstr ""
2076
 
2077
- #: defaults.php:178
2078
  msgid "User removed from site"
2079
  msgstr ""
2080
 
2081
- #: defaults.php:178
2082
  msgid ""
2083
  "Removed the user %TargetUsername% with role %TargetUserRole% from %SiteName% "
2084
  "site."
2085
  msgstr ""
2086
 
2087
- #: defaults.php:179
2088
  msgid "New network user created"
2089
  msgstr ""
2090
 
2091
- #: defaults.php:179
2092
  msgid "Created a new network user %NewUserData->Username%."
2093
  msgstr ""
2094
 
2095
- #: defaults.php:180
2096
  msgid "The forum role of a user was changed by another WordPress user"
2097
  msgstr ""
2098
 
2099
- #: defaults.php:180
2100
  msgid ""
2101
  "Change the forum role of the user %TargetUsername% from %OldRole% to %NewRole"
2102
  "% by %UserChanger%."
2103
  msgstr ""
2104
 
2105
- #: defaults.php:181
2106
  msgid "New site added on the network"
2107
  msgstr ""
2108
 
2109
- #: defaults.php:181
2110
  msgid "Added the site %SiteName% to the network."
2111
  msgstr ""
2112
 
2113
- #: defaults.php:182
2114
  msgid "Existing site archived"
2115
  msgstr ""
2116
 
2117
- #: defaults.php:182
2118
  msgid "Archived the site %SiteName%."
2119
  msgstr ""
2120
 
2121
- #: defaults.php:183
2122
  msgid "Archived site has been unarchived"
2123
  msgstr ""
2124
 
2125
- #: defaults.php:183
2126
  msgid "Unarchived the site %SiteName%."
2127
  msgstr ""
2128
 
2129
- #: defaults.php:184
2130
  msgid "Deactivated site has been activated"
2131
  msgstr ""
2132
 
2133
- #: defaults.php:184
2134
  msgid "Activated the site %SiteName%."
2135
  msgstr ""
2136
 
2137
- #: defaults.php:185
2138
  msgid "Site has been deactivated"
2139
  msgstr ""
2140
 
2141
- #: defaults.php:185
2142
  msgid "Deactivated the site %SiteName%."
2143
  msgstr ""
2144
 
2145
- #: defaults.php:186
2146
  msgid "Existing site deleted from network"
2147
  msgstr ""
2148
 
2149
- #: defaults.php:186
2150
  msgid "Deleted the site %SiteName%."
2151
  msgstr ""
2152
 
2153
- #: defaults.php:187
2154
  msgid "Activated theme on network"
2155
  msgstr ""
2156
 
2157
- #: defaults.php:187
2158
  msgid ""
2159
  "Network activated the theme %Theme->Name% installed in %Theme-"
2160
  ">get_template_directory%."
2161
  msgstr ""
2162
 
2163
- #: defaults.php:188
2164
  msgid "Deactivated theme from network"
2165
  msgstr ""
2166
 
2167
- #: defaults.php:188
2168
  msgid ""
2169
  "Network deactivated the theme %Theme->Name% installed in %Theme-"
2170
  ">get_template_directory%."
2171
  msgstr ""
2172
 
2173
- #: defaults.php:190
2174
  msgid "Plugins & Themes"
2175
  msgstr ""
2176
 
2177
- #: defaults.php:191
2178
  msgid "User installed a plugin"
2179
  msgstr ""
2180
 
2181
- #: defaults.php:191
2182
  msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%."
2183
  msgstr ""
2184
 
2185
- #: defaults.php:192
2186
  msgid "User activated a WordPress plugin"
2187
  msgstr ""
2188
 
2189
- #: defaults.php:192
2190
  msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%."
2191
  msgstr ""
2192
 
2193
- #: defaults.php:193
2194
  msgid "User deactivated a WordPress plugin"
2195
  msgstr ""
2196
 
2197
- #: defaults.php:193
2198
  msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%."
2199
  msgstr ""
2200
 
2201
- #: defaults.php:194
2202
  msgid "User uninstalled a plugin"
2203
  msgstr ""
2204
 
2205
- #: defaults.php:194
2206
  msgid ""
2207
  "Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile"
2208
  "%."
2209
  msgstr ""
2210
 
2211
- #: defaults.php:195
2212
  msgid "User upgraded a plugin"
2213
  msgstr ""
2214
 
2215
- #: defaults.php:195
2216
  msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%."
2217
  msgstr ""
2218
 
2219
- #: defaults.php:196
2220
  msgid "User installed a theme"
2221
  msgstr ""
2222
 
2223
- #: defaults.php:196
2224
  msgid ""
2225
  "Installed the theme \"%Theme->Name%\" in %Theme->get_template_directory%."
2226
  msgstr ""
2227
 
2228
- #: defaults.php:197
2229
  msgid "User activated a theme"
2230
  msgstr ""
2231
 
2232
- #: defaults.php:197
2233
  msgid ""
2234
  "Activated the theme \"%Theme->Name%\", installed in %Theme-"
2235
  ">get_template_directory%."
2236
  msgstr ""
2237
 
2238
- #: defaults.php:198
2239
  msgid "User uninstalled a theme"
2240
  msgstr ""
2241
 
2242
- #: defaults.php:198
2243
  msgid ""
2244
  "Deleted the theme \"%Theme->Name%\" installed in %Theme-"
2245
  ">get_template_directory%."
2246
  msgstr ""
2247
 
2248
- #: defaults.php:199
2249
  msgid "A plugin created a post"
2250
  msgstr ""
2251
 
2252
- #: defaults.php:199
2253
- msgid "A plugin automatically created the following post: %PostTitle%."
 
 
2254
  msgstr ""
2255
 
2256
- #: defaults.php:200
2257
  msgid "A plugin created a page"
2258
  msgstr ""
2259
 
2260
- #: defaults.php:200
2261
  msgid "A plugin automatically created the following page: %PostTitle%."
2262
  msgstr ""
2263
 
2264
- #: defaults.php:201
2265
  msgid "A plugin created a custom post"
2266
  msgstr ""
2267
 
2268
- #: defaults.php:201
2269
  msgid "A plugin automatically created the following custom post: %PostTitle%."
2270
  msgstr ""
2271
 
2272
- #: defaults.php:202
2273
  msgid "A plugin deleted a post"
2274
  msgstr ""
2275
 
2276
- #: defaults.php:202
2277
- msgid "A plugin automatically deleted the following post: %PostTitle%."
 
2278
  msgstr ""
2279
 
2280
- #: defaults.php:203
2281
  msgid "A plugin deleted a page"
2282
  msgstr ""
2283
 
2284
- #: defaults.php:203
2285
  msgid "A plugin automatically deleted the following page: %PostTitle%."
2286
  msgstr ""
2287
 
2288
- #: defaults.php:204
2289
  msgid "A plugin deleted a custom post"
2290
  msgstr ""
2291
 
2292
- #: defaults.php:204
2293
  msgid "A plugin automatically deleted the following custom post: %PostTitle%."
2294
  msgstr ""
2295
 
2296
- #: defaults.php:205
2297
  msgid "User updated a theme"
2298
  msgstr ""
2299
 
2300
- #: defaults.php:205
2301
  msgid ""
2302
  "Updated the theme \"%Theme->Name%\" installed in %Theme-"
2303
  ">get_template_directory%."
2304
  msgstr ""
2305
 
2306
- #: defaults.php:206
2307
  msgid "User changed a file using the theme editor"
2308
  msgstr ""
2309
 
2310
- #: defaults.php:206
2311
  msgid "Modified %File% with the Theme Editor."
2312
  msgstr ""
2313
 
2314
- #: defaults.php:207
2315
  msgid "User changed a file using the plugin editor"
2316
  msgstr ""
2317
 
2318
- #: defaults.php:207
2319
  msgid "Modified %File% with the Plugin Editor."
2320
  msgstr ""
2321
 
2322
- #: defaults.php:208
2323
- msgid "A plugin modified a post"
2324
- msgstr ""
2325
-
2326
- #: defaults.php:208
2327
- msgid "Plugin modified the post %PostTitle%. View the post: %EditorLinkPost%."
2328
- msgstr ""
2329
-
2330
- #: defaults.php:209
2331
  msgid "A plugin modified a page"
2332
  msgstr ""
2333
 
2334
- #: defaults.php:209
2335
  msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
2336
  msgstr ""
2337
 
2338
- #: defaults.php:210
2339
  msgid "A plugin modified a custom post"
2340
  msgstr ""
2341
 
2342
- #: defaults.php:210
2343
  msgid ""
2344
  "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
2345
  msgstr ""
2346
 
2347
- #: defaults.php:212
2348
  msgid "System Activity"
2349
  msgstr ""
2350
 
2351
- #: defaults.php:213
2352
  msgid "Unknown Error"
2353
  msgstr ""
2354
 
2355
- #: defaults.php:213
2356
  msgid "An unexpected error has occurred ."
2357
  msgstr ""
2358
 
2359
- #: defaults.php:214
2360
  msgid "PHP error"
2361
  msgstr ""
2362
 
2363
- #: defaults.php:214 defaults.php:215 defaults.php:216 defaults.php:217
2364
- #: defaults.php:218
2365
  msgid "%Message%."
2366
  msgstr ""
2367
 
2368
- #: defaults.php:215
2369
  msgid "PHP warning"
2370
  msgstr ""
2371
 
2372
- #: defaults.php:216
2373
  msgid "PHP notice"
2374
  msgstr ""
2375
 
2376
- #: defaults.php:217
2377
  msgid "PHP exception"
2378
  msgstr ""
2379
 
2380
- #: defaults.php:218
2381
  msgid "PHP shutdown error"
2382
  msgstr ""
2383
 
2384
- #: defaults.php:219
2385
  msgid "Events automatically pruned by system"
2386
  msgstr ""
2387
 
2388
- #: defaults.php:219
2389
  msgid "System automatically deleted %EventCount% alert(s)."
2390
  msgstr ""
2391
 
2392
- #: defaults.php:220
2393
  msgid "Option Anyone Can Register in WordPress settings changed"
2394
  msgstr ""
2395
 
2396
- #: defaults.php:220
2397
  msgid "%NewValue% the option \"Anyone can register\"."
2398
  msgstr ""
2399
 
2400
- #: defaults.php:221
2401
  msgid "New User Default Role changed"
2402
  msgstr ""
2403
 
2404
- #: defaults.php:221
2405
  msgid "Changed the New User Default Role from %OldRole% to %NewRole%."
2406
  msgstr ""
2407
 
2408
- #: defaults.php:222
2409
  msgid "WordPress Administrator Notification email changed"
2410
  msgstr ""
2411
 
2412
- #: defaults.php:222
2413
  msgid ""
2414
  "Changed the WordPress administrator notifications email address from "
2415
  "%OldEmail% to %NewEmail%."
2416
  msgstr ""
2417
 
2418
- #: defaults.php:223
2419
  msgid "WordPress was updated"
2420
  msgstr ""
2421
 
2422
- #: defaults.php:223
2423
  msgid "Updated WordPress from version %OldVersion% to %NewVersion%."
2424
  msgstr ""
2425
 
2426
- #: defaults.php:224
2427
  msgid "User changes the WordPress Permalinks"
2428
  msgstr ""
2429
 
2430
- #: defaults.php:224
2431
  msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%."
2432
  msgstr ""
2433
 
2434
- #: defaults.php:225
2435
  msgid "User requests non-existing pages (404 Error Pages)"
2436
  msgstr ""
2437
 
2438
- #: defaults.php:225
2439
  msgid ""
2440
  "Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. "
2441
- "%LinkFile%."
2442
  msgstr ""
2443
 
2444
- #: defaults.php:226
2445
  msgid "Website Visitor User requests non-existing pages (404 Error Pages)"
2446
  msgstr ""
2447
 
2448
- #: defaults.php:226
2449
  msgid ""
2450
  "Website Visitor Has requested a non existing page (404 Error Pages) %Attempts"
2451
- "% %Msg%. %LinkFile%."
2452
  msgstr ""
2453
 
2454
- #: defaults.php:227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2455
  msgid "Advertising Add-ons."
2456
  msgstr ""
2457
 
2458
- #: defaults.php:227
2459
  msgid "%PromoName% %PromoMessage%"
2460
  msgstr ""
2461
 
2462
- #: defaults.php:229
2463
  msgid "Menus"
2464
  msgstr ""
2465
 
2466
- #: defaults.php:230
2467
  msgid "User created new menu"
2468
  msgstr ""
2469
 
2470
- #: defaults.php:230
2471
  msgid "Created a new menu called %MenuName%."
2472
  msgstr ""
2473
 
2474
- #: defaults.php:231
2475
  msgid "User added content to a menu"
2476
  msgstr ""
2477
 
2478
- #: defaults.php:231
2479
  msgid "Added the %ContentType% called %ContentName% to menu %MenuName%."
2480
  msgstr ""
2481
 
2482
- #: defaults.php:232
2483
  msgid "User removed content from a menu"
2484
  msgstr ""
2485
 
2486
- #: defaults.php:232
2487
  msgid ""
2488
  "Removed the %ContentType% called %ContentName% from the menu %MenuName%."
2489
  msgstr ""
2490
 
2491
- #: defaults.php:233
2492
  msgid "User deleted menu"
2493
  msgstr ""
2494
 
2495
- #: defaults.php:233
2496
  msgid "Deleted the menu %MenuName%."
2497
  msgstr ""
2498
 
2499
- #: defaults.php:234
2500
  msgid "User changed menu setting"
2501
  msgstr ""
2502
 
2503
- #: defaults.php:234
2504
  msgid "%Status% the menu setting %MenuSetting% in %MenuName%."
2505
  msgstr ""
2506
 
2507
- #: defaults.php:235
2508
  msgid "User modified content in a menu"
2509
  msgstr ""
2510
 
2511
- #: defaults.php:235
2512
  msgid "Modified the %ContentType% called %ContentName% in menu %MenuName%."
2513
  msgstr ""
2514
 
2515
- #: defaults.php:236
2516
  msgid "User changed name of a menu"
2517
  msgstr ""
2518
 
2519
- #: defaults.php:236
2520
  msgid "Changed the name of menu %OldMenuName% to %NewMenuName%."
2521
  msgstr ""
2522
 
2523
- #: defaults.php:237
2524
  msgid "User changed order of the objects in a menu"
2525
  msgstr ""
2526
 
2527
- #: defaults.php:237
2528
  msgid "Changed the order of the %ItemName% in menu %MenuName%."
2529
  msgstr ""
2530
 
2531
- #: defaults.php:238
2532
  msgid "User moved objects as a sub-item"
2533
  msgstr ""
2534
 
2535
- #: defaults.php:238
2536
  msgid "Moved %ItemName% as a sub-item of %ParentName% in menu %MenuName%."
2537
  msgstr ""
2538
 
2539
- #: defaults.php:240
2540
  msgid "Widgets"
2541
  msgstr ""
2542
 
2543
- #: defaults.php:241
2544
  msgid "User added a new widget"
2545
  msgstr ""
2546
 
2547
- #: defaults.php:241
2548
  msgid "Added a new %WidgetName% widget in %Sidebar%."
2549
  msgstr ""
2550
 
2551
- #: defaults.php:242
2552
  msgid "User modified a widget"
2553
  msgstr ""
2554
 
2555
- #: defaults.php:242
2556
  msgid "Modified the %WidgetName% widget in %Sidebar%."
2557
  msgstr ""
2558
 
2559
- #: defaults.php:243
2560
  msgid "User deleted widget"
2561
  msgstr ""
2562
 
2563
- #: defaults.php:243
2564
  msgid "Deleted the %WidgetName% widget from %Sidebar%."
2565
  msgstr ""
2566
 
2567
- #: defaults.php:244
2568
  msgid "User moved widget"
2569
  msgstr ""
2570
 
2571
- #: defaults.php:244
2572
  msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%."
2573
  msgstr ""
2574
 
2575
- #: defaults.php:245
2576
  msgid "User changed widget position"
2577
  msgstr ""
2578
 
2579
- #: defaults.php:245
2580
  msgid "Changed the position of the widget %WidgetName% in sidebar %Sidebar%."
2581
  msgstr ""
2582
 
2583
- #: defaults.php:247
2584
  msgid "Site Settings"
2585
  msgstr ""
2586
 
2587
- #: defaults.php:248
2588
  msgid ""
2589
  "Enabled/Disabled the option Discourage search engines from indexing this site"
2590
  msgstr ""
2591
 
2592
- #: defaults.php:248
2593
  msgid "%Status% the option Discourage search engines from indexing this site."
2594
  msgstr ""
2595
 
2596
- #: defaults.php:249
2597
  msgid "Enabled/Disabled comments on all the website"
2598
  msgstr ""
2599
 
2600
- #: defaults.php:249
2601
  msgid "%Status% comments on all the website."
2602
  msgstr ""
2603
 
2604
- #: defaults.php:250
2605
  msgid "Enabled/Disabled the option Comment author must fill out name and email"
2606
  msgstr ""
2607
 
2608
- #: defaults.php:250
2609
  msgid "%Status% the option Comment author must fill out name and email."
2610
  msgstr ""
2611
 
2612
- #: defaults.php:251
2613
  msgid ""
2614
  "Enabled/Disabled the option Users must be logged in and registered to comment"
2615
  msgstr ""
2616
 
2617
- #: defaults.php:251
2618
  msgid "%Status% the option Users must be logged in and registered to comment."
2619
  msgstr ""
2620
 
2621
- #: defaults.php:252
2622
  msgid "Enabled/Disabled the option to automatically close comments"
2623
  msgstr ""
2624
 
2625
- #: defaults.php:252
2626
  msgid "%Status% the option to automatically close comments after %Value% days."
2627
  msgstr ""
2628
 
2629
- #: defaults.php:253
2630
  msgid "Changed the value of the option Automatically close comments"
2631
  msgstr ""
2632
 
2633
- #: defaults.php:253
2634
  msgid ""
2635
  "Changed the value of the option Automatically close comments from %OldValue% "
2636
  "to %NewValue% days."
2637
  msgstr ""
2638
 
2639
- #: defaults.php:254
2640
  msgid "Enabled/Disabled the option for comments to be manually approved"
2641
  msgstr ""
2642
 
2643
- #: defaults.php:254
2644
  msgid "%Status% the option for comments to be manually approved."
2645
  msgstr ""
2646
 
2647
- #: defaults.php:255
2648
  msgid ""
2649
  "Enabled/Disabled the option for an author to have previously approved "
2650
  "comments for the comments to appear"
2651
  msgstr ""
2652
 
2653
- #: defaults.php:255
2654
  msgid ""
2655
  "%Status% the option for an author to have previously approved comments for "
2656
  "the comments to appear."
2657
  msgstr ""
2658
 
2659
- #: defaults.php:256
2660
  msgid ""
2661
  "Changed the number of links that a comment must have to be held in the queue"
2662
  msgstr ""
2663
 
2664
- #: defaults.php:256
2665
  msgid ""
2666
  "Changed the number of links from %OldValue% to %NewValue% that a comment "
2667
  "must have to be held in the queue."
2668
  msgstr ""
2669
 
2670
- #: defaults.php:257
2671
  msgid "Modified the list of keywords for comments moderation"
2672
  msgstr ""
2673
 
2674
- #: defaults.php:257
2675
  msgid "Modified the list of keywords for comments moderation."
2676
  msgstr ""
2677
 
2678
- #: defaults.php:258
2679
  msgid "Modified the list of keywords for comments blacklisting"
2680
  msgstr ""
2681
 
2682
- #: defaults.php:258
2683
  msgid "Modified the list of keywords for comments blacklisting."
2684
  msgstr ""
2685
 
2686
- #: defaults.php:261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2687
  msgid "Users Profiles & Activity"
2688
  msgstr ""
2689
 
2690
- #: defaults.php:262
2691
  msgid "Other User Activity"
2692
  msgstr ""
2693
 
2694
- #: defaults.php:263
2695
  msgid "User logged in"
2696
  msgstr ""
2697
 
2698
- #: defaults.php:263
2699
  msgid "Successfully logged in."
2700
  msgstr ""
2701
 
2702
- #: defaults.php:264
2703
  msgid "User logged out"
2704
  msgstr ""
2705
 
2706
- #: defaults.php:264
2707
  msgid "Successfully logged out."
2708
  msgstr ""
2709
 
2710
- #: defaults.php:265
2711
  msgid "Login failed"
2712
  msgstr ""
2713
 
2714
- #: defaults.php:265
2715
  msgid "%Attempts% failed login(s) detected."
2716
  msgstr ""
2717
 
2718
- #: defaults.php:266
2719
  msgid "Login failed / non existing user"
2720
  msgstr ""
2721
 
2722
- #: defaults.php:266
2723
- msgid "%Attempts% failed login(s) detected using non existing user."
 
2724
  msgstr ""
2725
 
2726
- #: defaults.php:267
2727
  msgid "Login blocked"
2728
  msgstr ""
2729
 
2730
- #: defaults.php:267
2731
  msgid ""
2732
  "Blocked from logging in because the same WordPress user is logged in from "
2733
  "%ClientIP%."
2734
  msgstr ""
2735
 
2736
- #: defaults.php:268
2737
  msgid "User logged in with existing session(s)"
2738
  msgstr ""
2739
 
2740
- #: defaults.php:268
2741
  msgid ""
2742
  "Successfully logged in. Another session from %IPAddress% for this user "
2743
  "already exist."
2744
  msgstr ""
2745
 
2746
- #: defaults.php:269
2747
  msgid "User logged out all other sessions with the same username"
2748
  msgstr ""
2749
 
2750
- #: defaults.php:269
2751
  msgid "Logged out all other sessions with the same username."
2752
  msgstr ""
2753
 
2754
- #: defaults.php:270
2755
  msgid "User session destroyed and logged out."
2756
  msgstr ""
2757
 
2758
- #: defaults.php:270
2759
  msgid "Logged out session %TargetSessionID% which belonged to %TargetUserName%"
2760
  msgstr ""
2761
 
2762
- #: defaults.php:271
2763
  msgid "User uploaded file from Uploads directory"
2764
  msgstr ""
2765
 
2766
- #: defaults.php:271
2767
  msgid "Uploaded the file %FileName% in %FilePath%."
2768
  msgstr ""
2769
 
2770
- #: defaults.php:272
2771
  msgid "User deleted file from Uploads directory"
2772
  msgstr ""
2773
 
2774
- #: defaults.php:272
2775
  msgid "Deleted the file %FileName% from %FilePath%."
2776
  msgstr ""
2777
 
2778
- #: defaults.php:274
2779
  msgid "User Profiles"
2780
  msgstr ""
2781
 
2782
- #: defaults.php:275
2783
  msgid "New user was created on WordPress"
2784
  msgstr ""
2785
 
2786
- #: defaults.php:275
2787
  msgid ""
2788
  "A new user %NewUserData->Username% was created with role of %NewUserData-"
2789
  ">Roles%."
2790
  msgstr ""
2791
 
2792
- #: defaults.php:276
2793
  msgid "User created another WordPress user"
2794
  msgstr ""
2795
 
2796
- #: defaults.php:276
2797
  msgid ""
2798
  "%UserChanger% created a new user %NewUserData->Username% with the role of "
2799
  "%NewUserData->Roles%."
2800
  msgstr ""
2801
 
2802
- #: defaults.php:277
2803
  msgid "The role of a user was changed by another WordPress user"
2804
  msgstr ""
2805
 
2806
- #: defaults.php:277
2807
  msgid ""
2808
- "Changed the role of the user %TargetUsername% from %OldRole% to %NewRole%."
 
2809
  msgstr ""
2810
 
2811
- #: defaults.php:278
2812
  msgid "User has changed his or her password"
2813
  msgstr ""
2814
 
2815
- #: defaults.php:278
2816
  msgid "Changed the password."
2817
  msgstr ""
2818
 
2819
- #: defaults.php:279
2820
  msgid "User changed another user's password"
2821
  msgstr ""
2822
 
2823
- #: defaults.php:279
2824
  msgid ""
2825
  "Changed the password for the user %TargetUserData->Username% with the role "
2826
  "of %TargetUserData->Roles%."
2827
  msgstr ""
2828
 
2829
- #: defaults.php:280
2830
  msgid "User changed his or her email address"
2831
  msgstr ""
2832
 
2833
- #: defaults.php:280
2834
  msgid "Changed the email address from %OldEmail% to %NewEmail%."
2835
  msgstr ""
2836
 
2837
- #: defaults.php:281
2838
  msgid "User changed another user's email address"
2839
  msgstr ""
2840
 
2841
- #: defaults.php:281
2842
  msgid ""
2843
  "Changed the email address of the user %TargetUsername% from %OldEmail% to "
2844
  "%NewEmail%."
2845
  msgstr ""
2846
 
2847
- #: defaults.php:282
2848
  msgid "User was deleted by another user"
2849
  msgstr ""
2850
 
2851
- #: defaults.php:282
2852
  msgid ""
2853
  "Deleted the user %TargetUserData->Username% with the role of %TargetUserData-"
2854
  ">Roles%."
2855
  msgstr ""
2856
 
2857
- #: defaults.php:283
2858
  msgid "User opened the profile page of another user"
2859
  msgstr ""
2860
 
2861
- #: defaults.php:283
2862
  msgid "%UserChanger% opened the profile page of the user %TargetUsername%."
2863
  msgstr ""
2864
 
2865
- #: defaults.php:284
2866
  msgid "User updated a custom field value for a user"
2867
  msgstr ""
2868
 
2869
- #: defaults.php:284
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2870
  msgid ""
2871
- "Changed the value of the custom field %custom_field_name% from %old_value% "
2872
- "to %new_value% for the user %TargetUsername%."
2873
  msgstr ""
2874
 
2875
- #: defaults.php:285
2876
- msgid "User created a custom field value for a user"
2877
  msgstr ""
2878
 
2879
- #: defaults.php:285
2880
  msgid ""
2881
- "Created the value of the custom field %custom_field_name% with %new_value% "
2882
- "for the user %TargetUsername%."
2883
  msgstr ""
2884
 
2885
- #: defaults.php:288
2886
  msgid "Third Party Support"
2887
  msgstr ""
2888
 
2889
- #: defaults.php:289
2890
  msgid "BBPress Forum"
2891
  msgstr ""
2892
 
2893
- #: defaults.php:290
2894
  msgid "User created new forum"
2895
  msgstr ""
2896
 
2897
- #: defaults.php:290
2898
  msgid ""
2899
  "Created new forum %ForumName%. Forum URL is %ForumURL%. %EditorLinkForum%."
2900
  msgstr ""
2901
 
2902
- #: defaults.php:291
2903
  msgid "User changed status of a forum"
2904
  msgstr ""
2905
 
2906
- #: defaults.php:291
2907
  msgid ""
2908
  "Changed the status of the forum %ForumName% from %OldStatus% to %NewStatus%. "
2909
  "%EditorLinkForum%."
2910
  msgstr ""
2911
 
2912
- #: defaults.php:292
2913
  msgid "User changed visibility of a forum"
2914
  msgstr ""
2915
 
2916
- #: defaults.php:292
2917
  msgid ""
2918
  "Changed the visibility of the forum %ForumName% from %OldVisibility% to "
2919
  "%NewVisibility%. %EditorLinkForum%."
2920
  msgstr ""
2921
 
2922
- #: defaults.php:293
2923
  msgid "User changed the URL of a forum"
2924
  msgstr ""
2925
 
2926
- #: defaults.php:293
2927
  msgid ""
2928
  "Changed the URL of the forum %ForumName% from %OldUrl% to %NewUrl%. "
2929
  "%EditorLinkForum%."
2930
  msgstr ""
2931
 
2932
- #: defaults.php:294
2933
  msgid "User changed order of a forum"
2934
  msgstr ""
2935
 
2936
- #: defaults.php:294
2937
  msgid ""
2938
  "Changed the order of the forum %ForumName% from %OldOrder% to %NewOrder%. "
2939
  "%EditorLinkForum%."
2940
  msgstr ""
2941
 
2942
- #: defaults.php:295
2943
  msgid "User moved forum to trash"
2944
  msgstr ""
2945
 
2946
- #: defaults.php:295
2947
  msgid "Moved the forum %ForumName% to trash."
2948
  msgstr ""
2949
 
2950
- #: defaults.php:296
2951
  msgid "User permanently deleted forum"
2952
  msgstr ""
2953
 
2954
- #: defaults.php:296
2955
  msgid "Permanently deleted the forum %ForumName%."
2956
  msgstr ""
2957
 
2958
- #: defaults.php:297
2959
  msgid "User restored forum from trash"
2960
  msgstr ""
2961
 
2962
- #: defaults.php:297
2963
  msgid "Restored the forum %ForumName% from trash. %EditorLinkForum%."
2964
  msgstr ""
2965
 
2966
- #: defaults.php:298
2967
  msgid "User changed the parent of a forum"
2968
  msgstr ""
2969
 
2970
- #: defaults.php:298
2971
  msgid ""
2972
  "Changed the parent of the forum %ForumName% from %OldParent% to %NewParent%. "
2973
  "%EditorLinkForum%."
2974
  msgstr ""
2975
 
2976
- #: defaults.php:299
2977
  msgid "User changed forum's role"
2978
  msgstr ""
2979
 
2980
- #: defaults.php:299
2981
  msgid "Changed the forum's auto role from %OldRole% to %NewRole%."
2982
  msgstr ""
2983
 
2984
- #: defaults.php:300
2985
  msgid "User changed option of a forum"
2986
  msgstr ""
2987
 
2988
- #: defaults.php:300
2989
  msgid "%Status% the option for anonymous posting on forum."
2990
  msgstr ""
2991
 
2992
- #: defaults.php:301
2993
  msgid "User changed type of a forum"
2994
  msgstr ""
2995
 
2996
- #: defaults.php:301
2997
  msgid ""
2998
  "Changed the type of the forum %ForumName% from %OldType% to %NewType%. "
2999
  "%EditorLinkForum%."
3000
  msgstr ""
3001
 
3002
- #: defaults.php:302
3003
  msgid "User changed time to disallow post editing"
3004
  msgstr ""
3005
 
3006
- #: defaults.php:302
3007
  msgid ""
3008
  "Changed the time to disallow post editing from %OldTime% to %NewTime% "
3009
  "minutes in the forums."
3010
  msgstr ""
3011
 
3012
- #: defaults.php:303
3013
  msgid "User changed the forum setting posting throttle time"
3014
  msgstr ""
3015
 
3016
- #: defaults.php:303
3017
  msgid ""
3018
  "Changed the posting throttle time from %OldTime% to %NewTime% seconds in the "
3019
  "forums."
3020
  msgstr ""
3021
 
3022
- #: defaults.php:304
3023
  msgid "User created new topic"
3024
  msgstr ""
3025
 
3026
- #: defaults.php:304
3027
  msgid "Created a new topic %TopicName%. %EditorLinkTopic%."
3028
  msgstr ""
3029
 
3030
- #: defaults.php:305
3031
  msgid "User changed status of a topic"
3032
  msgstr ""
3033
 
3034
- #: defaults.php:305
3035
  msgid ""
3036
  "Changed the status of the topic %TopicName% from %OldStatus% to %NewStatus%. "
3037
  "%EditorLinkTopic%."
3038
  msgstr ""
3039
 
3040
- #: defaults.php:306
3041
  msgid "User changed type of a topic"
3042
  msgstr ""
3043
 
3044
- #: defaults.php:306
3045
  msgid ""
3046
  "Changed the type of the topic %TopicName% from %OldType% to %NewType%. "
3047
  "%EditorLinkTopic%."
3048
  msgstr ""
3049
 
3050
- #: defaults.php:307
3051
  msgid "User changed URL of a topic"
3052
  msgstr ""
3053
 
3054
- #: defaults.php:307
3055
  msgid "Changed the URL of the topic %TopicName% from %OldUrl% to %NewUrl%."
3056
  msgstr ""
3057
 
3058
- #: defaults.php:308
3059
  msgid "User changed the forum of a topic"
3060
  msgstr ""
3061
 
3062
- #: defaults.php:308
3063
  msgid ""
3064
  "Changed the forum of the topic %TopicName% from %OldForum% to %NewForum%. "
3065
  "%EditorLinkTopic%."
3066
  msgstr ""
3067
 
3068
- #: defaults.php:309
3069
  msgid "User moved topic to trash"
3070
  msgstr ""
3071
 
3072
- #: defaults.php:309
3073
  msgid "Moved the topic %TopicName% to trash."
3074
  msgstr ""
3075
 
3076
- #: defaults.php:310
3077
  msgid "User permanently deleted topic"
3078
  msgstr ""
3079
 
3080
- #: defaults.php:310
3081
  msgid "Permanently deleted the topic %TopicName%."
3082
  msgstr ""
3083
 
3084
- #: defaults.php:311
3085
  msgid "User restored topic from trash"
3086
  msgstr ""
3087
 
3088
- #: defaults.php:311
3089
  msgid "Restored the topic %TopicName% from trash. %EditorLinkTopic%."
3090
  msgstr ""
3091
 
3092
- #: defaults.php:312
3093
  msgid "User changed visibility of a topic"
3094
  msgstr ""
3095
 
3096
- #: defaults.php:312
3097
  msgid ""
3098
  "Changed the visibility of the topic %TopicName% from %OldVisibility% to "
3099
  "%NewVisibility%. %EditorLinkTopic%."
3100
  msgstr ""
3101
 
3102
- #: defaults.php:314
3103
  msgid "WooCommerce"
3104
  msgstr ""
3105
 
3106
- #: defaults.php:315
3107
  msgid "User created a new product"
3108
  msgstr ""
3109
 
3110
- #: defaults.php:315
3111
  msgid ""
3112
  "Created a new product called %ProductTitle% and saved it as draft. View the "
3113
  "product: %EditorLinkProduct%."
3114
  msgstr ""
3115
 
3116
- #: defaults.php:316
3117
  msgid "User published a product"
3118
  msgstr ""
3119
 
3120
- #: defaults.php:316
3121
  msgid ""
3122
  "Published a product called %ProductTitle%. Product URL is %ProductUrl%. View "
3123
  "the product: %EditorLinkProduct%."
3124
  msgstr ""
3125
 
3126
- #: defaults.php:317
3127
  msgid "User created a new product category"
3128
  msgstr ""
3129
 
3130
- #: defaults.php:317
3131
  msgid ""
3132
  "Created a new product category called %CategoryName% in WooCommerce. Product "
3133
  "category slug is %Slug%."
3134
  msgstr ""
3135
 
3136
- #: defaults.php:318
3137
  msgid "User changed the category of a product"
3138
  msgstr ""
3139
 
3140
- #: defaults.php:318
3141
  msgid ""
3142
  "Changed the category of the product %ProductTitle% from %OldCategories% to "
3143
  "%NewCategories%. View the product: %EditorLinkProduct%."
3144
  msgstr ""
3145
 
3146
- #: defaults.php:319
3147
  msgid "User modified the short description of a product"
3148
  msgstr ""
3149
 
3150
- #: defaults.php:319
3151
  msgid ""
3152
- "Modified the short description of the product %ProductTitle%. View the "
3153
- "product: %EditorLinkProduct%."
3154
  msgstr ""
3155
 
3156
- #: defaults.php:320
3157
  msgid "User modified the text of a product"
3158
  msgstr ""
3159
 
3160
- #: defaults.php:320
3161
  msgid ""
3162
  "Modified the text of the product %ProductTitle%. View the product: "
3163
  "%EditorLinkProduct%."
3164
  msgstr ""
3165
 
3166
- #: defaults.php:321
3167
  msgid "User changed the URL of a product"
3168
  msgstr ""
3169
 
3170
- #: defaults.php:321
3171
  msgid ""
3172
- "Changed the URL of the product %ProductTitle% from %OldUrl% to %NewUrl%. "
3173
- "View the product: %EditorLinkProduct%."
3174
  msgstr ""
3175
 
3176
- #: defaults.php:322
3177
  msgid "User changed the Product Data of a product"
3178
  msgstr ""
3179
 
3180
- #: defaults.php:322
3181
  msgid ""
3182
  "Changed the Product Data of the product %ProductTitle%. View the product: "
3183
  "%EditorLinkProduct%."
3184
  msgstr ""
3185
 
3186
- #: defaults.php:323
3187
  msgid "User changed the date of a product"
3188
  msgstr ""
3189
 
3190
- #: defaults.php:323
3191
  msgid ""
3192
  "Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. "
3193
  "View the product: %EditorLinkProduct%."
3194
  msgstr ""
3195
 
3196
- #: defaults.php:324
3197
  msgid "User changed the visibility of a product"
3198
  msgstr ""
3199
 
3200
- #: defaults.php:324
3201
  msgid ""
3202
  "Changed the visibility of the product %ProductTitle% from %OldVisibility% to "
3203
  "%NewVisibility%. View the product: %EditorLinkProduct%."
3204
  msgstr ""
3205
 
3206
- #: defaults.php:325
3207
  msgid "User modified the published product"
3208
  msgstr ""
3209
 
3210
- #: defaults.php:325
3211
  msgid ""
3212
  "Modified the published product %ProductTitle%. Product URL is %ProductUrl%. "
3213
  "View the product: %EditorLinkProduct%."
3214
  msgstr ""
3215
 
3216
- #: defaults.php:326
3217
  msgid "User modified the draft product"
3218
  msgstr ""
3219
 
3220
- #: defaults.php:326
3221
  msgid ""
3222
  "Modified the draft product %ProductTitle%. View the product: "
3223
  "%EditorLinkProduct%."
3224
  msgstr ""
3225
 
3226
- #: defaults.php:327
3227
  msgid "User moved a product to trash"
3228
  msgstr ""
3229
 
3230
- #: defaults.php:327
3231
  msgid ""
3232
  "Moved the product %ProductTitle% to trash. Product URL was %ProductUrl%."
3233
  msgstr ""
3234
 
3235
- #: defaults.php:328
3236
  msgid "User permanently deleted a product"
3237
  msgstr ""
3238
 
3239
- #: defaults.php:328
3240
  msgid "Permanently deleted the product %ProductTitle%."
3241
  msgstr ""
3242
 
3243
- #: defaults.php:329
3244
  msgid "User restored a product from the trash"
3245
  msgstr ""
3246
 
3247
- #: defaults.php:329
3248
  msgid ""
3249
  "Product %ProductTitle% has been restored from trash. View product: "
3250
  "%EditorLinkProduct%."
3251
  msgstr ""
3252
 
3253
- #: defaults.php:330
3254
  msgid "User changed status of a product"
3255
  msgstr ""
3256
 
3257
- #: defaults.php:330
3258
  msgid ""
3259
  "Changed the status of the product %ProductTitle% from %OldStatus% to "
3260
  "%NewStatus%. View the product: %EditorLinkProduct%."
3261
  msgstr ""
3262
 
3263
- #: defaults.php:331
3264
  msgid "User changed type of a price"
3265
  msgstr ""
3266
 
3267
- #: defaults.php:331
3268
  msgid ""
3269
  "Changed the %PriceType% of the product %ProductTitle% from %OldPrice% to "
3270
  "%NewPrice%. View the product: %EditorLinkProduct%."
3271
  msgstr ""
3272
 
3273
- #: defaults.php:332
3274
  msgid "User changed the SKU of a product"
3275
  msgstr ""
3276
 
3277
- #: defaults.php:332
3278
  msgid ""
3279
  "Changed the SKU of the product %ProductTitle% from %OldSku% to %NewSku%. "
3280
  "View the product: %EditorLinkProduct%."
3281
  msgstr ""
3282
 
3283
- #: defaults.php:333
3284
  msgid "User changed the stock status of a product"
3285
  msgstr ""
3286
 
3287
- #: defaults.php:333
3288
  msgid ""
3289
  "Changed the stock status of the product %ProductTitle% from %OldStatus% to "
3290
  "%NewStatus%. View the product: %EditorLinkProduct%."
3291
  msgstr ""
3292
 
3293
- #: defaults.php:334
3294
  msgid "User changed the stock quantity"
3295
  msgstr ""
3296
 
3297
- #: defaults.php:334
3298
  msgid ""
3299
- "Changed the stock quantity from %OldValue% to %NewValue%. View the product: "
3300
- "%EditorLinkProduct%"
3301
  msgstr ""
3302
 
3303
- #: defaults.php:335
3304
  msgid "User set a product type"
3305
  msgstr ""
3306
 
3307
- #: defaults.php:335
3308
  msgid ""
3309
  "Set the product %ProductTitle% as %Type%. View the product: "
3310
  "%EditorLinkProduct%."
3311
  msgstr ""
3312
 
3313
- #: defaults.php:336
3314
  msgid "User changed the weight of a product"
3315
  msgstr ""
3316
 
3317
- #: defaults.php:336
3318
  msgid ""
3319
  "Changed the weight of the product %ProductTitle% from %OldWeight% to "
3320
  "%NewWeight%. View the product: %EditorLinkProduct%."
3321
  msgstr ""
3322
 
3323
- #: defaults.php:337
3324
  msgid "User changed the dimensions of a product"
3325
  msgstr ""
3326
 
3327
- #: defaults.php:337
3328
  msgid ""
3329
  "Changed the %DimensionType% dimensions of the product %ProductTitle% from "
3330
  "%OldDimension% to %NewDimension%. View the product: %EditorLinkProduct%."
3331
  msgstr ""
3332
 
3333
- #: defaults.php:338
3334
  msgid "User added the Downloadable File to a product"
3335
  msgstr ""
3336
 
3337
- #: defaults.php:338
3338
  msgid ""
3339
  "Added the Downloadable File %FileName% with File URL %FileUrl% to the "
3340
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3341
  msgstr ""
3342
 
3343
- #: defaults.php:339
3344
  msgid "User Removed the Downloadable File from a product"
3345
  msgstr ""
3346
 
3347
- #: defaults.php:339
3348
  msgid ""
3349
  "Removed the Downloadable File %FileName% with File URL %FileUrl% from the "
3350
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3351
  msgstr ""
3352
 
3353
- #: defaults.php:340
3354
  msgid "User changed the name of a Downloadable File in a product"
3355
  msgstr ""
3356
 
3357
- #: defaults.php:340
3358
  msgid ""
3359
  "Changed the name of a Downloadable File from %OldName% to %NewName% in "
3360
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3361
  msgstr ""
3362
 
3363
- #: defaults.php:341
3364
  msgid "User changed the URL of the Downloadable File in a product"
3365
  msgstr ""
3366
 
3367
- #: defaults.php:341
3368
  msgid ""
3369
  "Changed the URL of the Downloadable File %FileName% from %OldUrl% to %NewUrl"
3370
  "% in product %ProductTitle%. View the product: %EditorLinkProduct%."
3371
  msgstr ""
3372
 
3373
- #: defaults.php:342
3374
  msgid "User changed the Weight Unit"
3375
  msgstr ""
3376
 
3377
- #: defaults.php:342
3378
  msgid "Changed the Weight Unit from %OldUnit% to %NewUnit% in WooCommerce."
3379
  msgstr ""
3380
 
3381
- #: defaults.php:343
3382
  msgid "User changed the Dimensions Unit"
3383
  msgstr ""
3384
 
3385
- #: defaults.php:343
3386
  msgid "Changed the Dimensions Unit from %OldUnit% to %NewUnit% in WooCommerce."
3387
  msgstr ""
3388
 
3389
- #: defaults.php:344
3390
  msgid "User changed the Base Location"
3391
  msgstr ""
3392
 
3393
- #: defaults.php:344
3394
  msgid ""
3395
  "Changed the Base Location from %OldLocation% to %NewLocation% in WooCommerce."
3396
  msgstr ""
3397
 
3398
- #: defaults.php:345
3399
  msgid "User Enabled/Disabled taxes"
3400
  msgstr ""
3401
 
3402
- #: defaults.php:345
3403
  msgid "%Status% taxes in the WooCommerce store."
3404
  msgstr ""
3405
 
3406
- #: defaults.php:346
3407
  msgid "User changed the currency"
3408
  msgstr ""
3409
 
3410
- #: defaults.php:346
3411
  msgid ""
3412
  "Changed the currency from %OldCurrency% to %NewCurrency% in WooCommerce."
3413
  msgstr ""
3414
 
3415
- #: defaults.php:347
3416
  msgid "User Enabled/Disabled the use of coupons during checkout"
3417
  msgstr ""
3418
 
3419
- #: defaults.php:347
3420
  msgid "%Status% the use of coupons during checkout in WooCommerce."
3421
  msgstr ""
3422
 
3423
- #: defaults.php:348
3424
  msgid "User Enabled/Disabled guest checkout"
3425
  msgstr ""
3426
 
3427
- #: defaults.php:348
3428
  msgid "%Status% guest checkout in WooCommerce."
3429
  msgstr ""
3430
 
3431
- #: wp-security-audit-log.php:355
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3432
  #, php-format
3433
  msgid ""
3434
  "You are using a version of PHP that is older than %s, which is no longer "
3435
- "supported.<br/>Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
 
 
 
 
 
3436
  "\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you "
3437
  "are using."
3438
  msgstr ""
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: WP Security Audit Log\n"
6
+ "POT-Creation-Date: 2018-05-02 11:30+0100\n"
7
+ "PO-Revision-Date: 2018-05-02 11:30+0100\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.0.7\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
  "X-Poedit-WPHeader: wp-security-audit-log.php\n"
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
 
24
+ #: classes/AuditLogListView.php:80
25
  msgid "No events so far."
26
  msgstr ""
27
 
28
+ #: classes/AuditLogListView.php:98
 
 
 
 
29
  msgid "Show "
30
  msgstr ""
31
 
32
+ #: classes/AuditLogListView.php:108
33
  msgid " Items"
34
  msgstr ""
35
 
36
+ #: classes/AuditLogListView.php:123 classes/Views/AuditLog.php:221
37
+ #: classes/Views/AuditLog.php:244
38
  msgid "All Sites"
39
  msgstr ""
40
 
41
+ #: classes/AuditLogListView.php:147
42
  msgid "Live Database"
43
  msgstr ""
44
 
45
+ #: classes/AuditLogListView.php:150
46
  msgid "Archive Database"
47
  msgstr ""
48
 
49
+ #: classes/AuditLogListView.php:203 classes/WidgetManager.php:67
50
  msgid "User"
51
  msgstr ""
52
 
53
+ #: classes/AuditLogListView.php:205 classes/Views/Settings.php:650
54
  msgid "Username"
55
  msgstr ""
56
 
57
+ #: classes/AuditLogListView.php:208 classes/AuditLogListView.php:225
58
+ msgid "Alert ID"
 
59
  msgstr ""
60
 
61
+ #: classes/AuditLogListView.php:209 classes/AuditLogListView.php:228
62
+ msgid "Severity"
 
63
  msgstr ""
64
 
65
+ #: classes/AuditLogListView.php:210 classes/AuditLogListView.php:231
66
  msgid "Date"
67
  msgstr ""
68
 
69
+ #: classes/AuditLogListView.php:212 classes/AuditLogListView.php:237
70
  msgid "Source IP"
71
  msgstr ""
72
 
73
+ #: classes/AuditLogListView.php:215 classes/AuditLogListView.php:240
74
  msgid "Site"
75
  msgstr ""
76
 
77
+ #: classes/AuditLogListView.php:217 classes/AuditLogListView.php:243
78
  msgid "Message"
79
  msgstr ""
80
 
81
+ #: classes/AuditLogListView.php:295
82
  msgid "Click to toggle."
83
  msgstr ""
84
 
85
+ #: classes/AuditLogListView.php:314
86
  msgid "Disable this type of alerts."
87
  msgstr ""
88
 
89
+ #: classes/AuditLogListView.php:322
90
  msgid "Unknown error code."
91
  msgstr ""
92
 
93
+ #: classes/AuditLogListView.php:357
94
  msgid "Show me all activity by this User"
95
  msgstr ""
96
 
97
+ #: classes/AuditLogListView.php:372
98
  msgid "Unknown"
99
  msgstr ""
100
 
101
+ #: classes/AuditLogListView.php:376 classes/Views/Licensing.php:113
102
+ #: classes/Views/Licensing.php:153
103
  msgid "Plugin"
104
  msgstr ""
105
 
106
+ #: classes/AuditLogListView.php:380
107
  msgid "Plugins"
108
  msgstr ""
109
 
110
+ #: classes/AuditLogListView.php:384
111
  msgid "Website Visitor"
112
  msgstr ""
113
 
114
+ #: classes/AuditLogListView.php:388
115
  msgid "System"
116
  msgstr ""
117
 
118
+ #: classes/AuditLogListView.php:408 classes/AuditLogListView.php:421
119
  msgid "Show me all activity originating from this IP Address"
120
  msgstr ""
121
 
122
+ #: classes/AuditLogListView.php:450
123
+ msgid "View all details of this change"
124
+ msgstr ""
125
+
126
+ #: classes/AuditLogListView.php:451 classes/AuditLogListView.php:597
127
  msgid "Alert Data Inspector"
128
  msgstr ""
129
 
130
+ #: classes/AuditLogListView.php:552 classes/AuditLogListView.php:569
131
+ msgid "Download the log file."
132
+ msgstr ""
133
+
134
+ #: classes/AuditLogListView.php:577
135
+ msgid "published"
136
+ msgstr ""
137
+
138
+ #: classes/Loggers/Database.php:182 classes/Views/EmailNotifications.php:153
139
+ #: classes/Views/EmailNotifications.php:185 classes/Views/ExternalDB.php:152
140
+ #: classes/Views/ExternalDB.php:184 classes/Views/Help.php:144
141
+ #: classes/Views/Help.php:195 classes/Views/LogInUsers.php:154
142
+ #: classes/Views/LogInUsers.php:186 classes/Views/Reports.php:153
143
+ #: classes/Views/Reports.php:185 classes/Views/Search.php:153
144
+ #: classes/Views/Search.php:178
145
+ msgid "Upgrade to Premium"
146
+ msgstr ""
147
+
148
+ #: classes/Loggers/Database.php:183 classes/Views/AuditLog.php:105
149
+ #: classes/Views/EmailNotifications.php:154
150
+ #: classes/Views/EmailNotifications.php:186 classes/Views/ExternalDB.php:153
151
+ #: classes/Views/ExternalDB.php:185 classes/Views/Help.php:196
152
+ #: classes/Views/LogInUsers.php:155 classes/Views/LogInUsers.php:187
153
+ #: classes/Views/Reports.php:154 classes/Views/Reports.php:186
154
+ #: classes/Views/Search.php:154 classes/Views/Search.php:179
155
+ msgid "More Information"
156
+ msgstr ""
157
+
158
+ #: classes/Sensors/Content.php:941 classes/Sensors/Content.php:949
159
+ #: classes/Sensors/WooCommerce.php:608 classes/Sensors/WooCommerce.php:614
160
  msgid "Password Protected"
161
  msgstr ""
162
 
163
+ #: classes/Sensors/Content.php:943 classes/Sensors/Content.php:951
164
  msgid "Public"
165
  msgstr ""
166
 
167
+ #: classes/Sensors/Content.php:945 classes/Sensors/Content.php:953
168
  msgid "Private"
169
  msgstr ""
170
 
171
+ #: classes/Sensors/WooCommerce.php:1270
172
  msgid "In stock"
173
  msgstr ""
174
 
175
+ #: classes/Sensors/WooCommerce.php:1272
176
  msgid "Out of stock"
177
  msgstr ""
178
 
179
+ #: classes/Settings.php:363
180
+ msgid "This function is deprecated"
181
  msgstr ""
182
 
183
+ #: classes/Views/AuditLog.php:78
184
+ msgid ""
185
+ "See who is logged in to your WordPress, create user productivity reports, "
186
+ "get alerted via email of important changes and more!"
187
  msgstr ""
188
 
189
+ #: classes/Views/AuditLog.php:79
190
  msgid ""
191
+ "Unlock these powerful features and much more with the premium edition of WP "
192
+ "Security Audit Log."
 
 
193
  msgstr ""
194
 
195
+ #: classes/Views/AuditLog.php:104
196
+ msgid "Buy Now"
 
197
  msgstr ""
198
 
199
+ #: classes/Views/AuditLog.php:123
200
  msgid ""
201
+ "There are connectivity issues with the database where the WordPress activity "
202
+ "log is stored. The logs will be temporary buffered in the WordPress database "
203
+ "until the connection is fully restored."
 
 
204
  msgstr ""
205
 
206
+ #: classes/Views/AuditLog.php:140 classes/Views/AuditLog.php:156
207
+ msgid "Audit Log Viewer"
208
  msgstr ""
209
 
210
+ #: classes/Views/AuditLog.php:183 classes/Views/Licensing.php:82
211
+ #: classes/Views/Settings.php:211 classes/Views/ToggleAlerts.php:68
212
+ msgid "You do not have sufficient permissions to access this page."
213
  msgstr ""
214
 
215
+ #: classes/Views/AuditLog.php:191 classes/Views/AuditLog.php:422
216
+ #: classes/Views/Licensing.php:90 classes/Views/Settings.php:207
217
+ #: classes/Views/Settings.php:968 classes/Views/Settings.php:996
218
+ #: classes/Views/Settings.php:1026
219
+ msgid "Nonce verification failed."
220
  msgstr ""
221
 
222
+ #: classes/Views/AuditLog.php:220 classes/Views/AuditLog.php:243
223
+ msgid "Please enter the number of alerts you would like to see on one page:"
224
  msgstr ""
225
 
226
+ #: classes/Views/AuditLog.php:222 classes/Views/AuditLog.php:245
227
+ msgid "No Results"
228
  msgstr ""
229
 
230
+ #: classes/Views/AuditLog.php:419
231
+ msgid "No users found."
 
 
232
  msgstr ""
233
 
234
+ #: classes/Views/AuditLog.php:441
235
+ msgid "Log file does not exist."
236
  msgstr ""
237
 
238
+ #: classes/Views/AuditLog.php:482
239
+ msgid "Request to get log file failed."
240
  msgstr ""
241
 
242
+ #: classes/Views/AuditLog.php:489
243
+ msgid "Nonce verification failed!"
244
  msgstr ""
245
 
246
+ #: classes/Views/EmailNotifications.php:28
247
+ msgid "Email Notifications Add-On"
248
  msgstr ""
249
 
250
+ #: classes/Views/EmailNotifications.php:42
251
+ msgid "Email Notifications &#8682;"
252
  msgstr ""
253
 
254
+ #: classes/Views/EmailNotifications.php:112
255
+ msgid "Email Notifications"
256
  msgstr ""
257
 
258
+ #: classes/Views/EmailNotifications.php:114 classes/Views/ExternalDB.php:114
259
+ #: classes/Views/LogInUsers.php:114 classes/Views/Reports.php:114
260
+ #: classes/Views/Search.php:114
261
+ msgid "Upgrade to Premium to:"
262
  msgstr ""
263
 
264
+ #: classes/Views/EmailNotifications.php:118
265
  msgid ""
266
+ "Configure email notifications to be instantly alerted of important changes,"
 
267
  msgstr ""
268
 
269
+ #: classes/Views/EmailNotifications.php:119
270
+ msgid ""
271
+ "Configure notifications for when users login, change content, install a "
272
+ "plugin or do any other change,"
273
  msgstr ""
274
 
275
+ #: classes/Views/EmailNotifications.php:120
276
+ msgid "Configure security email notifications,"
277
  msgstr ""
278
 
279
+ #: classes/Views/EmailNotifications.php:121
280
+ msgid "Configure email notifications via a user friendly wizard,"
 
281
  msgstr ""
282
 
283
+ #: classes/Views/EmailNotifications.php:122
284
+ msgid "Edit and create your own templates for email notifications,"
285
  msgstr ""
286
 
287
+ #: classes/Views/EmailNotifications.php:123 classes/Views/ExternalDB.php:122
288
+ #: classes/Views/LogInUsers.php:124 classes/Views/Search.php:123
289
+ msgid "& more."
290
  msgstr ""
291
 
292
+ #: classes/Views/EmailNotifications.php:163 classes/Views/ExternalDB.php:162
293
+ #: classes/Views/LogInUsers.php:164 classes/Views/Reports.php:163
294
+ #: classes/Views/Search.php:163
295
+ msgid "Screenshots"
296
  msgstr ""
297
 
298
+ #: classes/Views/EmailNotifications.php:168
299
+ #: classes/Views/EmailNotifications.php:169
300
  msgid ""
301
+ "Use the trigger builder to configure any type of email notification so you "
302
+ "are instantly alerted of important changes on your WordPress."
303
  msgstr ""
304
 
305
+ #: classes/Views/EmailNotifications.php:175
306
+ #: classes/Views/EmailNotifications.php:176
307
+ msgid ""
308
+ "Use the wizard to easily get started and quickly configure basic email "
309
+ "notifications."
310
  msgstr ""
311
 
312
+ #: classes/Views/ExternalDB.php:28
313
+ msgid "External DB Add-On"
314
  msgstr ""
315
 
316
+ #: classes/Views/ExternalDB.php:42
317
+ msgid "DB & Integrations &#8682;"
 
318
  msgstr ""
319
 
320
+ #: classes/Views/ExternalDB.php:112
321
+ msgid "External DB"
322
  msgstr ""
323
 
324
+ #: classes/Views/ExternalDB.php:118
325
+ msgid ""
326
+ "Move the audit log to an external database for improved security & "
327
+ "performance,"
328
  msgstr ""
329
 
330
+ #: classes/Views/ExternalDB.php:119
331
+ msgid "Centralize the audit log in your centralized logging system,"
332
  msgstr ""
333
 
334
+ #: classes/Views/ExternalDB.php:120
335
+ msgid "Mirror the audit trail to Syslog, Papertrail etc,"
336
  msgstr ""
337
 
338
+ #: classes/Views/ExternalDB.php:121
339
+ msgid ""
340
+ "Configure archiving rules to archive old alerts in an archiving database,"
341
  msgstr ""
342
 
343
+ #: classes/Views/ExternalDB.php:167 classes/Views/ExternalDB.php:168
344
  msgid ""
345
+ "Configure an external database so the WordPress audit trail is stored on it "
346
+ "instead of the WordPress database."
347
  msgstr ""
348
 
349
+ #: classes/Views/ExternalDB.php:174 classes/Views/ExternalDB.php:175
350
+ msgid ""
351
+ "Configure mirroring to keep a secondary copy of the WordPress audit trail on "
352
+ "Syslog, Papertrail etc."
353
  msgstr ""
354
 
355
+ #: classes/Views/Help.php:30 classes/Views/Help.php:44
356
+ msgid "Help"
 
 
357
  msgstr ""
358
 
359
+ #: classes/Views/Help.php:75
360
+ msgid "Getting Started"
361
  msgstr ""
362
 
363
+ #: classes/Views/Help.php:77
364
+ msgid ""
365
+ "Getting started with WP Security Audit Log is really easy; once the plugin "
366
+ "is installed it will automatically keep a log of everything that is "
367
+ "happening on your website and you do not need to do anything. Watch the "
368
+ "video below for a quick overview of the plugin."
369
  msgstr ""
370
 
371
+ #: classes/Views/Help.php:86
372
+ msgid "Plugin Support"
 
 
 
 
 
373
  msgstr ""
374
 
375
+ #: classes/Views/Help.php:88
376
+ msgid ""
377
+ "Have you encountered or noticed any issues while using WP Security Audit Log "
378
+ "plugin?"
379
  msgstr ""
380
 
381
+ #: classes/Views/Help.php:89
 
382
  msgid ""
383
+ "Or you want to report something to us? Click any of the options below to "
384
+ "post on the plugin's forum or contact our support directly."
385
  msgstr ""
386
 
387
+ #: classes/Views/Help.php:91
388
+ msgid "Free Support Forum"
389
  msgstr ""
390
 
391
+ #: classes/Views/Help.php:93
392
+ msgid "Free Support Email"
393
  msgstr ""
394
 
395
+ #: classes/Views/Help.php:99
396
+ msgid "Plugin Documentation"
 
397
  msgstr ""
398
 
399
+ #: classes/Views/Help.php:101
400
+ msgid ""
401
+ "For more technical information about the WP Security Audit Log plugin please "
402
+ "visit the plugin’s knowledge base."
403
  msgstr ""
404
 
405
+ #: classes/Views/Help.php:102
406
  msgid ""
407
+ "Refer to the list of WordPress security alerts for a complete list of Alerts "
408
+ "and IDs that the plugin uses to keep a log of all the changes in the "
409
+ "WordPress audit log."
410
  msgstr ""
411
 
412
+ #: classes/Views/Help.php:104
413
+ msgid "Plugin Website"
 
414
  msgstr ""
415
 
416
+ #: classes/Views/Help.php:106
417
+ msgid "Knowledge Base"
 
 
418
  msgstr ""
419
 
420
+ #: classes/Views/Help.php:108
421
+ msgid "List of WordPress Security Alerts"
422
+ msgstr ""
423
+
424
+ #: classes/Views/Help.php:114
425
+ msgid "Rate WP Security Audit Log"
426
  msgstr ""
427
 
428
+ #: classes/Views/Help.php:116
429
  msgid ""
430
+ "We work really hard to deliver a plugin that enables you to keep a record of "
431
+ "all the changes that are happening on your WordPress."
432
  msgstr ""
433
 
434
+ #: classes/Views/Help.php:117
435
+ msgid ""
436
+ "It takes thousands of man-hours every year and endless amount of dedication "
437
+ "to research, develop and maintain the free edition of WP Security Audit Log."
438
  msgstr ""
439
 
440
+ #: classes/Views/Help.php:118
441
  msgid ""
442
+ "Therefore if you like what you see, and find WP Security Audit Log useful we "
443
+ "ask you nothing more than to please rate our plugin."
444
  msgstr ""
445
 
446
+ #: classes/Views/Help.php:119
447
+ msgid "We appreciate every star!"
448
  msgstr ""
449
 
450
+ #: classes/Views/Help.php:129
451
+ msgid "Rate Plugin"
452
  msgstr ""
453
 
454
+ #: classes/Views/Help.php:148
455
+ msgid "See who is logged in"
 
 
 
456
  msgstr ""
457
 
458
+ #: classes/Views/Help.php:149
459
+ msgid "And remotely terminate sessions"
460
  msgstr ""
461
 
462
+ #: classes/Views/Help.php:152
463
+ msgid "Generate reports"
464
  msgstr ""
465
 
466
+ #: classes/Views/Help.php:153
467
+ msgid "Or configure automated email reports"
 
 
468
  msgstr ""
469
 
470
+ #: classes/Views/Help.php:156
471
+ msgid "Configure email notifications"
 
 
472
  msgstr ""
473
 
474
+ #: classes/Views/Help.php:157
475
+ msgid "Get instantly notified of important changes"
476
  msgstr ""
477
 
478
+ #: classes/Views/Help.php:160
479
+ msgid "Add Search"
480
  msgstr ""
481
 
482
+ #: classes/Views/Help.php:161
483
+ msgid "Easily track down suspicious behaviour"
484
  msgstr ""
485
 
486
+ #: classes/Views/Help.php:164
487
+ msgid "Integrate & Centralise"
 
 
488
  msgstr ""
489
 
490
+ #: classes/Views/Help.php:165
491
+ msgid "Export the logs to your centralised logging system"
 
 
 
492
  msgstr ""
493
 
494
+ #: classes/Views/Licensing.php:28 classes/Views/Licensing.php:42
495
+ msgid "Licensing"
496
  msgstr ""
497
 
498
+ #: classes/Views/Licensing.php:96 classes/Views/Settings.php:218
499
+ #: classes/Views/ToggleAlerts.php:92
500
+ msgid "Settings have been saved."
501
  msgstr ""
502
 
503
+ #: classes/Views/Licensing.php:101 classes/Views/Settings.php:223
504
+ #: classes/Views/ToggleAlerts.php:98
505
+ msgid "Error: "
506
  msgstr ""
507
 
508
+ #: classes/Views/Licensing.php:114 classes/Views/Licensing.php:154
509
+ msgid "License"
510
  msgstr ""
511
 
512
+ #: classes/Views/Licensing.php:129
513
+ msgid "Version"
514
  msgstr ""
515
 
516
+ #: classes/Views/Licensing.php:141
517
+ msgid "Active"
 
 
 
 
518
  msgstr ""
519
 
520
+ #: classes/Views/Licensing.php:143
521
+ msgid "Inactive"
522
  msgstr ""
523
 
524
+ #: classes/Views/LogInUsers.php:28
525
+ msgid "User Sessions Management Add-On"
 
526
  msgstr ""
527
 
528
+ #: classes/Views/LogInUsers.php:42
529
+ msgid "Logged In Users &#8682;"
530
  msgstr ""
531
 
532
+ #: classes/Views/LogInUsers.php:112
533
+ msgid "Users Login and Management"
 
534
  msgstr ""
535
 
536
+ #: classes/Views/LogInUsers.php:118
537
+ msgid "See who is logged in to your WordPress website,"
 
538
  msgstr ""
539
 
540
+ #: classes/Views/LogInUsers.php:119
541
+ msgid "When they logged in and from where,"
542
  msgstr ""
543
 
544
+ #: classes/Views/LogInUsers.php:120
545
+ msgid "The last change they did on your WordPress website,"
546
  msgstr ""
547
 
548
+ #: classes/Views/LogInUsers.php:121
549
+ msgid "Terminate their session with just a click of a button,"
550
  msgstr ""
551
 
552
+ #: classes/Views/LogInUsers.php:122
553
+ msgid "Block multiple sessions for the same user,"
554
  msgstr ""
555
 
556
+ #: classes/Views/LogInUsers.php:123
557
+ msgid "Get alerted when there are multiple sessions with the same username,"
558
  msgstr ""
559
 
560
+ #: classes/Views/LogInUsers.php:169 classes/Views/LogInUsers.php:170
561
+ msgid ""
562
+ "See who is logged in to your WordPress website and WordPress multisite "
563
+ "network."
564
  msgstr ""
565
 
566
+ #: classes/Views/LogInUsers.php:176 classes/Views/LogInUsers.php:177
567
  msgid ""
568
+ "Block multiple sessions for the same user and configure related email "
569
+ "notifications."
570
  msgstr ""
571
 
572
+ #: classes/Views/Reports.php:28
573
  msgid "Reports Add-On"
574
  msgstr ""
575
 
576
+ #: classes/Views/Reports.php:42
577
+ msgid "Reports &#8682;"
578
+ msgstr ""
579
+
580
+ #: classes/Views/Reports.php:112
581
+ msgid "Reports"
582
+ msgstr ""
583
+
584
+ #: classes/Views/Reports.php:118
585
+ msgid ""
586
+ "Generate user activity, site (in multisite) and any other type of WordPress "
587
+ "reports,"
588
+ msgstr ""
589
+
590
+ #: classes/Views/Reports.php:119
591
+ msgid "Configure automated daily, weekly, monthly & quarterly reports,"
592
+ msgstr ""
593
+
594
+ #: classes/Views/Reports.php:120
595
+ msgid "Receive reports automatically in your email,"
596
+ msgstr ""
597
+
598
+ #: classes/Views/Reports.php:121
599
  msgid ""
600
+ "Generate statistics reports on commonly used IP addresses, views per user, "
601
+ "etc,"
 
602
  msgstr ""
603
 
604
+ #: classes/Views/Reports.php:122
605
+ msgid "Export reports to HTML and CSV formats,"
606
+ msgstr ""
607
+
608
+ #: classes/Views/Reports.php:123
609
+ msgid "& much more."
610
+ msgstr ""
611
+
612
+ #: classes/Views/Reports.php:168 classes/Views/Reports.php:169
613
+ msgid ""
614
+ "Generate any type of report and also configure daily, weekly, monthly and "
615
+ "quarterly reports which are automatically sent to you via email."
616
+ msgstr ""
617
+
618
+ #: classes/Views/Reports.php:175 classes/Views/Reports.php:176
619
+ msgid ""
620
+ "Generate statistical reports to get a better overview of what users are "
621
+ "doing on your WordPress and WordPress multisite network are doing."
622
+ msgstr ""
623
+
624
+ #: classes/Views/Search.php:28
625
  msgid "Search Add-On"
626
  msgstr ""
627
 
628
+ #: classes/Views/Search.php:42
629
+ msgid "Search &#8682;"
630
+ msgstr ""
631
+
632
+ #: classes/Views/Search.php:112
633
+ msgid "Search"
634
+ msgstr ""
635
+
636
+ #: classes/Views/Search.php:118
637
+ msgid ""
638
+ "Easily find and track back a specific change or suspicious user behaviour,"
639
+ msgstr ""
640
+
641
+ #: classes/Views/Search.php:119
642
+ msgid "Easily find the root of a problem to ease troubleshooting,"
643
+ msgstr ""
644
+
645
+ #: classes/Views/Search.php:120
646
+ msgid "Do free-text based searches in the WordPress audit log,"
647
+ msgstr ""
648
+
649
+ #: classes/Views/Search.php:121
650
+ msgid "Use filters to fine tune the search results,"
651
+ msgstr ""
652
+
653
+ #: classes/Views/Search.php:122
654
+ msgid "Save search terms & filters for improved productivity,"
655
+ msgstr ""
656
+
657
+ #: classes/Views/Search.php:168 classes/Views/Search.php:169
658
  msgid ""
659
+ "Use the free-text based search to find a specific change and use the filters "
660
+ "to fine tune the search results."
661
  msgstr ""
662
 
663
+ #: classes/Views/Settings.php:57 classes/Views/Settings.php:71
664
  msgid "Settings"
665
  msgstr ""
666
 
667
+ #: classes/Views/Settings.php:229
668
  msgid "General"
669
  msgstr ""
670
 
671
+ #: classes/Views/Settings.php:230
672
  msgid "Audit Log"
673
  msgstr ""
674
 
675
+ #: classes/Views/Settings.php:231
676
  msgid "Exclude Objects"
677
  msgstr ""
678
 
679
+ #: classes/Views/Settings.php:247
680
  msgid "From Email & Name"
681
  msgstr ""
682
 
683
+ #: classes/Views/Settings.php:250
684
  msgid "Email Address"
685
  msgstr ""
686
 
687
+ #: classes/Views/Settings.php:253
688
  msgid "Display Name"
689
  msgstr ""
690
 
691
+ #: classes/Views/Settings.php:259
692
  #, php-format
693
  msgid ""
694
  "These email address and display name will be used as From details in the "
696
  "the domain of the specified email address."
697
  msgstr ""
698
 
699
+ #: classes/Views/Settings.php:260
700
  msgid "(premium add-ons)"
701
  msgstr ""
702
 
703
+ #: classes/Views/Settings.php:268
704
  msgid "Alerts Dashboard Widget"
705
  msgstr ""
706
 
707
+ #: classes/Views/Settings.php:274
708
  msgid "On"
709
  msgstr ""
710
 
711
+ #: classes/Views/Settings.php:279
712
  msgid "Off"
713
  msgstr ""
714
 
715
+ #: classes/Views/Settings.php:285
716
  #, php-format
717
  msgid "Display a dashboard widget with the latest %d security alerts."
718
  msgstr ""
719
 
720
+ #: classes/Views/Settings.php:295
721
  msgid "Reverse Proxy / Firewall Options"
722
  msgstr ""
723
 
724
+ #: classes/Views/Settings.php:300
725
  msgid "WordPress running behind firewall or proxy"
726
  msgstr ""
727
 
728
+ #: classes/Views/Settings.php:303
729
  msgid ""
730
  "Enable this option if your WordPress is running behind a firewall or reverse "
731
  "proxy. When this option is enabled the plugin will retrieve the user's IP "
732
  "address from the proxy header."
733
  msgstr ""
734
 
735
+ #: classes/Views/Settings.php:307
736
  msgid "Filter Internal IP Addresses"
737
  msgstr ""
738
 
739
+ #: classes/Views/Settings.php:310
740
  msgid ""
741
  "Enable this option to filter internal IP addresses from the proxy headers."
742
  msgstr ""
743
 
744
+ #: classes/Views/Settings.php:316
745
  msgid "Can Manage Plugin"
746
  msgstr ""
747
 
748
+ #: classes/Views/Settings.php:323
749
  msgid "Users and Roles in this list can manage the plugin settings"
750
  msgstr ""
751
 
752
+ #: classes/Views/Settings.php:341
753
  msgid "Restrict Plugin Access"
754
  msgstr ""
755
 
756
+ #: classes/Views/Settings.php:351
757
  msgid ""
758
  "If this option is disabled all the administrators on this WordPress have "
759
  "access to manage this plugin."
760
  msgstr ""
761
 
762
+ #: classes/Views/Settings.php:352
763
  msgid ""
764
  "By enabling this option only <strong>You</strong> and the users specified in "
765
  "the <strong>Can Manage Plugin</strong> and <strong>Can View Alerts</strong> "
766
  "can configure this plugin or view the alerts in the WordPress audit trail."
767
  msgstr ""
768
 
769
+ #: classes/Views/Settings.php:359
770
+ msgid "Login Page Notification"
771
  msgstr ""
772
 
773
+ #: classes/Views/Settings.php:383 wp-security-audit-log.php:1122
774
  msgid ""
775
+ "For security and auditing purposes, a record of all of your logged-in "
776
+ "actions and changes within the WordPress dashboard will be recorded in an "
777
+ "audit log with the <a href=\"https://www.wpsecurityauditlog.com/\" target="
778
+ "\"_blank\">WP Security Audit Log plugin</a>. The audit log also includes the "
779
+ "IP address where you accessed this site from."
780
+ msgstr ""
781
+
782
+ #: classes/Views/Settings.php:401
783
+ msgid ""
784
+ "Many compliance regulations (such as the GDRP) require website "
785
+ "administrators to tell the users of this website that a log is kept of all "
786
+ "the changes they do when logged in."
787
  msgstr ""
788
 
789
+ #: classes/Views/Settings.php:403
790
+ msgid "<strong>Note: </strong>"
791
  msgstr ""
792
 
793
+ #: classes/Views/Settings.php:403
794
+ msgid ""
795
+ "The only HTML code allowed in the login page notification is for links ( < a "
796
+ "href >...< /a > )."
797
+ msgstr ""
798
+
799
+ #: classes/Views/Settings.php:410
800
+ msgid "Developer Options"
801
+ msgstr ""
802
+
803
+ #: classes/Views/Settings.php:416
804
+ msgid "Show Developer Options"
805
+ msgstr ""
806
+
807
+ #: classes/Views/Settings.php:420
808
+ msgid ""
809
+ "Only enable these options on testing, staging and development websites. "
810
+ "Enabling any of the settings below on LIVE websites may cause unintended "
811
+ "side-effects including degraded performance."
812
  msgstr ""
813
 
814
+ #: classes/Views/Settings.php:434
815
  msgid "Request Log"
816
  msgstr ""
817
 
818
+ #: classes/Views/Settings.php:435
819
  msgid "Enables logging request to file."
820
  msgstr ""
821
 
822
+ #: classes/Views/Settings.php:459
823
  msgid ""
824
  "The request log file is saved in the /wp-content/uploads/wp-security-audit-"
825
  "log/ directory."
826
  msgstr ""
827
 
828
+ #: classes/Views/Settings.php:467
829
  msgid "Hide Plugin in Plugins Page"
830
  msgstr ""
831
 
832
+ #: classes/Views/Settings.php:472
833
  msgid "Hide"
834
  msgstr ""
835
 
836
+ #: classes/Views/Settings.php:476
837
  msgid ""
838
  "To manually revert this setting set the value of option wsal-hide-plugin to "
839
  "0 in the wp_wsal_options table."
840
  msgstr ""
841
 
842
+ #: classes/Views/Settings.php:483
843
+ msgid "Remove Data on Uninstall"
 
 
 
 
844
  msgstr ""
845
 
846
+ #: classes/Views/Settings.php:490
847
+ msgid ""
848
+ "Check this box if you would like remove all data when the plugin is deleted."
849
  msgstr ""
850
 
851
+ #: classes/Views/Settings.php:509
852
  msgid ""
853
  "The options below are disabled because you enabled archiving of alerts to "
854
  "the archiving table from"
855
  msgstr ""
856
 
857
+ #: classes/Views/Settings.php:514
858
+ msgid "Audit Log Retention"
859
  msgstr ""
860
 
861
+ #: classes/Views/Settings.php:517
862
  msgid "(eg: 1 month)"
863
  msgstr ""
864
 
865
+ #: classes/Views/Settings.php:523
866
  msgid "None"
867
  msgstr ""
868
 
869
+ #: classes/Views/Settings.php:527
870
+ msgid "(Leave empty or enter 0 to disable automatic pruning.)"
871
+ msgstr ""
872
+
873
+ #: classes/Views/Settings.php:533
874
  msgid "Delete alerts older than"
875
  msgstr ""
876
 
877
+ #: classes/Views/Settings.php:542
878
+ msgid "months"
879
+ msgstr ""
880
+
881
+ #: classes/Views/Settings.php:546
882
  msgid "(eg: 80)"
883
  msgstr ""
884
 
885
+ #: classes/Views/Settings.php:552
886
  msgid "Keep up to"
887
  msgstr ""
888
 
889
+ #: classes/Views/Settings.php:557
890
  msgid "alerts"
891
  msgstr ""
892
 
893
+ #: classes/Views/Settings.php:563
894
  msgid "Next Scheduled Cleanup is in "
895
  msgstr ""
896
 
897
+ #: classes/Views/Settings.php:567
898
  #, php-format
899
  msgid "(or %s)"
900
  msgstr ""
901
 
902
+ #: classes/Views/Settings.php:568
903
  msgid "Run Manually"
904
  msgstr ""
905
 
906
+ #: classes/Views/Settings.php:576
907
  msgid "Can View Alerts"
908
  msgstr ""
909
 
910
+ #: classes/Views/Settings.php:583
911
  msgid "Users and Roles in this list can view the security alerts"
912
  msgstr ""
913
 
914
+ #: classes/Views/Settings.php:599
915
  msgid "Refresh Audit Log Viewer"
916
  msgstr ""
917
 
918
+ #: classes/Views/Settings.php:606
919
  msgid "Automatic"
920
  msgstr ""
921
 
922
+ #: classes/Views/Settings.php:608
923
  msgid "Refresh Audit Log Viewer as soon as there are new alerts."
924
  msgstr ""
925
 
926
+ #: classes/Views/Settings.php:613
927
  msgid "Manual"
928
  msgstr ""
929
 
930
+ #: classes/Views/Settings.php:615
931
  msgid "Refresh Audit Log Viewer only when the page is reloaded."
932
  msgstr ""
933
 
934
+ #: classes/Views/Settings.php:622
935
  msgid "Alerts Timestamp"
936
  msgstr ""
937
 
938
+ #: classes/Views/Settings.php:629
939
  msgid "UTC"
940
  msgstr ""
941
 
942
+ #: classes/Views/Settings.php:635
943
  msgid "WordPress' timezone"
944
  msgstr ""
945
 
946
+ #: classes/Views/Settings.php:638
947
  msgid ""
948
  "Select which timestamp the alerts should have in the Audit Log viewer. Note "
949
  "that the WordPress' timezone might be different from that of the server."
950
  msgstr ""
951
 
952
+ #: classes/Views/Settings.php:644
953
  msgid "User Information in Audit Log"
954
  msgstr ""
955
 
956
+ #: classes/Views/Settings.php:655
957
  msgid "First Name & Last Name"
958
  msgstr ""
959
 
960
+ #: classes/Views/Settings.php:658
961
  msgid ""
962
  "Select the type of user information that should be displayed in the audit "
963
  "log."
964
  msgstr ""
965
 
966
+ #: classes/Views/Settings.php:664
967
  msgid "Audit Log Columns Selection"
968
  msgstr ""
969
 
970
+ #: classes/Views/Settings.php:680
971
  msgid ""
972
  "When you disable any of the above such details won’t be shown in the Audit "
973
  "Log viewer though the plugin will still record such information in the "
974
  "database."
975
  msgstr ""
976
 
977
+ #: classes/Views/Settings.php:686
978
  msgid "Disable Alerts for WordPress Background Activity"
979
  msgstr ""
980
 
981
+ #: classes/Views/Settings.php:692
982
  msgid "Hide activity"
983
  msgstr ""
984
 
985
+ #: classes/Views/Settings.php:696
986
  msgid ""
987
  "For example do not raise an alert when WordPress deletes the auto drafts."
988
  msgstr ""
989
 
990
+ #: classes/Views/Settings.php:707
991
  msgid "Users & Roles"
992
  msgstr ""
993
 
994
+ #: classes/Views/Settings.php:710
995
+ msgid ""
996
+ "Any of the users and roles listed in the below options will be excluded from "
997
+ "monitoring. This means that any change they do will not be logged."
998
+ msgstr ""
999
+
1000
+ #: classes/Views/Settings.php:714
1001
  msgid "Excluded Users"
1002
  msgstr ""
1003
 
1004
+ #: classes/Views/Settings.php:734
1005
  msgid "Excluded Roles"
1006
  msgstr ""
1007
 
1008
+ #: classes/Views/Settings.php:753
1009
  msgid "Custom Fields"
1010
  msgstr ""
1011
 
1012
+ #: classes/Views/Settings.php:757
1013
+ msgid ""
1014
+ "All of the custom fields listed below will be excluded from monitoring. This "
1015
+ "means that if they are changed or updated the plugin will not log such "
1016
+ "activity."
1017
+ msgstr ""
1018
+
1019
+ #: classes/Views/Settings.php:758
1020
+ msgid ""
1021
+ "You can use the * wildcard to exclude more than one Custom Field. For "
1022
+ "example, to exclude all the Custom Fields that start with wp123 specify "
1023
+ "wp123*."
1024
+ msgstr ""
1025
+
1026
+ #: classes/Views/Settings.php:763
1027
  msgid "Excluded Custom Fields"
1028
  msgstr ""
1029
 
1030
+ #: classes/Views/Settings.php:782
1031
  msgid "IP Addresses"
1032
  msgstr ""
1033
 
1034
+ #: classes/Views/Settings.php:785
1035
+ msgid ""
1036
+ "Any of the IP addresses listed below will be excluded from monitoring. This "
1037
+ "means that all activity from such IP address will not be recorded."
1038
+ msgstr ""
1039
+
1040
+ #: classes/Views/Settings.php:789
1041
  msgid "Excluded IP Addresses"
1042
  msgstr ""
1043
 
1044
+ #: classes/Views/Settings.php:808 defaults.php:206
1045
  msgid "Custom Post Types"
1046
  msgstr ""
1047
 
1048
+ #: classes/Views/Settings.php:811
1049
  msgid ""
1050
  "The below list of Custom Post Types are excluded from monitoring. This means "
1051
  "that all activity related to these Custom Post Types will not be recorded."
1052
  msgstr ""
1053
 
1054
+ #: classes/Views/Settings.php:814
1055
  msgid "Exclude Custom Post Type from monitoring"
1056
  msgstr ""
1057
 
1058
+ #: classes/Views/ToggleAlerts.php:27 classes/Views/ToggleAlerts.php:41
1059
  msgid "Enable/Disable Alerts"
1060
  msgstr ""
1061
 
1062
+ #: classes/Views/ToggleAlerts.php:175
1063
+ msgid "Code"
1064
+ msgstr ""
1065
+
1066
+ #: classes/Views/ToggleAlerts.php:176
1067
+ msgid "Type"
1068
+ msgstr ""
1069
+
1070
+ #: classes/Views/ToggleAlerts.php:177 classes/WidgetManager.php:68
1071
  msgid "Description"
1072
  msgstr ""
1073
 
1074
+ #: classes/Views/ToggleAlerts.php:186
1075
+ msgid ""
1076
+ "<strong>Note:</strong> Post refers to any type of content, i.e. blog post, "
1077
+ "page or a post with a custom post type."
1078
+ msgstr ""
1079
+
1080
+ #: classes/Views/ToggleAlerts.php:201
1081
  msgid "Not Implemented"
1082
  msgstr ""
1083
 
1084
+ #: classes/Views/ToggleAlerts.php:204
1085
  msgid "Not Available"
1086
  msgstr ""
1087
 
1088
+ #: classes/Views/ToggleAlerts.php:230 classes/Views/ToggleAlerts.php:263
1089
  msgid ""
1090
  "Capture 404 requests to file (the log file are created in the /wp-content/"
1091
  "uploads/wp-security-audit-log/404s/ directory)"
1092
  msgstr ""
1093
 
1094
+ #: classes/Views/ToggleAlerts.php:238 classes/Views/ToggleAlerts.php:271
1095
  msgid "Purge log files older than one month"
1096
  msgstr ""
1097
 
1098
+ #: classes/Views/ToggleAlerts.php:243
1099
+ msgid ""
1100
+ "Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
1101
+ "to non-existing pages from the same IP address. Increase the value in this "
1102
+ "setting to the desired amount to keep a log of more or less requests."
1103
  msgstr ""
1104
 
1105
+ #: classes/Views/ToggleAlerts.php:248 classes/Views/ToggleAlerts.php:281
1106
+ msgid "Record the referrer that generated the 404 error."
 
 
 
1107
  msgstr ""
1108
 
1109
+ #: classes/Views/ToggleAlerts.php:276
1110
  msgid ""
1111
+ "Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
1112
+ "to non-existing pages from the same IP address. Increase the value in this "
1113
+ "setting to the desired amount to keep a log of more or less requests. Note "
1114
+ "that by increasing this value to a high number, should your website be "
1115
  "scanned the plugin will consume more resources to log all the requests."
1116
  msgstr ""
1117
 
1118
+ #: classes/Views/ToggleAlerts.php:293 classes/Views/ToggleAlerts.php:306
1119
+ msgid ""
1120
+ "Number of login attempts to log. Enter 0 to log all failed login attempts. "
1121
+ "(By default the plugin only logs up to 10 failed login because the process "
1122
+ "can be very resource intensive in case of a brute force attack)"
1123
+ msgstr ""
1124
+
1125
+ #: classes/Views/ToggleAlerts.php:321
1126
  msgid "Save Changes"
1127
  msgstr ""
1128
 
1129
+ #: classes/WidgetManager.php:36
1130
  msgid "Latest Alerts"
1131
  msgstr ""
1132
 
1133
+ #: classes/WidgetManager.php:60
1134
  msgid "No alerts found."
1135
  msgstr ""
1136
 
1137
+ #: defaults.php:60
1138
  msgid "Fatal run-time error."
1139
  msgstr ""
1140
 
1141
+ #: defaults.php:64
1142
  msgid "Run-time warning (non-fatal error)."
1143
  msgstr ""
1144
 
1145
+ #: defaults.php:68
1146
  msgid "Compile-time parse error."
1147
  msgstr ""
1148
 
1149
+ #: defaults.php:72
1150
  msgid "Run-time notice."
1151
  msgstr ""
1152
 
1153
+ #: defaults.php:76
1154
  msgid "Fatal error that occurred during startup."
1155
  msgstr ""
1156
 
1157
+ #: defaults.php:80
1158
  msgid "Warnings that occurred during startup."
1159
  msgstr ""
1160
 
1161
+ #: defaults.php:84
1162
  msgid "Fatal compile-time error."
1163
  msgstr ""
1164
 
1165
+ #: defaults.php:88
1166
  msgid "Compile-time warning."
1167
  msgstr ""
1168
 
1169
+ #: defaults.php:92
1170
  msgid "User-generated error message."
1171
  msgstr ""
1172
 
1173
+ #: defaults.php:96
1174
  msgid "User-generated warning message."
1175
  msgstr ""
1176
 
1177
+ #: defaults.php:100
1178
  msgid "User-generated notice message."
1179
  msgstr ""
1180
 
1181
+ #: defaults.php:104
1182
  msgid "Non-standard/optimal code warning."
1183
  msgstr ""
1184
 
1185
+ #: defaults.php:108
1186
  msgid "Catchable fatal error."
1187
  msgstr ""
1188
 
1189
+ #: defaults.php:112
1190
  msgid "Run-time deprecation notices."
1191
  msgstr ""
1192
 
1193
+ #: defaults.php:116
1194
  msgid "Run-time user deprecation notices."
1195
  msgstr ""
1196
 
1197
+ #: defaults.php:121
1198
  msgid "Critical, high-impact messages."
1199
  msgstr ""
1200
 
1201
+ #: defaults.php:125
1202
  msgid "Debug informational messages."
1203
  msgstr ""
1204
 
1205
+ #: defaults.php:135
1206
  msgid "Content & Comments"
1207
  msgstr ""
1208
 
1209
+ #: defaults.php:139
1210
+ msgid "Content"
1211
  msgstr ""
1212
 
1213
+ #: defaults.php:140
1214
+ msgid "User created a new post and saved it as draft"
1215
  msgstr ""
1216
 
1217
+ #: defaults.php:140
1218
  msgid ""
1219
+ "Created a new %PostType% titled %PostTitle% and saved it as draft. "
1220
+ "%EditorLinkPost%."
1221
  msgstr ""
1222
 
1223
+ #: defaults.php:141
1224
+ msgid "User published a post"
1225
  msgstr ""
1226
 
1227
+ #: defaults.php:141
1228
  msgid ""
1229
+ "Published a %PostType% titled %PostTitle%. URL is %PostUrl%. %EditorLinkPost"
1230
+ "%."
1231
  msgstr ""
1232
 
1233
+ #: defaults.php:142
1234
+ msgid "User modified a post"
1235
  msgstr ""
1236
 
1237
+ #: defaults.php:142
1238
  msgid ""
1239
+ "Modified the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
1240
  "%EditorLinkPost%."
1241
  msgstr ""
1242
 
1243
+ #: defaults.php:143
1244
+ msgid "User permanently deleted a post from the trash"
1245
  msgstr ""
1246
 
1247
+ #: defaults.php:143
1248
+ msgid ""
1249
+ "Permanently deleted the %PostType% titled %PostTitle%. URL was %PostUrl%."
 
 
 
 
 
 
 
1250
  msgstr ""
1251
 
1252
+ #: defaults.php:144
1253
+ msgid "User moved a post to the trash"
1254
  msgstr ""
1255
 
1256
+ #: defaults.php:144
1257
+ msgid ""
1258
+ "Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is "
1259
+ "%PostUrl%."
1260
  msgstr ""
1261
 
1262
+ #: defaults.php:145
1263
+ msgid "User restored a post from trash"
1264
  msgstr ""
1265
 
1266
+ #: defaults.php:145
1267
+ msgid ""
1268
+ "The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. "
1269
+ "URL is: %PostUrl%. %EditorLinkPost%."
1270
  msgstr ""
1271
 
1272
+ #: defaults.php:146
1273
+ msgid "User changed post category"
1274
  msgstr ""
1275
 
1276
+ #: defaults.php:146
1277
  msgid ""
1278
+ "Changed the category of the %PostStatus% %PostType% titled %PostTitle% from "
1279
+ "%OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%."
1280
  msgstr ""
1281
 
1282
+ #: defaults.php:147
1283
+ msgid "User changed post URL"
1284
  msgstr ""
1285
 
1286
+ #: defaults.php:147
1287
  msgid ""
1288
+ "Changed the URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText"
1289
+ "%.%ChangeText% %EditorLinkPost%."
1290
  msgstr ""
1291
 
1292
+ #: defaults.php:148
1293
+ msgid "User changed post author"
1294
  msgstr ""
1295
 
1296
+ #: defaults.php:148
1297
  msgid ""
1298
+ "Changed the author of the %PostStatus% %PostType% titled %PostTitle% from "
1299
+ "%OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%."
1300
  msgstr ""
1301
 
1302
+ #: defaults.php:149
1303
+ msgid "User changed post status"
1304
  msgstr ""
1305
 
1306
+ #: defaults.php:149
1307
  msgid ""
1308
+ "Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to "
1309
+ "%NewStatus%. URL is: %PostUrl%. %EditorLinkPost%."
1310
  msgstr ""
1311
 
1312
+ #: defaults.php:150
1313
  msgid "User created new category"
1314
  msgstr ""
1315
 
1316
+ #: defaults.php:150
1317
  msgid ""
1318
+ "Created a new category called %CategoryName%. Category slug is %Slug%. "
1319
  "%CategoryLink%."
1320
  msgstr ""
1321
 
1322
+ #: defaults.php:151
1323
  msgid "User deleted category"
1324
  msgstr ""
1325
 
1326
+ #: defaults.php:151
1327
+ msgid ""
1328
+ "Deleted the %CategoryName% category. Category slug was %Slug%. %CategoryLink"
1329
+ "%."
1330
  msgstr ""
1331
 
1332
+ #: defaults.php:152
1333
+ msgid "User changed the visibility of a post"
1334
  msgstr ""
1335
 
1336
+ #: defaults.php:152
1337
  msgid ""
1338
+ "Changed the visibility of the %PostStatus% %PostType% titled %PostTitle% "
1339
+ "from %OldVisibility% to %NewVisibility%. URL is: %PostUrl%. %EditorLinkPost%."
1340
  msgstr ""
1341
 
1342
+ #: defaults.php:153
1343
+ msgid "User changed the date of a post"
1344
  msgstr ""
1345
 
1346
+ #: defaults.php:153
1347
  msgid ""
1348
+ "Changed the date of the %PostStatus% %PostType% titled %PostTitle% from "
1349
+ "%OldDate% to %NewDate%. URL is: %PostUrl%. %EditorLinkPost%."
1350
  msgstr ""
1351
 
1352
+ #: defaults.php:154
1353
+ msgid "User changed the parent of a page"
1354
+ msgstr ""
1355
+
1356
+ #: defaults.php:154
1357
+ msgid ""
1358
+ "Changed the parent of the %PostStatus% %PostType% titled %PostTitle% from "
1359
+ "%OldParentName% to %NewParentName%. %EditorLinkPost%."
1360
+ msgstr ""
1361
+
1362
+ #: defaults.php:155
1363
+ msgid "User changed the template of a page"
1364
+ msgstr ""
1365
+
1366
+ #: defaults.php:155
1367
+ msgid ""
1368
+ "Changed the template of the %PostStatus% %PostType% titled %PostTitle% from "
1369
+ "%OldTemplate% to %NewTemplate%. %EditorLinkPost%."
1370
+ msgstr ""
1371
+
1372
+ #: defaults.php:156
1373
  msgid "User set a post as sticky"
1374
  msgstr ""
1375
 
1376
+ #: defaults.php:156
1377
  msgid ""
1378
  "Set the post %PostTitle% as Sticky. Post URL is %PostUrl%. %EditorLinkPost%."
1379
  msgstr ""
1380
 
1381
+ #: defaults.php:157
1382
  msgid "User removed post from sticky"
1383
  msgstr ""
1384
 
1385
+ #: defaults.php:157
1386
  msgid "Removed the post %PostTitle% from Sticky. %EditorLinkPost%."
1387
  msgstr ""
1388
 
1389
+ #: defaults.php:158
1390
+ msgid "Changed the parent of a category."
1391
  msgstr ""
1392
 
1393
+ #: defaults.php:158
1394
  msgid ""
1395
  "Changed the parent of the category %CategoryName% from %OldParent% to "
1396
  "%NewParent%. %CategoryLink%."
1397
  msgstr ""
1398
 
1399
+ #: defaults.php:159
1400
  msgid "User created a custom field for a post"
1401
  msgstr ""
1402
 
1403
+ #: defaults.php:159
1404
  msgid ""
1405
+ "Created a new custom field called %MetaKey% with value %MetaValue% in the "
1406
+ "%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
1407
+ "%EditorLinkPost%.<br>%MetaLink%."
1408
  msgstr ""
1409
 
1410
+ #: defaults.php:160
1411
  msgid "User updated a custom field value for a post"
1412
  msgstr ""
1413
 
1414
+ #: defaults.php:160
1415
  msgid ""
1416
+ "Modified the value of the custom field %MetaKey%%ReportText% in the "
1417
+ "%PostStatus% %PostType% titled %PostTitle%.%ChangeText% URL is: %PostUrl%. "
1418
+ "%EditorLinkPost%.<br>%MetaLink%."
1419
  msgstr ""
1420
 
1421
+ #: defaults.php:161
1422
  msgid "User deleted a custom field from a post"
1423
  msgstr ""
1424
 
1425
+ #: defaults.php:161
1426
  msgid ""
1427
+ "Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% "
1428
+ "%PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%."
1429
  msgstr ""
1430
 
1431
+ #: defaults.php:162
1432
  msgid "User updated a custom field name for a post"
1433
  msgstr ""
1434
 
1435
+ #: defaults.php:162
1436
  msgid ""
1437
+ "Changed the custom field's name from %MetaKeyOld% to %MetaKeyNew% in the "
1438
+ "%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
1439
+ "%EditorLinkPost%.<br>%MetaLink%."
1440
  msgstr ""
1441
 
1442
+ #: defaults.php:163
1443
+ msgid "User modified the content of a post."
1444
  msgstr ""
1445
 
1446
+ #: defaults.php:163
1447
  msgid ""
1448
+ "Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post "
1449
+ "URL is %PostUrl%. %RevisionLink% %EditorLinkPost%."
1450
  msgstr ""
1451
 
1452
+ #: defaults.php:164
1453
+ msgid "User submitted a post for review"
1454
  msgstr ""
1455
 
1456
+ #: defaults.php:164
1457
  msgid ""
1458
+ "Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. "
1459
  "%EditorLinkPost%."
1460
  msgstr ""
1461
 
1462
+ #: defaults.php:165
1463
+ msgid "User scheduled a post"
1464
  msgstr ""
1465
 
1466
+ #: defaults.php:165
1467
  msgid ""
1468
+ "Scheduled the %PostType% titled %PostTitle% to be published on "
1469
+ "%PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%."
1470
  msgstr ""
1471
 
1472
+ #: defaults.php:166
1473
+ msgid "User changed title of a post"
1474
  msgstr ""
1475
 
1476
+ #: defaults.php:166
1477
+ msgid ""
1478
+ "Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle"
1479
+ "%. URL is: %PostUrl%. %EditorLinkPost%."
1480
  msgstr ""
1481
 
1482
+ #: defaults.php:167
1483
+ msgid "User opened a post in the editor"
1484
  msgstr ""
1485
 
1486
+ #: defaults.php:167
1487
+ msgid ""
1488
+ "Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: "
1489
+ "%PostUrl%. %EditorLinkPost%."
1490
+ msgstr ""
1491
+
1492
+ #: defaults.php:168
1493
+ msgid "User viewed a post"
1494
+ msgstr ""
1495
+
1496
+ #: defaults.php:168
1497
  msgid ""
1498
+ "Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
1499
  "%EditorLinkPost%."
1500
  msgstr ""
1501
 
1502
+ #: defaults.php:169
1503
+ msgid "A plugin modified a post"
1504
  msgstr ""
1505
 
1506
+ #: defaults.php:169
1507
  msgid ""
1508
+ "Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type "
1509
+ "%PostType%. URL is: %PostUrl%. %EditorLinkPost%."
1510
  msgstr ""
1511
 
1512
+ #: defaults.php:170
1513
+ msgid "User disabled Comments/Trackbacks and Pingbacks in a post."
1514
  msgstr ""
1515
 
1516
+ #: defaults.php:170
1517
  msgid ""
1518
+ "Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
1519
+ "%PostUrl%. %EditorLinkPost%."
1520
  msgstr ""
1521
 
1522
+ #: defaults.php:171
1523
+ msgid "User enabled Comments/Trackbacks and Pingbacks in a post."
1524
  msgstr ""
1525
 
1526
+ #: defaults.php:171
1527
+ msgid ""
1528
+ "Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
1529
+ "%PostUrl%. %EditorLinkPost%."
1530
  msgstr ""
1531
 
1532
+ #: defaults.php:172
1533
+ msgid "User added post tag"
1534
  msgstr ""
1535
 
1536
+ #: defaults.php:172
1537
  msgid ""
1538
+ "Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: "
1539
+ "%PostUrl%. %EditorLinkPost%."
1540
  msgstr ""
1541
 
1542
+ #: defaults.php:173
1543
+ msgid "User removed post tag"
1544
  msgstr ""
1545
 
1546
+ #: defaults.php:173
1547
  msgid ""
1548
+ "Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: "
1549
+ "%PostUrl%. %EditorLinkPost%."
1550
  msgstr ""
1551
 
1552
+ #: defaults.php:174
1553
+ msgid "User created new tag"
1554
+ msgstr ""
1555
+
1556
+ #: defaults.php:174
1557
+ msgid "Added a new tag called %TagName%. View the tag: %TagLink%."
1558
+ msgstr ""
1559
+
1560
+ #: defaults.php:175
1561
+ msgid "User deleted tag"
1562
+ msgstr ""
1563
+
1564
+ #: defaults.php:175
1565
+ msgid "Deleted the tag %TagName%."
1566
  msgstr ""
1567
 
1568
+ #: defaults.php:176
1569
+ msgid "User renamed tag"
1570
+ msgstr ""
1571
+
1572
+ #: defaults.php:176
1573
+ msgid "Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%."
1574
+ msgstr ""
1575
+
1576
+ #: defaults.php:177
1577
+ msgid "User changed tag slug"
1578
+ msgstr ""
1579
+
1580
+ #: defaults.php:177
1581
  msgid ""
1582
+ "Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: "
1583
+ "%TagLink%."
1584
  msgstr ""
1585
 
1586
+ #: defaults.php:178
1587
+ msgid "User changed tag description"
1588
  msgstr ""
1589
 
1590
+ #: defaults.php:178
1591
+ msgid ""
1592
+ "Changed the description of the tag %tag%%ReportText%.%ChangeText% View the "
1593
+ "tag: %TagLink%."
1594
  msgstr ""
1595
 
1596
+ #: defaults.php:184
1597
  msgid "Comments"
1598
  msgstr ""
1599
 
1600
+ #: defaults.php:185
1601
  msgid "User approved a comment"
1602
  msgstr ""
1603
 
1604
+ #: defaults.php:185
1605
  msgid ""
1606
  "Approved the comment posted in response to the post %PostTitle% by %Author% "
1607
  "on %CommentLink%."
1608
  msgstr ""
1609
 
1610
+ #: defaults.php:186
1611
  msgid "User unapproved a comment"
1612
  msgstr ""
1613
 
1614
+ #: defaults.php:186
1615
  msgid ""
1616
  "Unapproved the comment posted in response to the post %PostTitle% by %Author"
1617
  "% on %CommentLink%."
1618
  msgstr ""
1619
 
1620
+ #: defaults.php:187
1621
  msgid "User replied to a comment"
1622
  msgstr ""
1623
 
1624
+ #: defaults.php:187
1625
  msgid ""
1626
  "Replied to the comment posted in response to the post %PostTitle% by %Author"
1627
  "% on %CommentLink%."
1628
  msgstr ""
1629
 
1630
+ #: defaults.php:188
1631
  msgid "User edited a comment"
1632
  msgstr ""
1633
 
1634
+ #: defaults.php:188
1635
  msgid ""
1636
  "Edited a comment posted in response to the post %PostTitle% by %Author% on "
1637
  "%CommentLink%."
1638
  msgstr ""
1639
 
1640
+ #: defaults.php:189
1641
  msgid "User marked a comment as Spam"
1642
  msgstr ""
1643
 
1644
+ #: defaults.php:189
1645
  msgid ""
1646
  "Marked the comment posted in response to the post %PostTitle% by %Author% on "
1647
  "%CommentLink% as Spam."
1648
  msgstr ""
1649
 
1650
+ #: defaults.php:190
1651
  msgid "User marked a comment as Not Spam"
1652
  msgstr ""
1653
 
1654
+ #: defaults.php:190
1655
  msgid ""
1656
  "Marked the comment posted in response to the post %PostTitle% by %Author% on "
1657
  "%CommentLink% as Not Spam."
1658
  msgstr ""
1659
 
1660
+ #: defaults.php:191
1661
  msgid "User moved a comment to trash"
1662
  msgstr ""
1663
 
1664
+ #: defaults.php:191
1665
  msgid ""
1666
  "Moved the comment posted in response to the post %PostTitle% by %Author% on "
1667
  "%Date% to trash."
1668
  msgstr ""
1669
 
1670
+ #: defaults.php:192
1671
  msgid "User restored a comment from the trash"
1672
  msgstr ""
1673
 
1674
+ #: defaults.php:192
1675
  msgid ""
1676
  "Restored the comment posted in response to the post %PostTitle% by %Author% "
1677
  "on %CommentLink% from the trash."
1678
  msgstr ""
1679
 
1680
+ #: defaults.php:193
1681
  msgid "User permanently deleted a comment"
1682
  msgstr ""
1683
 
1684
+ #: defaults.php:193
1685
  msgid ""
1686
  "Permanently deleted the comment posted in response to the post %PostTitle% "
1687
  "by %Author% on %Date%."
1688
  msgstr ""
1689
 
1690
+ #: defaults.php:194
1691
  msgid "User posted a comment"
1692
  msgstr ""
1693
 
1694
+ #: defaults.php:194 defaults.php:195
1695
  msgid "%CommentMsg% on %CommentLink%."
1696
  msgstr ""
1697
 
1698
+ #: defaults.php:195
1699
+ msgid "Visitor posted a comment"
1700
+ msgstr ""
1701
+
1702
+ #: defaults.php:207
1703
+ msgid "User modified a draft blog post"
1704
+ msgstr ""
1705
+
1706
+ #: defaults.php:207
1707
+ msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
1708
+ msgstr ""
1709
+
1710
+ #: defaults.php:208
1711
  msgid "User created a new post with custom post type and saved it as draft"
1712
  msgstr ""
1713
 
1714
+ #: defaults.php:208
1715
  msgid ""
1716
  "Created a new custom post called %PostTitle% of type %PostType%. "
1717
  "%EditorLinkPost%."
1718
  msgstr ""
1719
 
1720
+ #: defaults.php:209
1721
  msgid "User published a post with custom post type"
1722
  msgstr ""
1723
 
1724
+ #: defaults.php:209
1725
  msgid ""
1726
  "Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
1727
  "%. %EditorLinkPost%."
1728
  msgstr ""
1729
 
1730
+ #: defaults.php:210
1731
  msgid "User modified a post with custom post type"
1732
  msgstr ""
1733
 
1734
+ #: defaults.php:210
1735
  msgid ""
1736
  "Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
1737
  "%. %EditorLinkPost%."
1738
  msgstr ""
1739
 
1740
+ #: defaults.php:211
1741
  msgid "User modified a draft post with custom post type"
1742
  msgstr ""
1743
 
1744
+ #: defaults.php:211
1745
  msgid ""
1746
  "Modified the draft custom post %PostTitle% of type is %PostType%. "
1747
  "%EditorLinkPost%."
1748
  msgstr ""
1749
 
1750
+ #: defaults.php:212
1751
  msgid "User permanently deleted post with custom post type"
1752
  msgstr ""
1753
 
1754
+ #: defaults.php:212
1755
  msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
1756
  msgstr ""
1757
 
1758
+ #: defaults.php:213
1759
  msgid "User moved post with custom post type to trash"
1760
  msgstr ""
1761
 
1762
+ #: defaults.php:213
1763
  msgid ""
1764
  "Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was "
1765
  "%PostUrl%."
1766
  msgstr ""
1767
 
1768
+ #: defaults.php:214
1769
  msgid "User restored post with custom post type from trash"
1770
  msgstr ""
1771
 
1772
+ #: defaults.php:214
1773
  msgid ""
1774
  "The custom post %PostTitle% of type %PostType% has been restored from trash. "
1775
  "%EditorLinkPost%."
1776
  msgstr ""
1777
 
1778
+ #: defaults.php:215
1779
  msgid "User changed the category of a post with custom post type"
1780
  msgstr ""
1781
 
1782
+ #: defaults.php:215
1783
  msgid ""
1784
  "Changed the category(ies) of the custom post %PostTitle% of type %PostType% "
1785
  "from %OldCategories% to %NewCategories%. %EditorLinkPost%."
1786
  msgstr ""
1787
 
1788
+ #: defaults.php:216
1789
  msgid "User changed the URL of a post with custom post type"
1790
  msgstr ""
1791
 
1792
+ #: defaults.php:216
1793
  msgid ""
1794
  "Changed the URL of the custom post %PostTitle% of type %PostType% from "
1795
  "%OldUrl% to %NewUrl%. %EditorLinkPost%."
1796
  msgstr ""
1797
 
1798
+ #: defaults.php:217
1799
  msgid "User changed the author or post with custom post type"
1800
  msgstr ""
1801
 
1802
+ #: defaults.php:217
1803
  msgid ""
1804
  "Changed the author of custom post %PostTitle% of type %PostType% from "
1805
  "%OldAuthor% to %NewAuthor%. %EditorLinkPost%."
1806
  msgstr ""
1807
 
1808
+ #: defaults.php:218
1809
  msgid "User changed the status of post with custom post type"
1810
  msgstr ""
1811
 
1812
+ #: defaults.php:218
1813
  msgid ""
1814
  "Changed the status of custom post %PostTitle% of type %PostType% from "
1815
  "%OldStatus% to %NewStatus%. %EditorLinkPost%."
1816
  msgstr ""
1817
 
1818
+ #: defaults.php:219
1819
  msgid "User changed the visibility of a post with custom post type"
1820
  msgstr ""
1821
 
1822
+ #: defaults.php:219
1823
  msgid ""
1824
  "Changed the visibility of the custom post %PostTitle% of type %PostType% "
1825
  "from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
1826
  msgstr ""
1827
 
1828
+ #: defaults.php:220
1829
  msgid "User changed the date of post with custom post type"
1830
  msgstr ""
1831
 
1832
+ #: defaults.php:220
1833
  msgid ""
1834
  "Changed the date of the custom post %PostTitle% of type %PostType% from "
1835
  "%OldDate% to %NewDate%. %EditorLinkPost%."
1836
  msgstr ""
1837
 
1838
+ #: defaults.php:221
1839
  msgid "User created a custom field for a custom post type"
1840
  msgstr ""
1841
 
1842
+ #: defaults.php:221
1843
  msgid ""
1844
  "Created a new custom field %MetaKey% with value %MetaValue% in custom post "
1845
  "%PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
1846
  msgstr ""
1847
 
1848
+ #: defaults.php:222
1849
  msgid "User updated a custom field for a custom post type"
1850
  msgstr ""
1851
 
1852
+ #: defaults.php:222
1853
  msgid ""
1854
  "Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
1855
  "%MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost"
1856
  "%.<br>%MetaLink%."
1857
  msgstr ""
1858
 
1859
+ #: defaults.php:223
1860
  msgid "User deleted a custom field from a custom post type"
1861
  msgstr ""
1862
 
1863
+ #: defaults.php:223
1864
  msgid ""
1865
  "Deleted the custom field %MetaKey% with id %MetaID% from custom post "
1866
  "%PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1867
  msgstr ""
1868
 
1869
+ #: defaults.php:224
1870
  msgid "User updated a custom field name for a custom post type"
1871
  msgstr ""
1872
 
1873
+ #: defaults.php:224
1874
  msgid ""
1875
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
1876
  "post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
1877
  msgstr ""
1878
 
1879
+ #: defaults.php:225
1880
  msgid "User modified content for a published custom post type"
1881
  msgstr ""
1882
 
1883
+ #: defaults.php:225
1884
  msgid ""
1885
  "Modified the content of the published custom post type %PostTitle%. Post URL "
1886
  "is %PostUrl%.%EditorLinkPost%."
1887
  msgstr ""
1888
 
1889
+ #: defaults.php:226
1890
+ msgid "User modified content for a draft post"
1891
+ msgstr ""
1892
+
1893
+ #: defaults.php:226
1894
+ msgid ""
1895
+ "Modified the content of the draft post %PostTitle%.%RevisionLink% "
1896
+ "%EditorLinkPost%."
1897
+ msgstr ""
1898
+
1899
+ #: defaults.php:227
1900
  msgid "User modified content for a draft custom post type"
1901
  msgstr ""
1902
 
1903
+ #: defaults.php:227
1904
  msgid ""
1905
  "Modified the content of the draft custom post type %PostTitle%."
1906
  "%EditorLinkPost%."
1907
  msgstr ""
1908
 
1909
+ #: defaults.php:228
1910
+ msgid "User modified content of a post"
1911
+ msgstr ""
1912
+
1913
+ #: defaults.php:228
1914
+ msgid ""
1915
+ "Modified the content of post %PostTitle% which is submitted for review."
1916
+ "%RevisionLink% %EditorLinkPost%."
1917
+ msgstr ""
1918
+
1919
+ #: defaults.php:229
1920
  msgid "User scheduled a custom post type"
1921
  msgstr ""
1922
 
1923
+ #: defaults.php:229
1924
  msgid ""
1925
  "Scheduled the custom post type %PostTitle% to be published %PublishingDate%. "
1926
  "%EditorLinkPost%."
1927
  msgstr ""
1928
 
1929
+ #: defaults.php:230
1930
  msgid "User changed title of a custom post type"
1931
  msgstr ""
1932
 
1933
+ #: defaults.php:230
1934
  msgid ""
1935
  "Changed the title of the custom post %OldTitle% to %NewTitle%. "
1936
  "%EditorLinkPost%."
1937
  msgstr ""
1938
 
1939
+ #: defaults.php:231
1940
  msgid "User opened a custom post type in the editor"
1941
  msgstr ""
1942
 
1943
+ #: defaults.php:231
1944
  msgid ""
1945
  "Opened the custom post %PostTitle% of type %PostType% in the editor. View "
1946
  "the post: %EditorLinkPost%."
1947
  msgstr ""
1948
 
1949
+ #: defaults.php:232
1950
  msgid "User viewed a custom post type"
1951
  msgstr ""
1952
 
1953
+ #: defaults.php:232
1954
  msgid ""
1955
  "Viewed the custom post %PostTitle% of type %PostType%. View the post: "
1956
  "%PostUrl%."
1957
  msgstr ""
1958
 
1959
+ #: defaults.php:243
1960
  msgid "Pages"
1961
  msgstr ""
1962
 
1963
+ #: defaults.php:244
1964
  msgid "User created a new WordPress page and saved it as draft"
1965
  msgstr ""
1966
 
1967
+ #: defaults.php:244
1968
  msgid ""
1969
  "Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage"
1970
  "%."
1971
  msgstr ""
1972
 
1973
+ #: defaults.php:245
1974
  msgid "User published a WordPress page"
1975
  msgstr ""
1976
 
1977
+ #: defaults.php:245
1978
  msgid ""
1979
  "Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
1980
  msgstr ""
1981
 
1982
+ #: defaults.php:246
1983
  msgid "User modified a published WordPress page"
1984
  msgstr ""
1985
 
1986
+ #: defaults.php:246
1987
  msgid ""
1988
  "Modified the published page %PostTitle%. Page URL is %PostUrl%. "
1989
  "%EditorLinkPage%."
1990
  msgstr ""
1991
 
1992
+ #: defaults.php:247
1993
  msgid "User modified a draft WordPress page"
1994
  msgstr ""
1995
 
1996
+ #: defaults.php:247
1997
  msgid ""
1998
  "Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
1999
  msgstr ""
2000
 
2001
+ #: defaults.php:248
2002
  msgid "User permanently deleted a page from the trash"
2003
  msgstr ""
2004
 
2005
+ #: defaults.php:248
2006
  msgid "Permanently deleted the page %PostTitle%."
2007
  msgstr ""
2008
 
2009
+ #: defaults.php:249
2010
  msgid "User moved WordPress page to the trash"
2011
  msgstr ""
2012
 
2013
+ #: defaults.php:249
2014
  msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
2015
  msgstr ""
2016
 
2017
+ #: defaults.php:250
2018
  msgid "User restored a WordPress page from trash"
2019
  msgstr ""
2020
 
2021
+ #: defaults.php:250
2022
  msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
2023
  msgstr ""
2024
 
2025
+ #: defaults.php:251
2026
  msgid "User changed page URL"
2027
  msgstr ""
2028
 
2029
+ #: defaults.php:251
2030
  msgid ""
2031
  "Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. "
2032
  "%EditorLinkPage%."
2033
  msgstr ""
2034
 
2035
+ #: defaults.php:252
2036
  msgid "User changed page author"
2037
  msgstr ""
2038
 
2039
+ #: defaults.php:252
2040
  msgid ""
2041
  "Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. "
2042
  "%EditorLinkPage%."
2043
  msgstr ""
2044
 
2045
+ #: defaults.php:253
2046
  msgid "User changed page status"
2047
  msgstr ""
2048
 
2049
+ #: defaults.php:253
2050
  msgid ""
2051
  "Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. "
2052
  "%EditorLinkPage%."
2053
  msgstr ""
2054
 
2055
+ #: defaults.php:254
2056
  msgid "User changed the visibility of a page post"
2057
  msgstr ""
2058
 
2059
+ #: defaults.php:254
2060
  msgid ""
2061
  "Changed the visibility of the page %PostTitle% from %OldVisibility% to "
2062
  "%NewVisibility%. %EditorLinkPage%."
2063
  msgstr ""
2064
 
2065
+ #: defaults.php:255
2066
  msgid "User changed the date of a page post"
2067
  msgstr ""
2068
 
2069
+ #: defaults.php:255
2070
  msgid ""
2071
  "Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. "
2072
  "%EditorLinkPage%."
2073
  msgstr ""
2074
 
2075
+ #: defaults.php:256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2076
  msgid "User created a custom field for a page"
2077
  msgstr ""
2078
 
2079
+ #: defaults.php:256
2080
  msgid ""
2081
  "Created a new custom field called %MetaKey% with value %MetaValue% in the "
2082
  "page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
2083
  msgstr ""
2084
 
2085
+ #: defaults.php:257
2086
  msgid "User updated a custom field value for a page"
2087
  msgstr ""
2088
 
2089
+ #: defaults.php:257
2090
  msgid ""
2091
  "Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
2092
  "%MetaValueNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
2093
  msgstr ""
2094
 
2095
+ #: defaults.php:258
2096
  msgid "User deleted a custom field from a page"
2097
  msgstr ""
2098
 
2099
+ #: defaults.php:258
2100
  msgid ""
2101
  "Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% "
2102
  "%EditorLinkPage%.<br>%MetaLink%."
2103
  msgstr ""
2104
 
2105
+ #: defaults.php:259
2106
  msgid "User updated a custom field name for a page"
2107
  msgstr ""
2108
 
2109
+ #: defaults.php:259
2110
  msgid ""
2111
  "Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page "
2112
  "%PostTitle% %EditorLinkPage%.<br>%MetaLink%."
2113
  msgstr ""
2114
 
2115
+ #: defaults.php:260
2116
  msgid "User modified content for a published page"
2117
  msgstr ""
2118
 
2119
+ #: defaults.php:260
2120
  msgid ""
2121
  "Modified the content of the published page %PostTitle%. Page URL is %PostUrl"
2122
+ "%. %RevisionLink% %EditorLinkPage%."
2123
  msgstr ""
2124
 
2125
+ #: defaults.php:261
2126
  msgid "User modified content for a draft page"
2127
  msgstr ""
2128
 
2129
+ #: defaults.php:261
2130
  msgid ""
2131
  "Modified the content of draft page %PostTitle%.%RevisionLink% %EditorLinkPage"
2132
  "%."
2133
  msgstr ""
2134
 
2135
+ #: defaults.php:262
2136
  msgid "User scheduled a page"
2137
  msgstr ""
2138
 
2139
+ #: defaults.php:262
2140
  msgid ""
2141
  "Scheduled the page %PostTitle% to be published %PublishingDate%. "
2142
  "%EditorLinkPage%."
2143
  msgstr ""
2144
 
2145
+ #: defaults.php:263
2146
  msgid "User changed title of a page"
2147
  msgstr ""
2148
 
2149
+ #: defaults.php:263
2150
  msgid ""
2151
  "Changed the title of the page %OldTitle% to %NewTitle%. %EditorLinkPage%."
2152
  msgstr ""
2153
 
2154
+ #: defaults.php:264
2155
  msgid "User opened a page in the editor"
2156
  msgstr ""
2157
 
2158
+ #: defaults.php:264
2159
  msgid ""
2160
  "Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
2161
  msgstr ""
2162
 
2163
+ #: defaults.php:265
2164
  msgid "User viewed a page"
2165
  msgstr ""
2166
 
2167
+ #: defaults.php:265
2168
  msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
2169
  msgstr ""
2170
 
2171
+ #: defaults.php:266
2172
+ msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
2173
+ msgstr ""
2174
+
2175
+ #: defaults.php:266
2176
+ msgid ""
2177
+ "Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
2178
+ msgstr ""
2179
+
2180
+ #: defaults.php:267
2181
+ msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
2182
+ msgstr ""
2183
+
2184
+ #: defaults.php:267
2185
+ msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
2186
+ msgstr ""
2187
+
2188
+ #: defaults.php:268
2189
  msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
2190
  msgstr ""
2191
 
2192
+ #: defaults.php:268
2193
  msgid ""
2194
  "Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
2195
  msgstr ""
2196
 
2197
+ #: defaults.php:269
2198
  msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
2199
  msgstr ""
2200
 
2201
+ #: defaults.php:269
2202
  msgid ""
2203
  "Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
2204
  msgstr ""
2205
 
2206
+ #: defaults.php:270
2207
  msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
2208
  msgstr ""
2209
 
2210
+ #: defaults.php:270
2211
  msgid ""
2212
  "Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
2213
  msgstr ""
2214
 
2215
+ #: defaults.php:271
2216
  msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
2217
  msgstr ""
2218
 
2219
+ #: defaults.php:271
2220
  msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
2221
  msgstr ""
2222
 
2223
+ #: defaults.php:278
2224
  msgid "WordPress & Multisite Management"
2225
  msgstr ""
2226
 
2227
+ #: defaults.php:282
2228
  msgid "Database"
2229
  msgstr ""
2230
 
2231
+ #: defaults.php:283
2232
  msgid "Plugin created tables"
2233
  msgstr ""
2234
 
2235
+ #: defaults.php:283
2236
  msgid ""
2237
  "Plugin %Plugin->Name% created these tables in the database: %TableNames%."
2238
  msgstr ""
2239
 
2240
+ #: defaults.php:284
2241
  msgid "Plugin modified tables structure"
2242
  msgstr ""
2243
 
2244
+ #: defaults.php:284
2245
  msgid ""
2246
  "Plugin %Plugin->Name% modified the structure of these database tables: "
2247
  "%TableNames%."
2248
  msgstr ""
2249
 
2250
+ #: defaults.php:285
2251
  msgid "Plugin deleted tables"
2252
  msgstr ""
2253
 
2254
+ #: defaults.php:285
2255
  msgid ""
2256
  "Plugin %Plugin->Name% deleted the following tables from the database: "
2257
  "%TableNames%."
2258
  msgstr ""
2259
 
2260
+ #: defaults.php:286
2261
  msgid "Theme created tables"
2262
  msgstr ""
2263
 
2264
+ #: defaults.php:286
2265
  msgid "Theme %Theme->Name% created these tables in the database: %TableNames%."
2266
  msgstr ""
2267
 
2268
+ #: defaults.php:287
2269
  msgid "Theme modified tables structure"
2270
  msgstr ""
2271
 
2272
+ #: defaults.php:287
2273
  msgid ""
2274
  "Theme %Theme->Name% modified the structure of these database tables: "
2275
  "%TableNames%."
2276
  msgstr ""
2277
 
2278
+ #: defaults.php:288
2279
  msgid "Theme deleted tables"
2280
  msgstr ""
2281
 
2282
+ #: defaults.php:288
2283
  msgid ""
2284
  "Theme %Theme->Name% deleted the following tables from the database: "
2285
  "%TableNames%."
2286
  msgstr ""
2287
 
2288
+ #: defaults.php:289
2289
  msgid "Unknown component created tables"
2290
  msgstr ""
2291
 
2292
+ #: defaults.php:289
2293
  msgid ""
2294
  "An unknown component created these tables in the database: %TableNames%."
2295
  msgstr ""
2296
 
2297
+ #: defaults.php:290
2298
  msgid "Unknown component modified tables structure"
2299
  msgstr ""
2300
 
2301
+ #: defaults.php:290
2302
  msgid ""
2303
  "An unknown component modified the structure of these database tables: "
2304
  "%TableNames%."
2305
  msgstr ""
2306
 
2307
+ #: defaults.php:291
2308
  msgid "Unknown component deleted tables"
2309
  msgstr ""
2310
 
2311
+ #: defaults.php:291
2312
  msgid ""
2313
  "An unknown component deleted the following tables from the database: "
2314
  "%TableNames%."
2315
  msgstr ""
2316
 
2317
+ #: defaults.php:297
2318
  msgid "MultiSite"
2319
  msgstr ""
2320
 
2321
+ #: defaults.php:298
2322
  msgid "User granted Super Admin privileges"
2323
  msgstr ""
2324
 
2325
+ #: defaults.php:298
2326
  msgid "Granted Super Admin privileges to %TargetUsername%."
2327
  msgstr ""
2328
 
2329
+ #: defaults.php:299
2330
  msgid "User revoked from Super Admin privileges"
2331
  msgstr ""
2332
 
2333
+ #: defaults.php:299
2334
  msgid "Revoked Super Admin privileges from %TargetUsername%."
2335
  msgstr ""
2336
 
2337
+ #: defaults.php:300
2338
  msgid "Existing user added to a site"
2339
  msgstr ""
2340
 
2341
+ #: defaults.php:300
2342
  msgid ""
2343
  "Added the existing user %TargetUsername% with %TargetUserRole% role to site "
2344
  "%SiteName%."
2345
  msgstr ""
2346
 
2347
+ #: defaults.php:301
2348
  msgid "User removed from site"
2349
  msgstr ""
2350
 
2351
+ #: defaults.php:301
2352
  msgid ""
2353
  "Removed the user %TargetUsername% with role %TargetUserRole% from %SiteName% "
2354
  "site."
2355
  msgstr ""
2356
 
2357
+ #: defaults.php:302
2358
  msgid "New network user created"
2359
  msgstr ""
2360
 
2361
+ #: defaults.php:302
2362
  msgid "Created a new network user %NewUserData->Username%."
2363
  msgstr ""
2364
 
2365
+ #: defaults.php:303
2366
  msgid "The forum role of a user was changed by another WordPress user"
2367
  msgstr ""
2368
 
2369
+ #: defaults.php:303
2370
  msgid ""
2371
  "Change the forum role of the user %TargetUsername% from %OldRole% to %NewRole"
2372
  "% by %UserChanger%."
2373
  msgstr ""
2374
 
2375
+ #: defaults.php:304
2376
  msgid "New site added on the network"
2377
  msgstr ""
2378
 
2379
+ #: defaults.php:304
2380
  msgid "Added the site %SiteName% to the network."
2381
  msgstr ""
2382
 
2383
+ #: defaults.php:305
2384
  msgid "Existing site archived"
2385
  msgstr ""
2386
 
2387
+ #: defaults.php:305
2388
  msgid "Archived the site %SiteName%."
2389
  msgstr ""
2390
 
2391
+ #: defaults.php:306
2392
  msgid "Archived site has been unarchived"
2393
  msgstr ""
2394
 
2395
+ #: defaults.php:306
2396
  msgid "Unarchived the site %SiteName%."
2397
  msgstr ""
2398
 
2399
+ #: defaults.php:307
2400
  msgid "Deactivated site has been activated"
2401
  msgstr ""
2402
 
2403
+ #: defaults.php:307
2404
  msgid "Activated the site %SiteName%."
2405
  msgstr ""
2406
 
2407
+ #: defaults.php:308
2408
  msgid "Site has been deactivated"
2409
  msgstr ""
2410
 
2411
+ #: defaults.php:308
2412
  msgid "Deactivated the site %SiteName%."
2413
  msgstr ""
2414
 
2415
+ #: defaults.php:309
2416
  msgid "Existing site deleted from network"
2417
  msgstr ""
2418
 
2419
+ #: defaults.php:309
2420
  msgid "Deleted the site %SiteName%."
2421
  msgstr ""
2422
 
2423
+ #: defaults.php:310
2424
  msgid "Activated theme on network"
2425
  msgstr ""
2426
 
2427
+ #: defaults.php:310
2428
  msgid ""
2429
  "Network activated the theme %Theme->Name% installed in %Theme-"
2430
  ">get_template_directory%."
2431
  msgstr ""
2432
 
2433
+ #: defaults.php:311
2434
  msgid "Deactivated theme from network"
2435
  msgstr ""
2436
 
2437
+ #: defaults.php:311
2438
  msgid ""
2439
  "Network deactivated the theme %Theme->Name% installed in %Theme-"
2440
  ">get_template_directory%."
2441
  msgstr ""
2442
 
2443
+ #: defaults.php:317
2444
  msgid "Plugins & Themes"
2445
  msgstr ""
2446
 
2447
+ #: defaults.php:318
2448
  msgid "User installed a plugin"
2449
  msgstr ""
2450
 
2451
+ #: defaults.php:318
2452
  msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%."
2453
  msgstr ""
2454
 
2455
+ #: defaults.php:319
2456
  msgid "User activated a WordPress plugin"
2457
  msgstr ""
2458
 
2459
+ #: defaults.php:319
2460
  msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%."
2461
  msgstr ""
2462
 
2463
+ #: defaults.php:320
2464
  msgid "User deactivated a WordPress plugin"
2465
  msgstr ""
2466
 
2467
+ #: defaults.php:320
2468
  msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%."
2469
  msgstr ""
2470
 
2471
+ #: defaults.php:321
2472
  msgid "User uninstalled a plugin"
2473
  msgstr ""
2474
 
2475
+ #: defaults.php:321
2476
  msgid ""
2477
  "Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile"
2478
  "%."
2479
  msgstr ""
2480
 
2481
+ #: defaults.php:322
2482
  msgid "User upgraded a plugin"
2483
  msgstr ""
2484
 
2485
+ #: defaults.php:322
2486
  msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%."
2487
  msgstr ""
2488
 
2489
+ #: defaults.php:323
2490
  msgid "User installed a theme"
2491
  msgstr ""
2492
 
2493
+ #: defaults.php:323
2494
  msgid ""
2495
  "Installed the theme \"%Theme->Name%\" in %Theme->get_template_directory%."
2496
  msgstr ""
2497
 
2498
+ #: defaults.php:324
2499
  msgid "User activated a theme"
2500
  msgstr ""
2501
 
2502
+ #: defaults.php:324
2503
  msgid ""
2504
  "Activated the theme \"%Theme->Name%\", installed in %Theme-"
2505
  ">get_template_directory%."
2506
  msgstr ""
2507
 
2508
+ #: defaults.php:325
2509
  msgid "User uninstalled a theme"
2510
  msgstr ""
2511
 
2512
+ #: defaults.php:325
2513
  msgid ""
2514
  "Deleted the theme \"%Theme->Name%\" installed in %Theme-"
2515
  ">get_template_directory%."
2516
  msgstr ""
2517
 
2518
+ #: defaults.php:326
2519
  msgid "A plugin created a post"
2520
  msgstr ""
2521
 
2522
+ #: defaults.php:326
2523
+ msgid ""
2524
+ "A plugin automatically created the following %PostType% called %PostTitle%. "
2525
+ "View the post: %EditorLinkPost%."
2526
  msgstr ""
2527
 
2528
+ #: defaults.php:327
2529
  msgid "A plugin created a page"
2530
  msgstr ""
2531
 
2532
+ #: defaults.php:327
2533
  msgid "A plugin automatically created the following page: %PostTitle%."
2534
  msgstr ""
2535
 
2536
+ #: defaults.php:328
2537
  msgid "A plugin created a custom post"
2538
  msgstr ""
2539
 
2540
+ #: defaults.php:328
2541
  msgid "A plugin automatically created the following custom post: %PostTitle%."
2542
  msgstr ""
2543
 
2544
+ #: defaults.php:329
2545
  msgid "A plugin deleted a post"
2546
  msgstr ""
2547
 
2548
+ #: defaults.php:329
2549
+ msgid ""
2550
+ "A plugin automatically deleted the following %PostType% called %PostTitle%."
2551
  msgstr ""
2552
 
2553
+ #: defaults.php:330
2554
  msgid "A plugin deleted a page"
2555
  msgstr ""
2556
 
2557
+ #: defaults.php:330
2558
  msgid "A plugin automatically deleted the following page: %PostTitle%."
2559
  msgstr ""
2560
 
2561
+ #: defaults.php:331
2562
  msgid "A plugin deleted a custom post"
2563
  msgstr ""
2564
 
2565
+ #: defaults.php:331
2566
  msgid "A plugin automatically deleted the following custom post: %PostTitle%."
2567
  msgstr ""
2568
 
2569
+ #: defaults.php:332
2570
  msgid "User updated a theme"
2571
  msgstr ""
2572
 
2573
+ #: defaults.php:332
2574
  msgid ""
2575
  "Updated the theme \"%Theme->Name%\" installed in %Theme-"
2576
  ">get_template_directory%."
2577
  msgstr ""
2578
 
2579
+ #: defaults.php:333
2580
  msgid "User changed a file using the theme editor"
2581
  msgstr ""
2582
 
2583
+ #: defaults.php:333
2584
  msgid "Modified %File% with the Theme Editor."
2585
  msgstr ""
2586
 
2587
+ #: defaults.php:334
2588
  msgid "User changed a file using the plugin editor"
2589
  msgstr ""
2590
 
2591
+ #: defaults.php:334
2592
  msgid "Modified %File% with the Plugin Editor."
2593
  msgstr ""
2594
 
2595
+ #: defaults.php:335
 
 
 
 
 
 
 
 
2596
  msgid "A plugin modified a page"
2597
  msgstr ""
2598
 
2599
+ #: defaults.php:335
2600
  msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
2601
  msgstr ""
2602
 
2603
+ #: defaults.php:336
2604
  msgid "A plugin modified a custom post"
2605
  msgstr ""
2606
 
2607
+ #: defaults.php:336
2608
  msgid ""
2609
  "Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
2610
  msgstr ""
2611
 
2612
+ #: defaults.php:342
2613
  msgid "System Activity"
2614
  msgstr ""
2615
 
2616
+ #: defaults.php:343
2617
  msgid "Unknown Error"
2618
  msgstr ""
2619
 
2620
+ #: defaults.php:343
2621
  msgid "An unexpected error has occurred ."
2622
  msgstr ""
2623
 
2624
+ #: defaults.php:344
2625
  msgid "PHP error"
2626
  msgstr ""
2627
 
2628
+ #: defaults.php:344 defaults.php:345 defaults.php:346 defaults.php:347
2629
+ #: defaults.php:348
2630
  msgid "%Message%."
2631
  msgstr ""
2632
 
2633
+ #: defaults.php:345
2634
  msgid "PHP warning"
2635
  msgstr ""
2636
 
2637
+ #: defaults.php:346
2638
  msgid "PHP notice"
2639
  msgstr ""
2640
 
2641
+ #: defaults.php:347
2642
  msgid "PHP exception"
2643
  msgstr ""
2644
 
2645
+ #: defaults.php:348
2646
  msgid "PHP shutdown error"
2647
  msgstr ""
2648
 
2649
+ #: defaults.php:349
2650
  msgid "Events automatically pruned by system"
2651
  msgstr ""
2652
 
2653
+ #: defaults.php:349
2654
  msgid "System automatically deleted %EventCount% alert(s)."
2655
  msgstr ""
2656
 
2657
+ #: defaults.php:350
2658
  msgid "Option Anyone Can Register in WordPress settings changed"
2659
  msgstr ""
2660
 
2661
+ #: defaults.php:350
2662
  msgid "%NewValue% the option \"Anyone can register\"."
2663
  msgstr ""
2664
 
2665
+ #: defaults.php:351
2666
  msgid "New User Default Role changed"
2667
  msgstr ""
2668
 
2669
+ #: defaults.php:351
2670
  msgid "Changed the New User Default Role from %OldRole% to %NewRole%."
2671
  msgstr ""
2672
 
2673
+ #: defaults.php:352
2674
  msgid "WordPress Administrator Notification email changed"
2675
  msgstr ""
2676
 
2677
+ #: defaults.php:352
2678
  msgid ""
2679
  "Changed the WordPress administrator notifications email address from "
2680
  "%OldEmail% to %NewEmail%."
2681
  msgstr ""
2682
 
2683
+ #: defaults.php:353
2684
  msgid "WordPress was updated"
2685
  msgstr ""
2686
 
2687
+ #: defaults.php:353
2688
  msgid "Updated WordPress from version %OldVersion% to %NewVersion%."
2689
  msgstr ""
2690
 
2691
+ #: defaults.php:354
2692
  msgid "User changes the WordPress Permalinks"
2693
  msgstr ""
2694
 
2695
+ #: defaults.php:354
2696
  msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%."
2697
  msgstr ""
2698
 
2699
+ #: defaults.php:355
2700
  msgid "User requests non-existing pages (404 Error Pages)"
2701
  msgstr ""
2702
 
2703
+ #: defaults.php:355
2704
  msgid ""
2705
  "Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. "
2706
+ "%LinkFile%"
2707
  msgstr ""
2708
 
2709
+ #: defaults.php:356
2710
  msgid "Website Visitor User requests non-existing pages (404 Error Pages)"
2711
  msgstr ""
2712
 
2713
+ #: defaults.php:356
2714
  msgid ""
2715
  "Website Visitor Has requested a non existing page (404 Error Pages) %Attempts"
2716
+ "% %Msg%. %LinkFile%"
2717
  msgstr ""
2718
 
2719
+ #: defaults.php:357
2720
+ msgid "Option WordPress Address (URL) in WordPress settings changed"
2721
+ msgstr ""
2722
+
2723
+ #: defaults.php:357
2724
+ msgid "Changed the WordPress address (URL) from %old_url% to %new_url%."
2725
+ msgstr ""
2726
+
2727
+ #: defaults.php:358
2728
+ msgid "Option Site Address (URL) in WordPress settings changed"
2729
+ msgstr ""
2730
+
2731
+ #: defaults.php:358
2732
+ msgid "Changed the site address (URL) from %old_url% to %new_url%."
2733
+ msgstr ""
2734
+
2735
+ #: defaults.php:359
2736
  msgid "Advertising Add-ons."
2737
  msgstr ""
2738
 
2739
+ #: defaults.php:359
2740
  msgid "%PromoName% %PromoMessage%"
2741
  msgstr ""
2742
 
2743
+ #: defaults.php:365
2744
  msgid "Menus"
2745
  msgstr ""
2746
 
2747
+ #: defaults.php:366
2748
  msgid "User created new menu"
2749
  msgstr ""
2750
 
2751
+ #: defaults.php:366
2752
  msgid "Created a new menu called %MenuName%."
2753
  msgstr ""
2754
 
2755
+ #: defaults.php:367
2756
  msgid "User added content to a menu"
2757
  msgstr ""
2758
 
2759
+ #: defaults.php:367
2760
  msgid "Added the %ContentType% called %ContentName% to menu %MenuName%."
2761
  msgstr ""
2762
 
2763
+ #: defaults.php:368
2764
  msgid "User removed content from a menu"
2765
  msgstr ""
2766
 
2767
+ #: defaults.php:368
2768
  msgid ""
2769
  "Removed the %ContentType% called %ContentName% from the menu %MenuName%."
2770
  msgstr ""
2771
 
2772
+ #: defaults.php:369
2773
  msgid "User deleted menu"
2774
  msgstr ""
2775
 
2776
+ #: defaults.php:369
2777
  msgid "Deleted the menu %MenuName%."
2778
  msgstr ""
2779
 
2780
+ #: defaults.php:370
2781
  msgid "User changed menu setting"
2782
  msgstr ""
2783
 
2784
+ #: defaults.php:370
2785
  msgid "%Status% the menu setting %MenuSetting% in %MenuName%."
2786
  msgstr ""
2787
 
2788
+ #: defaults.php:371
2789
  msgid "User modified content in a menu"
2790
  msgstr ""
2791
 
2792
+ #: defaults.php:371
2793
  msgid "Modified the %ContentType% called %ContentName% in menu %MenuName%."
2794
  msgstr ""
2795
 
2796
+ #: defaults.php:372
2797
  msgid "User changed name of a menu"
2798
  msgstr ""
2799
 
2800
+ #: defaults.php:372
2801
  msgid "Changed the name of menu %OldMenuName% to %NewMenuName%."
2802
  msgstr ""
2803
 
2804
+ #: defaults.php:373
2805
  msgid "User changed order of the objects in a menu"
2806
  msgstr ""
2807
 
2808
+ #: defaults.php:373
2809
  msgid "Changed the order of the %ItemName% in menu %MenuName%."
2810
  msgstr ""
2811
 
2812
+ #: defaults.php:374
2813
  msgid "User moved objects as a sub-item"
2814
  msgstr ""
2815
 
2816
+ #: defaults.php:374
2817
  msgid "Moved %ItemName% as a sub-item of %ParentName% in menu %MenuName%."
2818
  msgstr ""
2819
 
2820
+ #: defaults.php:380
2821
  msgid "Widgets"
2822
  msgstr ""
2823
 
2824
+ #: defaults.php:381
2825
  msgid "User added a new widget"
2826
  msgstr ""
2827
 
2828
+ #: defaults.php:381
2829
  msgid "Added a new %WidgetName% widget in %Sidebar%."
2830
  msgstr ""
2831
 
2832
+ #: defaults.php:382
2833
  msgid "User modified a widget"
2834
  msgstr ""
2835
 
2836
+ #: defaults.php:382
2837
  msgid "Modified the %WidgetName% widget in %Sidebar%."
2838
  msgstr ""
2839
 
2840
+ #: defaults.php:383
2841
  msgid "User deleted widget"
2842
  msgstr ""
2843
 
2844
+ #: defaults.php:383
2845
  msgid "Deleted the %WidgetName% widget from %Sidebar%."
2846
  msgstr ""
2847
 
2848
+ #: defaults.php:384
2849
  msgid "User moved widget"
2850
  msgstr ""
2851
 
2852
+ #: defaults.php:384
2853
  msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%."
2854
  msgstr ""
2855
 
2856
+ #: defaults.php:385
2857
  msgid "User changed widget position"
2858
  msgstr ""
2859
 
2860
+ #: defaults.php:385
2861
  msgid "Changed the position of the widget %WidgetName% in sidebar %Sidebar%."
2862
  msgstr ""
2863
 
2864
+ #: defaults.php:391
2865
  msgid "Site Settings"
2866
  msgstr ""
2867
 
2868
+ #: defaults.php:392
2869
  msgid ""
2870
  "Enabled/Disabled the option Discourage search engines from indexing this site"
2871
  msgstr ""
2872
 
2873
+ #: defaults.php:392
2874
  msgid "%Status% the option Discourage search engines from indexing this site."
2875
  msgstr ""
2876
 
2877
+ #: defaults.php:393
2878
  msgid "Enabled/Disabled comments on all the website"
2879
  msgstr ""
2880
 
2881
+ #: defaults.php:393
2882
  msgid "%Status% comments on all the website."
2883
  msgstr ""
2884
 
2885
+ #: defaults.php:394
2886
  msgid "Enabled/Disabled the option Comment author must fill out name and email"
2887
  msgstr ""
2888
 
2889
+ #: defaults.php:394
2890
  msgid "%Status% the option Comment author must fill out name and email."
2891
  msgstr ""
2892
 
2893
+ #: defaults.php:395
2894
  msgid ""
2895
  "Enabled/Disabled the option Users must be logged in and registered to comment"
2896
  msgstr ""
2897
 
2898
+ #: defaults.php:395
2899
  msgid "%Status% the option Users must be logged in and registered to comment."
2900
  msgstr ""
2901
 
2902
+ #: defaults.php:396
2903
  msgid "Enabled/Disabled the option to automatically close comments"
2904
  msgstr ""
2905
 
2906
+ #: defaults.php:396
2907
  msgid "%Status% the option to automatically close comments after %Value% days."
2908
  msgstr ""
2909
 
2910
+ #: defaults.php:397
2911
  msgid "Changed the value of the option Automatically close comments"
2912
  msgstr ""
2913
 
2914
+ #: defaults.php:397
2915
  msgid ""
2916
  "Changed the value of the option Automatically close comments from %OldValue% "
2917
  "to %NewValue% days."
2918
  msgstr ""
2919
 
2920
+ #: defaults.php:398
2921
  msgid "Enabled/Disabled the option for comments to be manually approved"
2922
  msgstr ""
2923
 
2924
+ #: defaults.php:398
2925
  msgid "%Status% the option for comments to be manually approved."
2926
  msgstr ""
2927
 
2928
+ #: defaults.php:399
2929
  msgid ""
2930
  "Enabled/Disabled the option for an author to have previously approved "
2931
  "comments for the comments to appear"
2932
  msgstr ""
2933
 
2934
+ #: defaults.php:399
2935
  msgid ""
2936
  "%Status% the option for an author to have previously approved comments for "
2937
  "the comments to appear."
2938
  msgstr ""
2939
 
2940
+ #: defaults.php:400
2941
  msgid ""
2942
  "Changed the number of links that a comment must have to be held in the queue"
2943
  msgstr ""
2944
 
2945
+ #: defaults.php:400
2946
  msgid ""
2947
  "Changed the number of links from %OldValue% to %NewValue% that a comment "
2948
  "must have to be held in the queue."
2949
  msgstr ""
2950
 
2951
+ #: defaults.php:401
2952
  msgid "Modified the list of keywords for comments moderation"
2953
  msgstr ""
2954
 
2955
+ #: defaults.php:401
2956
  msgid "Modified the list of keywords for comments moderation."
2957
  msgstr ""
2958
 
2959
+ #: defaults.php:402
2960
  msgid "Modified the list of keywords for comments blacklisting"
2961
  msgstr ""
2962
 
2963
+ #: defaults.php:402
2964
  msgid "Modified the list of keywords for comments blacklisting."
2965
  msgstr ""
2966
 
2967
+ #: defaults.php:403
2968
+ msgid "Created a New cron job"
2969
+ msgstr ""
2970
+
2971
+ #: defaults.php:403
2972
+ msgid ""
2973
+ "A new cron job called %name% was created and is scheduled to run %schedule%."
2974
+ msgstr ""
2975
+
2976
+ #: defaults.php:404
2977
+ msgid "Changed status of the cron job"
2978
+ msgstr ""
2979
+
2980
+ #: defaults.php:404
2981
+ msgid "The cron job %name% was %status%."
2982
+ msgstr ""
2983
+
2984
+ #: defaults.php:405
2985
+ msgid "Deleted the cron job"
2986
+ msgstr ""
2987
+
2988
+ #: defaults.php:405
2989
+ msgid "The cron job %name% was deleted."
2990
+ msgstr ""
2991
+
2992
+ #: defaults.php:406
2993
+ msgid "Started the cron job"
2994
+ msgstr ""
2995
+
2996
+ #: defaults.php:406
2997
+ msgid "The cron job %name% has just started."
2998
+ msgstr ""
2999
+
3000
+ #: defaults.php:413
3001
  msgid "Users Profiles & Activity"
3002
  msgstr ""
3003
 
3004
+ #: defaults.php:417
3005
  msgid "Other User Activity"
3006
  msgstr ""
3007
 
3008
+ #: defaults.php:418
3009
  msgid "User logged in"
3010
  msgstr ""
3011
 
3012
+ #: defaults.php:418
3013
  msgid "Successfully logged in."
3014
  msgstr ""
3015
 
3016
+ #: defaults.php:419
3017
  msgid "User logged out"
3018
  msgstr ""
3019
 
3020
+ #: defaults.php:419
3021
  msgid "Successfully logged out."
3022
  msgstr ""
3023
 
3024
+ #: defaults.php:420
3025
  msgid "Login failed"
3026
  msgstr ""
3027
 
3028
+ #: defaults.php:420
3029
  msgid "%Attempts% failed login(s) detected."
3030
  msgstr ""
3031
 
3032
+ #: defaults.php:421
3033
  msgid "Login failed / non existing user"
3034
  msgstr ""
3035
 
3036
+ #: defaults.php:421
3037
+ msgid ""
3038
+ "%Attempts% failed login(s) detected using non existing user. %LogFileText%"
3039
  msgstr ""
3040
 
3041
+ #: defaults.php:422
3042
  msgid "Login blocked"
3043
  msgstr ""
3044
 
3045
+ #: defaults.php:422
3046
  msgid ""
3047
  "Blocked from logging in because the same WordPress user is logged in from "
3048
  "%ClientIP%."
3049
  msgstr ""
3050
 
3051
+ #: defaults.php:423
3052
  msgid "User logged in with existing session(s)"
3053
  msgstr ""
3054
 
3055
+ #: defaults.php:423
3056
  msgid ""
3057
  "Successfully logged in. Another session from %IPAddress% for this user "
3058
  "already exist."
3059
  msgstr ""
3060
 
3061
+ #: defaults.php:424
3062
  msgid "User logged out all other sessions with the same username"
3063
  msgstr ""
3064
 
3065
+ #: defaults.php:424
3066
  msgid "Logged out all other sessions with the same username."
3067
  msgstr ""
3068
 
3069
+ #: defaults.php:425
3070
  msgid "User session destroyed and logged out."
3071
  msgstr ""
3072
 
3073
+ #: defaults.php:425
3074
  msgid "Logged out session %TargetSessionID% which belonged to %TargetUserName%"
3075
  msgstr ""
3076
 
3077
+ #: defaults.php:426
3078
  msgid "User uploaded file from Uploads directory"
3079
  msgstr ""
3080
 
3081
+ #: defaults.php:426
3082
  msgid "Uploaded the file %FileName% in %FilePath%."
3083
  msgstr ""
3084
 
3085
+ #: defaults.php:427
3086
  msgid "User deleted file from Uploads directory"
3087
  msgstr ""
3088
 
3089
+ #: defaults.php:427
3090
  msgid "Deleted the file %FileName% from %FilePath%."
3091
  msgstr ""
3092
 
3093
+ #: defaults.php:433
3094
  msgid "User Profiles"
3095
  msgstr ""
3096
 
3097
+ #: defaults.php:434
3098
  msgid "New user was created on WordPress"
3099
  msgstr ""
3100
 
3101
+ #: defaults.php:434
3102
  msgid ""
3103
  "A new user %NewUserData->Username% was created with role of %NewUserData-"
3104
  ">Roles%."
3105
  msgstr ""
3106
 
3107
+ #: defaults.php:435
3108
  msgid "User created another WordPress user"
3109
  msgstr ""
3110
 
3111
+ #: defaults.php:435
3112
  msgid ""
3113
  "%UserChanger% created a new user %NewUserData->Username% with the role of "
3114
  "%NewUserData->Roles%."
3115
  msgstr ""
3116
 
3117
+ #: defaults.php:436
3118
  msgid "The role of a user was changed by another WordPress user"
3119
  msgstr ""
3120
 
3121
+ #: defaults.php:436
3122
  msgid ""
3123
+ "Changed the role of the user %TargetUsername% from %OldRole% to %NewRole%"
3124
+ "%multisite_text%."
3125
  msgstr ""
3126
 
3127
+ #: defaults.php:437
3128
  msgid "User has changed his or her password"
3129
  msgstr ""
3130
 
3131
+ #: defaults.php:437
3132
  msgid "Changed the password."
3133
  msgstr ""
3134
 
3135
+ #: defaults.php:438
3136
  msgid "User changed another user's password"
3137
  msgstr ""
3138
 
3139
+ #: defaults.php:438
3140
  msgid ""
3141
  "Changed the password for the user %TargetUserData->Username% with the role "
3142
  "of %TargetUserData->Roles%."
3143
  msgstr ""
3144
 
3145
+ #: defaults.php:439
3146
  msgid "User changed his or her email address"
3147
  msgstr ""
3148
 
3149
+ #: defaults.php:439
3150
  msgid "Changed the email address from %OldEmail% to %NewEmail%."
3151
  msgstr ""
3152
 
3153
+ #: defaults.php:440
3154
  msgid "User changed another user's email address"
3155
  msgstr ""
3156
 
3157
+ #: defaults.php:440
3158
  msgid ""
3159
  "Changed the email address of the user %TargetUsername% from %OldEmail% to "
3160
  "%NewEmail%."
3161
  msgstr ""
3162
 
3163
+ #: defaults.php:441
3164
  msgid "User was deleted by another user"
3165
  msgstr ""
3166
 
3167
+ #: defaults.php:441
3168
  msgid ""
3169
  "Deleted the user %TargetUserData->Username% with the role of %TargetUserData-"
3170
  ">Roles%."
3171
  msgstr ""
3172
 
3173
+ #: defaults.php:442
3174
  msgid "User opened the profile page of another user"
3175
  msgstr ""
3176
 
3177
+ #: defaults.php:442
3178
  msgid "%UserChanger% opened the profile page of the user %TargetUsername%."
3179
  msgstr ""
3180
 
3181
+ #: defaults.php:443
3182
  msgid "User updated a custom field value for a user"
3183
  msgstr ""
3184
 
3185
+ #: defaults.php:443
3186
+ msgid ""
3187
+ "Changed the value of the custom field %custom_field_name%%ReportText% for "
3188
+ "the user %TargetUsername%.%ChangeText%"
3189
+ msgstr ""
3190
+
3191
+ #: defaults.php:444
3192
+ msgid "User created a custom field value for a user"
3193
+ msgstr ""
3194
+
3195
+ #: defaults.php:444
3196
+ msgid ""
3197
+ "Created the value of the custom field %custom_field_name% with %new_value% "
3198
+ "for the user %TargetUsername%."
3199
+ msgstr ""
3200
+
3201
+ #: defaults.php:445
3202
+ msgid "User changed first name for a user"
3203
+ msgstr ""
3204
+
3205
+ #: defaults.php:445
3206
+ msgid ""
3207
+ "Changed the first name of the user %TargetUsername% from %old_firstname% to "
3208
+ "%new_firstname%"
3209
+ msgstr ""
3210
+
3211
+ #: defaults.php:446
3212
+ msgid "User changed last name for a user"
3213
+ msgstr ""
3214
+
3215
+ #: defaults.php:446
3216
+ msgid ""
3217
+ "Changed the last name of the user %TargetUsername% from %old_lastname% to "
3218
+ "%new_lastname%"
3219
+ msgstr ""
3220
+
3221
+ #: defaults.php:447
3222
+ msgid "User changed nickname for a user"
3223
+ msgstr ""
3224
+
3225
+ #: defaults.php:447
3226
  msgid ""
3227
+ "Changed the nickname of the user %TargetUsername% from %old_nickname% to "
3228
+ "%new_nickname%"
3229
  msgstr ""
3230
 
3231
+ #: defaults.php:448
3232
+ msgid "User changed the display name for a user"
3233
  msgstr ""
3234
 
3235
+ #: defaults.php:448
3236
  msgid ""
3237
+ "Changed the Display name publicly of user %TargetUsername% from "
3238
+ "%old_displayname% to %new_displayname%"
3239
  msgstr ""
3240
 
3241
+ #: defaults.php:455
3242
  msgid "Third Party Support"
3243
  msgstr ""
3244
 
3245
+ #: defaults.php:459
3246
  msgid "BBPress Forum"
3247
  msgstr ""
3248
 
3249
+ #: defaults.php:460
3250
  msgid "User created new forum"
3251
  msgstr ""
3252
 
3253
+ #: defaults.php:460
3254
  msgid ""
3255
  "Created new forum %ForumName%. Forum URL is %ForumURL%. %EditorLinkForum%."
3256
  msgstr ""
3257
 
3258
+ #: defaults.php:461
3259
  msgid "User changed status of a forum"
3260
  msgstr ""
3261
 
3262
+ #: defaults.php:461
3263
  msgid ""
3264
  "Changed the status of the forum %ForumName% from %OldStatus% to %NewStatus%. "
3265
  "%EditorLinkForum%."
3266
  msgstr ""
3267
 
3268
+ #: defaults.php:462
3269
  msgid "User changed visibility of a forum"
3270
  msgstr ""
3271
 
3272
+ #: defaults.php:462
3273
  msgid ""
3274
  "Changed the visibility of the forum %ForumName% from %OldVisibility% to "
3275
  "%NewVisibility%. %EditorLinkForum%."
3276
  msgstr ""
3277
 
3278
+ #: defaults.php:463
3279
  msgid "User changed the URL of a forum"
3280
  msgstr ""
3281
 
3282
+ #: defaults.php:463
3283
  msgid ""
3284
  "Changed the URL of the forum %ForumName% from %OldUrl% to %NewUrl%. "
3285
  "%EditorLinkForum%."
3286
  msgstr ""
3287
 
3288
+ #: defaults.php:464
3289
  msgid "User changed order of a forum"
3290
  msgstr ""
3291
 
3292
+ #: defaults.php:464
3293
  msgid ""
3294
  "Changed the order of the forum %ForumName% from %OldOrder% to %NewOrder%. "
3295
  "%EditorLinkForum%."
3296
  msgstr ""
3297
 
3298
+ #: defaults.php:465
3299
  msgid "User moved forum to trash"
3300
  msgstr ""
3301
 
3302
+ #: defaults.php:465
3303
  msgid "Moved the forum %ForumName% to trash."
3304
  msgstr ""
3305
 
3306
+ #: defaults.php:466
3307
  msgid "User permanently deleted forum"
3308
  msgstr ""
3309
 
3310
+ #: defaults.php:466
3311
  msgid "Permanently deleted the forum %ForumName%."
3312
  msgstr ""
3313
 
3314
+ #: defaults.php:467
3315
  msgid "User restored forum from trash"
3316
  msgstr ""
3317
 
3318
+ #: defaults.php:467
3319
  msgid "Restored the forum %ForumName% from trash. %EditorLinkForum%."
3320
  msgstr ""
3321
 
3322
+ #: defaults.php:468
3323
  msgid "User changed the parent of a forum"
3324
  msgstr ""
3325
 
3326
+ #: defaults.php:468
3327
  msgid ""
3328
  "Changed the parent of the forum %ForumName% from %OldParent% to %NewParent%. "
3329
  "%EditorLinkForum%."
3330
  msgstr ""
3331
 
3332
+ #: defaults.php:469
3333
  msgid "User changed forum's role"
3334
  msgstr ""
3335
 
3336
+ #: defaults.php:469
3337
  msgid "Changed the forum's auto role from %OldRole% to %NewRole%."
3338
  msgstr ""
3339
 
3340
+ #: defaults.php:470
3341
  msgid "User changed option of a forum"
3342
  msgstr ""
3343
 
3344
+ #: defaults.php:470
3345
  msgid "%Status% the option for anonymous posting on forum."
3346
  msgstr ""
3347
 
3348
+ #: defaults.php:471
3349
  msgid "User changed type of a forum"
3350
  msgstr ""
3351
 
3352
+ #: defaults.php:471
3353
  msgid ""
3354
  "Changed the type of the forum %ForumName% from %OldType% to %NewType%. "
3355
  "%EditorLinkForum%."
3356
  msgstr ""
3357
 
3358
+ #: defaults.php:472
3359
  msgid "User changed time to disallow post editing"
3360
  msgstr ""
3361
 
3362
+ #: defaults.php:472
3363
  msgid ""
3364
  "Changed the time to disallow post editing from %OldTime% to %NewTime% "
3365
  "minutes in the forums."
3366
  msgstr ""
3367
 
3368
+ #: defaults.php:473
3369
  msgid "User changed the forum setting posting throttle time"
3370
  msgstr ""
3371
 
3372
+ #: defaults.php:473
3373
  msgid ""
3374
  "Changed the posting throttle time from %OldTime% to %NewTime% seconds in the "
3375
  "forums."
3376
  msgstr ""
3377
 
3378
+ #: defaults.php:474
3379
  msgid "User created new topic"
3380
  msgstr ""
3381
 
3382
+ #: defaults.php:474
3383
  msgid "Created a new topic %TopicName%. %EditorLinkTopic%."
3384
  msgstr ""
3385
 
3386
+ #: defaults.php:475
3387
  msgid "User changed status of a topic"
3388
  msgstr ""
3389
 
3390
+ #: defaults.php:475
3391
  msgid ""
3392
  "Changed the status of the topic %TopicName% from %OldStatus% to %NewStatus%. "
3393
  "%EditorLinkTopic%."
3394
  msgstr ""
3395
 
3396
+ #: defaults.php:476
3397
  msgid "User changed type of a topic"
3398
  msgstr ""
3399
 
3400
+ #: defaults.php:476
3401
  msgid ""
3402
  "Changed the type of the topic %TopicName% from %OldType% to %NewType%. "
3403
  "%EditorLinkTopic%."
3404
  msgstr ""
3405
 
3406
+ #: defaults.php:477
3407
  msgid "User changed URL of a topic"
3408
  msgstr ""
3409
 
3410
+ #: defaults.php:477
3411
  msgid "Changed the URL of the topic %TopicName% from %OldUrl% to %NewUrl%."
3412
  msgstr ""
3413
 
3414
+ #: defaults.php:478
3415
  msgid "User changed the forum of a topic"
3416
  msgstr ""
3417
 
3418
+ #: defaults.php:478
3419
  msgid ""
3420
  "Changed the forum of the topic %TopicName% from %OldForum% to %NewForum%. "
3421
  "%EditorLinkTopic%."
3422
  msgstr ""
3423
 
3424
+ #: defaults.php:479
3425
  msgid "User moved topic to trash"
3426
  msgstr ""
3427
 
3428
+ #: defaults.php:479
3429
  msgid "Moved the topic %TopicName% to trash."
3430
  msgstr ""
3431
 
3432
+ #: defaults.php:480
3433
  msgid "User permanently deleted topic"
3434
  msgstr ""
3435
 
3436
+ #: defaults.php:480
3437
  msgid "Permanently deleted the topic %TopicName%."
3438
  msgstr ""
3439
 
3440
+ #: defaults.php:481
3441
  msgid "User restored topic from trash"
3442
  msgstr ""
3443
 
3444
+ #: defaults.php:481
3445
  msgid "Restored the topic %TopicName% from trash. %EditorLinkTopic%."
3446
  msgstr ""
3447
 
3448
+ #: defaults.php:482
3449
  msgid "User changed visibility of a topic"
3450
  msgstr ""
3451
 
3452
+ #: defaults.php:482
3453
  msgid ""
3454
  "Changed the visibility of the topic %TopicName% from %OldVisibility% to "
3455
  "%NewVisibility%. %EditorLinkTopic%."
3456
  msgstr ""
3457
 
3458
+ #: defaults.php:488
3459
  msgid "WooCommerce"
3460
  msgstr ""
3461
 
3462
+ #: defaults.php:489
3463
  msgid "User created a new product"
3464
  msgstr ""
3465
 
3466
+ #: defaults.php:489
3467
  msgid ""
3468
  "Created a new product called %ProductTitle% and saved it as draft. View the "
3469
  "product: %EditorLinkProduct%."
3470
  msgstr ""
3471
 
3472
+ #: defaults.php:490
3473
  msgid "User published a product"
3474
  msgstr ""
3475
 
3476
+ #: defaults.php:490
3477
  msgid ""
3478
  "Published a product called %ProductTitle%. Product URL is %ProductUrl%. View "
3479
  "the product: %EditorLinkProduct%."
3480
  msgstr ""
3481
 
3482
+ #: defaults.php:491
3483
  msgid "User created a new product category"
3484
  msgstr ""
3485
 
3486
+ #: defaults.php:491
3487
  msgid ""
3488
  "Created a new product category called %CategoryName% in WooCommerce. Product "
3489
  "category slug is %Slug%."
3490
  msgstr ""
3491
 
3492
+ #: defaults.php:492
3493
  msgid "User changed the category of a product"
3494
  msgstr ""
3495
 
3496
+ #: defaults.php:492
3497
  msgid ""
3498
  "Changed the category of the product %ProductTitle% from %OldCategories% to "
3499
  "%NewCategories%. View the product: %EditorLinkProduct%."
3500
  msgstr ""
3501
 
3502
+ #: defaults.php:493
3503
  msgid "User modified the short description of a product"
3504
  msgstr ""
3505
 
3506
+ #: defaults.php:493
3507
  msgid ""
3508
+ "Modified the short description of the product %ProductTitle%.%ChangeText% "
3509
+ "View the product: %EditorLinkProduct%."
3510
  msgstr ""
3511
 
3512
+ #: defaults.php:494
3513
  msgid "User modified the text of a product"
3514
  msgstr ""
3515
 
3516
+ #: defaults.php:494
3517
  msgid ""
3518
  "Modified the text of the product %ProductTitle%. View the product: "
3519
  "%EditorLinkProduct%."
3520
  msgstr ""
3521
 
3522
+ #: defaults.php:495
3523
  msgid "User changed the URL of a product"
3524
  msgstr ""
3525
 
3526
+ #: defaults.php:495
3527
  msgid ""
3528
+ "Changed the URL of the product %ProductTitle%%ReportText%.%ChangeText% View "
3529
+ "the product: %EditorLinkProduct%."
3530
  msgstr ""
3531
 
3532
+ #: defaults.php:496
3533
  msgid "User changed the Product Data of a product"
3534
  msgstr ""
3535
 
3536
+ #: defaults.php:496
3537
  msgid ""
3538
  "Changed the Product Data of the product %ProductTitle%. View the product: "
3539
  "%EditorLinkProduct%."
3540
  msgstr ""
3541
 
3542
+ #: defaults.php:497
3543
  msgid "User changed the date of a product"
3544
  msgstr ""
3545
 
3546
+ #: defaults.php:497
3547
  msgid ""
3548
  "Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. "
3549
  "View the product: %EditorLinkProduct%."
3550
  msgstr ""
3551
 
3552
+ #: defaults.php:498
3553
  msgid "User changed the visibility of a product"
3554
  msgstr ""
3555
 
3556
+ #: defaults.php:498
3557
  msgid ""
3558
  "Changed the visibility of the product %ProductTitle% from %OldVisibility% to "
3559
  "%NewVisibility%. View the product: %EditorLinkProduct%."
3560
  msgstr ""
3561
 
3562
+ #: defaults.php:499
3563
  msgid "User modified the published product"
3564
  msgstr ""
3565
 
3566
+ #: defaults.php:499
3567
  msgid ""
3568
  "Modified the published product %ProductTitle%. Product URL is %ProductUrl%. "
3569
  "View the product: %EditorLinkProduct%."
3570
  msgstr ""
3571
 
3572
+ #: defaults.php:500
3573
  msgid "User modified the draft product"
3574
  msgstr ""
3575
 
3576
+ #: defaults.php:500
3577
  msgid ""
3578
  "Modified the draft product %ProductTitle%. View the product: "
3579
  "%EditorLinkProduct%."
3580
  msgstr ""
3581
 
3582
+ #: defaults.php:501
3583
  msgid "User moved a product to trash"
3584
  msgstr ""
3585
 
3586
+ #: defaults.php:501
3587
  msgid ""
3588
  "Moved the product %ProductTitle% to trash. Product URL was %ProductUrl%."
3589
  msgstr ""
3590
 
3591
+ #: defaults.php:502
3592
  msgid "User permanently deleted a product"
3593
  msgstr ""
3594
 
3595
+ #: defaults.php:502
3596
  msgid "Permanently deleted the product %ProductTitle%."
3597
  msgstr ""
3598
 
3599
+ #: defaults.php:503
3600
  msgid "User restored a product from the trash"
3601
  msgstr ""
3602
 
3603
+ #: defaults.php:503
3604
  msgid ""
3605
  "Product %ProductTitle% has been restored from trash. View product: "
3606
  "%EditorLinkProduct%."
3607
  msgstr ""
3608
 
3609
+ #: defaults.php:504
3610
  msgid "User changed status of a product"
3611
  msgstr ""
3612
 
3613
+ #: defaults.php:504
3614
  msgid ""
3615
  "Changed the status of the product %ProductTitle% from %OldStatus% to "
3616
  "%NewStatus%. View the product: %EditorLinkProduct%."
3617
  msgstr ""
3618
 
3619
+ #: defaults.php:505
3620
  msgid "User changed type of a price"
3621
  msgstr ""
3622
 
3623
+ #: defaults.php:505
3624
  msgid ""
3625
  "Changed the %PriceType% of the product %ProductTitle% from %OldPrice% to "
3626
  "%NewPrice%. View the product: %EditorLinkProduct%."
3627
  msgstr ""
3628
 
3629
+ #: defaults.php:506
3630
  msgid "User changed the SKU of a product"
3631
  msgstr ""
3632
 
3633
+ #: defaults.php:506
3634
  msgid ""
3635
  "Changed the SKU of the product %ProductTitle% from %OldSku% to %NewSku%. "
3636
  "View the product: %EditorLinkProduct%."
3637
  msgstr ""
3638
 
3639
+ #: defaults.php:507
3640
  msgid "User changed the stock status of a product"
3641
  msgstr ""
3642
 
3643
+ #: defaults.php:507
3644
  msgid ""
3645
  "Changed the stock status of the product %ProductTitle% from %OldStatus% to "
3646
  "%NewStatus%. View the product: %EditorLinkProduct%."
3647
  msgstr ""
3648
 
3649
+ #: defaults.php:508
3650
  msgid "User changed the stock quantity"
3651
  msgstr ""
3652
 
3653
+ #: defaults.php:508
3654
  msgid ""
3655
+ "Changed the stock quantity of the product %ProductTitle% from %OldValue% to "
3656
+ "%NewValue%. View the product: %EditorLinkProduct%"
3657
  msgstr ""
3658
 
3659
+ #: defaults.php:509
3660
  msgid "User set a product type"
3661
  msgstr ""
3662
 
3663
+ #: defaults.php:509
3664
  msgid ""
3665
  "Set the product %ProductTitle% as %Type%. View the product: "
3666
  "%EditorLinkProduct%."
3667
  msgstr ""
3668
 
3669
+ #: defaults.php:510
3670
  msgid "User changed the weight of a product"
3671
  msgstr ""
3672
 
3673
+ #: defaults.php:510
3674
  msgid ""
3675
  "Changed the weight of the product %ProductTitle% from %OldWeight% to "
3676
  "%NewWeight%. View the product: %EditorLinkProduct%."
3677
  msgstr ""
3678
 
3679
+ #: defaults.php:511
3680
  msgid "User changed the dimensions of a product"
3681
  msgstr ""
3682
 
3683
+ #: defaults.php:511
3684
  msgid ""
3685
  "Changed the %DimensionType% dimensions of the product %ProductTitle% from "
3686
  "%OldDimension% to %NewDimension%. View the product: %EditorLinkProduct%."
3687
  msgstr ""
3688
 
3689
+ #: defaults.php:512
3690
  msgid "User added the Downloadable File to a product"
3691
  msgstr ""
3692
 
3693
+ #: defaults.php:512
3694
  msgid ""
3695
  "Added the Downloadable File %FileName% with File URL %FileUrl% to the "
3696
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3697
  msgstr ""
3698
 
3699
+ #: defaults.php:513
3700
  msgid "User Removed the Downloadable File from a product"
3701
  msgstr ""
3702
 
3703
+ #: defaults.php:513
3704
  msgid ""
3705
  "Removed the Downloadable File %FileName% with File URL %FileUrl% from the "
3706
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3707
  msgstr ""
3708
 
3709
+ #: defaults.php:514
3710
  msgid "User changed the name of a Downloadable File in a product"
3711
  msgstr ""
3712
 
3713
+ #: defaults.php:514
3714
  msgid ""
3715
  "Changed the name of a Downloadable File from %OldName% to %NewName% in "
3716
  "product %ProductTitle%. View the product: %EditorLinkProduct%."
3717
  msgstr ""
3718
 
3719
+ #: defaults.php:515
3720
  msgid "User changed the URL of the Downloadable File in a product"
3721
  msgstr ""
3722
 
3723
+ #: defaults.php:515
3724
  msgid ""
3725
  "Changed the URL of the Downloadable File %FileName% from %OldUrl% to %NewUrl"
3726
  "% in product %ProductTitle%. View the product: %EditorLinkProduct%."
3727
  msgstr ""
3728
 
3729
+ #: defaults.php:516
3730
  msgid "User changed the Weight Unit"
3731
  msgstr ""
3732
 
3733
+ #: defaults.php:516
3734
  msgid "Changed the Weight Unit from %OldUnit% to %NewUnit% in WooCommerce."
3735
  msgstr ""
3736
 
3737
+ #: defaults.php:517
3738
  msgid "User changed the Dimensions Unit"
3739
  msgstr ""
3740
 
3741
+ #: defaults.php:517
3742
  msgid "Changed the Dimensions Unit from %OldUnit% to %NewUnit% in WooCommerce."
3743
  msgstr ""
3744
 
3745
+ #: defaults.php:518
3746
  msgid "User changed the Base Location"
3747
  msgstr ""
3748
 
3749
+ #: defaults.php:518
3750
  msgid ""
3751
  "Changed the Base Location from %OldLocation% to %NewLocation% in WooCommerce."
3752
  msgstr ""
3753
 
3754
+ #: defaults.php:519
3755
  msgid "User Enabled/Disabled taxes"
3756
  msgstr ""
3757
 
3758
+ #: defaults.php:519
3759
  msgid "%Status% taxes in the WooCommerce store."
3760
  msgstr ""
3761
 
3762
+ #: defaults.php:520
3763
  msgid "User changed the currency"
3764
  msgstr ""
3765
 
3766
+ #: defaults.php:520
3767
  msgid ""
3768
  "Changed the currency from %OldCurrency% to %NewCurrency% in WooCommerce."
3769
  msgstr ""
3770
 
3771
+ #: defaults.php:521
3772
  msgid "User Enabled/Disabled the use of coupons during checkout"
3773
  msgstr ""
3774
 
3775
+ #: defaults.php:521
3776
  msgid "%Status% the use of coupons during checkout in WooCommerce."
3777
  msgstr ""
3778
 
3779
+ #: defaults.php:522
3780
  msgid "User Enabled/Disabled guest checkout"
3781
  msgstr ""
3782
 
3783
+ #: defaults.php:522
3784
  msgid "%Status% guest checkout in WooCommerce."
3785
  msgstr ""
3786
 
3787
+ #: defaults.php:523
3788
+ msgid "User Enabled/Disabled cash on delivery"
3789
+ msgstr ""
3790
+
3791
+ #: defaults.php:523
3792
+ msgid "%Status% the option Enable cash on delivery in WooCommerce."
3793
+ msgstr ""
3794
+
3795
+ #: defaults.php:525
3796
+ msgid "Yoast SEO"
3797
+ msgstr ""
3798
+
3799
+ #: defaults.php:526
3800
+ msgid "User changed title of a SEO post"
3801
+ msgstr ""
3802
+
3803
+ #: defaults.php:526
3804
+ msgid ""
3805
+ "Changed the SEO title of the %PostStatus% %PostType%%ReportText%.%ChangeText"
3806
+ "% %EditorLinkPost%."
3807
+ msgstr ""
3808
+
3809
+ #: defaults.php:527
3810
+ msgid "User changed the meta description of a SEO post"
3811
+ msgstr ""
3812
+
3813
+ #: defaults.php:527
3814
+ msgid ""
3815
+ "Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle"
3816
+ "%%ReportText%.%ChangeText% %EditorLinkPost%."
3817
+ msgstr ""
3818
+
3819
+ #: defaults.php:528
3820
+ msgid ""
3821
+ "User changed setting to allow search engines to show post in search results "
3822
+ "of a SEO post"
3823
+ msgstr ""
3824
+
3825
+ #: defaults.php:528
3826
+ msgid ""
3827
+ "Changed the setting to allow search engines to show post in search results "
3828
+ "from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled "
3829
+ "%PostTitle%. %EditorLinkPost%."
3830
+ msgstr ""
3831
+
3832
+ #: defaults.php:529
3833
+ msgid ""
3834
+ "User Enabled/Disabled the option for search engine to follow links of a SEO "
3835
+ "post"
3836
+ msgstr ""
3837
+
3838
+ #: defaults.php:529
3839
+ msgid ""
3840
+ "%NewStatus% the option for search engine to follow links in the %PostType% "
3841
+ "titled %PostTitle%. %EditorLinkPost%."
3842
+ msgstr ""
3843
+
3844
+ #: defaults.php:530
3845
+ msgid "User set the meta robots advanced setting of a SEO post"
3846
+ msgstr ""
3847
+
3848
+ #: defaults.php:530
3849
+ msgid ""
3850
+ "Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% "
3851
+ "%PostType% titled %PostTitle%. %EditorLinkPost%."
3852
+ msgstr ""
3853
+
3854
+ #: defaults.php:531
3855
+ msgid "User changed the canonical URL of a SEO post"
3856
+ msgstr ""
3857
+
3858
+ #: defaults.php:531
3859
+ msgid ""
3860
+ "Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle%"
3861
+ "%ReportText%.%ChangeText% %EditorLinkPost%."
3862
+ msgstr ""
3863
+
3864
+ #: defaults.php:532
3865
+ msgid "User changed the focus keyword of a SEO post"
3866
+ msgstr ""
3867
+
3868
+ #: defaults.php:532
3869
+ msgid ""
3870
+ "Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% "
3871
+ "from %old_keywords% to %new_keywords%. %EditorLinkPost%."
3872
+ msgstr ""
3873
+
3874
+ #: defaults.php:533
3875
+ msgid "User Enabled/Disabled the option Cornerston Content of a SEO post"
3876
+ msgstr ""
3877
+
3878
+ #: defaults.php:533
3879
+ msgid ""
3880
+ "%Status% the option Cornerston Content on the %PostStatus% %PostType% titled "
3881
+ "%PostTitle%. %EditorLinkPost%."
3882
+ msgstr ""
3883
+
3884
+ #: defaults.php:534
3885
+ msgid "User changed the Title Separator setting"
3886
+ msgstr ""
3887
+
3888
+ #: defaults.php:534
3889
+ msgid ""
3890
+ "Changed the Title Separator from %old% to %new% in the Yoast SEO plugin "
3891
+ "settings."
3892
+ msgstr ""
3893
+
3894
+ #: defaults.php:535
3895
+ msgid "User changed the Homepage Title setting"
3896
+ msgstr ""
3897
+
3898
+ #: defaults.php:535
3899
+ msgid ""
3900
+ "Changed the Homepage Title%ReportText% in the Yoast SEO plugin settings."
3901
+ "%ChangeText%"
3902
+ msgstr ""
3903
+
3904
+ #: defaults.php:536
3905
+ msgid "User changed the Homepage Meta description setting"
3906
+ msgstr ""
3907
+
3908
+ #: defaults.php:536
3909
+ msgid ""
3910
+ "Changed the Homepage Meta description%ReportText% in the Yoast SEO plugin "
3911
+ "settings.%ChangeText%"
3912
+ msgstr ""
3913
+
3914
+ #: defaults.php:537
3915
+ msgid "User changed the Company or Person setting"
3916
+ msgstr ""
3917
+
3918
+ #: defaults.php:537
3919
+ msgid ""
3920
+ "Changed the Company or Person setting from %old% to %new% in the YOAST SEO "
3921
+ "plugin settings."
3922
+ msgstr ""
3923
+
3924
+ #: defaults.php:538
3925
+ msgid ""
3926
+ "User Enabled/Disabled the option Show Posts/Pages in Search Results in the "
3927
+ "Yoast SEO plugin settings"
3928
+ msgstr ""
3929
+
3930
+ #: defaults.php:538
3931
+ msgid ""
3932
+ "%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO "
3933
+ "plugin settings."
3934
+ msgstr ""
3935
+
3936
+ #: defaults.php:539
3937
+ msgid ""
3938
+ "User changed the Posts/Pages title template in the Yoast SEO plugin settings"
3939
+ msgstr ""
3940
+
3941
+ #: defaults.php:539
3942
+ msgid ""
3943
+ "Changed the %SEOPostType% title template from %old% to %new% in the Yoast "
3944
+ "SEO plugin settings."
3945
+ msgstr ""
3946
+
3947
+ #: defaults.php:540
3948
+ msgid "User Enabled/Disabled SEO analysis in the Yoast SEO plugin settings"
3949
+ msgstr ""
3950
+
3951
+ #: defaults.php:540
3952
+ msgid "%Status% SEO analysis in the Yoast SEO plugin settings."
3953
+ msgstr ""
3954
+
3955
+ #: defaults.php:541
3956
+ msgid ""
3957
+ "User Enabled/Disabled readability analysis in the Yoast SEO plugin settings"
3958
+ msgstr ""
3959
+
3960
+ #: defaults.php:541
3961
+ msgid "%Status% Readability analysis in the Yoast SEO plugin settings."
3962
+ msgstr ""
3963
+
3964
+ #: defaults.php:542
3965
+ msgid ""
3966
+ "User Enabled/Disabled cornerstone content in the Yoast SEO plugin settings"
3967
+ msgstr ""
3968
+
3969
+ #: defaults.php:542
3970
+ msgid "%Status% Cornerstone content in the Yoast SEO plugin settings."
3971
+ msgstr ""
3972
+
3973
+ #: defaults.php:543
3974
+ msgid ""
3975
+ "User Enabled/Disabled the text link counter in the Yoast SEO plugin settings"
3976
+ msgstr ""
3977
+
3978
+ #: defaults.php:543
3979
+ msgid "%Status% the Text link counter in the Yoast SEO plugin settings."
3980
+ msgstr ""
3981
+
3982
+ #: defaults.php:544
3983
+ msgid "User Enabled/Disabled XML sitemaps in the Yoast SEO plugin settings"
3984
+ msgstr ""
3985
+
3986
+ #: defaults.php:544
3987
+ msgid "%Status% XML Sitemaps in the Yoast SEO plugin settings."
3988
+ msgstr ""
3989
+
3990
+ #: defaults.php:545
3991
+ msgid "User Enabled/Disabled ryte integration in the Yoast SEO plugin settings"
3992
+ msgstr ""
3993
+
3994
+ #: defaults.php:545
3995
+ msgid "%Status% Ryte Integration in the Yoast SEO plugin settings."
3996
+ msgstr ""
3997
+
3998
+ #: defaults.php:546
3999
+ msgid ""
4000
+ "User Enabled/Disabled the admin bar menu in the Yoast SEO plugin settings"
4001
+ msgstr ""
4002
+
4003
+ #: defaults.php:546
4004
+ msgid "%Status% the Admin bar menu in the Yoast SEO plugin settings."
4005
+ msgstr ""
4006
+
4007
+ #: defaults.php:547
4008
+ msgid ""
4009
+ "User changed the Posts/Pages meta description template in the Yoast SEO "
4010
+ "plugin settings"
4011
+ msgstr ""
4012
+
4013
+ #: defaults.php:547
4014
+ msgid ""
4015
+ "Changed the %SEOPostType% meta description template from %old% to %new% in "
4016
+ "the Yoast SEO plugin settings."
4017
+ msgstr ""
4018
+
4019
+ #: defaults.php:548
4020
+ msgid ""
4021
+ "User set the option Date in Snippet Preview for Posts/Pages in the Yoast SEO "
4022
+ "plugin settings"
4023
+ msgstr ""
4024
+
4025
+ #: defaults.php:548
4026
+ msgid ""
4027
+ "%Status% the option Date in Snippet Preview for %SEOPostType% in the Yoast "
4028
+ "SEO plugin settings."
4029
+ msgstr ""
4030
+
4031
+ #: defaults.php:549
4032
+ msgid ""
4033
+ "User set the option Yoast SEO Meta Box for Posts/Pages in the Yoast SEO "
4034
+ "plugin settings"
4035
+ msgstr ""
4036
+
4037
+ #: defaults.php:549
4038
+ msgid ""
4039
+ "%Status% the option Yoast SEO Meta Box for %SEOPostType% in the Yoast SEO "
4040
+ "plugin settings."
4041
+ msgstr ""
4042
+
4043
+ #: defaults.php:550
4044
+ msgid ""
4045
+ "User Enabled/Disabled the advanced settings for authors in the Yoast SEO "
4046
+ "plugin settings"
4047
+ msgstr ""
4048
+
4049
+ #: defaults.php:550
4050
+ msgid "%Status% the advanced settings for authors in the Yoast SEO settings."
4051
+ msgstr ""
4052
+
4053
+ #: wp-security-audit-log.php:304 wp-security-audit-log.php:330
4054
+ #, php-format
4055
+ msgid "Hey %1$s"
4056
+ msgstr ""
4057
+
4058
+ #: wp-security-audit-log.php:305
4059
+ msgid ""
4060
+ "Never miss an important update! Opt-in to our security and feature updates "
4061
+ "notifications, and non-sensitive diagnostic tracking with freemius.com."
4062
+ msgstr ""
4063
+
4064
+ #: wp-security-audit-log.php:306 wp-security-audit-log.php:332
4065
+ msgid "Note: "
4066
+ msgstr ""
4067
+
4068
+ #: wp-security-audit-log.php:307 wp-security-audit-log.php:333
4069
+ msgid "NO AUDIT LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
4070
+ msgstr ""
4071
+
4072
+ #: wp-security-audit-log.php:331
4073
+ #, php-format
4074
+ msgid ""
4075
+ "Please help us improve %2$s! If you opt-in, some non-sensitive data about "
4076
+ "your usage of %2$s will be sent to %5$s, a diagnostic tracking service we "
4077
+ "use. If you skip this, that's okay! %2$s will still work just fine."
4078
+ msgstr ""
4079
+
4080
+ #: wp-security-audit-log.php:382
4081
+ msgid ""
4082
+ "Error: You do not have sufficient permissions to disable this custom field."
4083
+ msgstr ""
4084
+
4085
+ #: wp-security-audit-log.php:418
4086
+ msgid "Error: You do not have sufficient permissions to disable this alert."
4087
+ msgstr ""
4088
+
4089
+ #: wp-security-audit-log.php:530
4090
  #, php-format
4091
  msgid ""
4092
  "You are using a version of PHP that is older than %s, which is no longer "
4093
+ "supported."
4094
+ msgstr ""
4095
+
4096
+ #: wp-security-audit-log.php:531
4097
+ msgid ""
4098
+ "Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
4099
  "\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you "
4100
  "are using."
4101
  msgstr ""
readme.txt CHANGED
@@ -5,8 +5,8 @@ License: GPLv3
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: wordpress security plugin, wordpress security audit log, audit log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, dashboard, notification, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
7
  Requires at least: 3.6
8
- Tested up to: 4.9.4
9
- Stable tag: 3.1.6
10
  Requires PHP: 5.3
11
 
12
  An easy to use and comprehensive monitoring & activity log solution that keeps a log of all changes & user activity on your WordPress site.
@@ -179,9 +179,24 @@ Please refer to our [Support & Documentation pages](https://www.wpsecurityauditl
179
 
180
  == Changelog ==
181
 
182
- = 3.1.6(2018-04-16) =
183
 
184
- * **Bug fix**
185
- * Fixed an issue in the Freemius SDK - mutisite opt-in was not working.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
 
187
  Refer to the [WP Security Audit Log change log](https://www.wpsecurityauditlog.com/plugin-change-log/) page for the complete change log.
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: wordpress security plugin, wordpress security audit log, audit log, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, dashboard, notification, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
7
  Requires at least: 3.6
8
+ Tested up to: 4.9.5
9
+ Stable tag: 3.1.7
10
  Requires PHP: 5.3
11
 
12
  An easy to use and comprehensive monitoring & activity log solution that keeps a log of all changes & user activity on your WordPress site.
179
 
180
  == Changelog ==
181
 
182
+ = 3.1.7(2018-04-27) =
183
 
184
+ Release notes: [New Data Inspector and Buffer for External Database](https://www.wpsecurityauditlog.com/releases/3-1-7-new-data-inspector/)
185
+
186
+ * **New Features**
187
+ * New [data inspector in the WordPress activity log viewer](https://www.wpsecurityauditlog.com/support-documentation/data-inspector-wordpress-activity-log/).
188
+ * Alerts buffer for when the [external WordPress activity log database](https://www.wpsecurityauditlog.com/support-documentation/getting-started-external-db/) is unavailable. The alerts are stored in the WordPress database and website operations are not affected.
189
+ * Option in External Database settings to use WordPress URL as database table prefix.
190
+
191
+ * **Improvements**
192
+ * Alerts which contain long values are shortened in the viewer and logged in users list. User can view all details in the data inspector.
193
+ * Set the default setting for [blocking multiple WordPress users sessions](https://www.wpsecurityauditlog.com/support-documentation/managing-multiple-same-wordpress-user-sessions/#allow-override-terminate) to “do not allow override”.
194
+ * [WordPress login page notification](https://www.wpsecurityauditlog.com/support-documentation/change-disable-wordpress-login-page-notification/) is disabled by default.
195
+ * Converted the HTML [WordPress reports](https://www.wpsecurityauditlog.com/support-documentation/getting-started-reports-wordpress/) to responsive.
196
+ * Better support for changes users do via the Ultimate Member Pro plugin.
197
+
198
+ * **Bug Fixes**
199
+ * Plugin now records automated WooCommerce product stock changes done by plugins such as Bulk Stock Management
200
+ * Fixed a [reported performance issue](https://wordpress.org/support/topic/plugin-hangs-application-solved/). Now plugin audit log refreshes every 30 seconds.
201
 
202
  Refer to the [WP Security Audit Log change log](https://www.wpsecurityauditlog.com/plugin-change-log/) page for the complete change log.
wp-security-audit-log.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin URI: http://www.wpsecurityauditlog.com/
5
  * Description: Identify WordPress security issues before they become a problem. Keep track of everything happening on your WordPress including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log generates a security alert for everything that happens on your WordPress blogs and websites. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  * Author: WP White Security
7
- * Version: 3.1.6
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: http://www.wpsecurityauditlog.com/
10
  * License: GPL2
@@ -54,7 +54,7 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
54
  *
55
  * @var string
56
  */
57
- public $version = '3.1.6';
58
 
59
  // Plugin constants.
60
  const PLG_CLS_PRFX = 'WSAL_';
@@ -1113,14 +1113,13 @@ if ( ! function_exists( 'wsal_freemius' ) ) {
1113
  public function render_login_page_message( $message ) {
1114
  // Check if the option is enabled.
1115
  $login_message_enabled = $this->settings->is_login_page_notification();
1116
- if ( 'true' === $login_message_enabled
1117
- || ( ! $login_message_enabled && 'false' !== $login_message_enabled ) ) {
1118
  // Get login message.
1119
  $message = $this->settings->get_login_page_notification_text();
1120
 
1121
  // Default message.
1122
  if ( ! $message ) {
1123
- $message = wp_kses( __( '<p class="message">For security and auditing purposes, a record of all of your logged-in actions and changes within the WordPress dashboard will be recorded in an audit log with the <a href="https://www.wpsecurityauditlog.com/" target="_blank">WP Security Audit Log plugin</a>. The audit log also includes the IP address where you accessed this site from.</p>', 'wp-security-audit-log' ), $this->allowed_html_tags );
1124
  } else {
1125
  $message = '<p class="message">' . $message . '</p>';
1126
  }
4
  * Plugin URI: http://www.wpsecurityauditlog.com/
5
  * Description: Identify WordPress security issues before they become a problem. Keep track of everything happening on your WordPress including WordPress users activity. Similar to Windows Event Log and Linux Syslog, WP Security Audit Log generates a security alert for everything that happens on your WordPress blogs and websites. Use the Audit Log Viewer included in the plugin to see all the security alerts.
6
  * Author: WP White Security
7
+ * Version: 3.1.7
8
  * Text Domain: wp-security-audit-log
9
  * Author URI: http://www.wpsecurityauditlog.com/
10
  * License: GPL2
54
  *
55
  * @var string
56
  */
57
+ public $version = '3.1.7';
58
 
59
  // Plugin constants.
60
  const PLG_CLS_PRFX = 'WSAL_';
1113
  public function render_login_page_message( $message ) {
1114
  // Check if the option is enabled.
1115
  $login_message_enabled = $this->settings->is_login_page_notification();
1116
+ if ( 'true' === $login_message_enabled ) {
 
1117
  // Get login message.
1118
  $message = $this->settings->get_login_page_notification_text();
1119
 
1120
  // Default message.
1121
  if ( ! $message ) {
1122
+ $message = '<p class="message">' . wp_kses( __( 'For security and auditing purposes, a record of all of your logged-in actions and changes within the WordPress dashboard will be recorded in an audit log with the <a href="https://www.wpsecurityauditlog.com/" target="_blank">WP Security Audit Log plugin</a>. The audit log also includes the IP address where you accessed this site from.', 'wp-security-audit-log' ), $this->allowed_html_tags ) . '</p>';
1123
  } else {
1124
  $message = '<p class="message">' . $message . '</p>';
1125
  }