Simple History - Version 2.0.16

Version Description

(January 2015) =

  • Fixed: Use the X-Forwarded-For header, if it is set, to determine remote IP address. Should now correctly store IP addresses for servers behind load balancers or for clients going through proxies. Fixes https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr.
  • Changed: Failed login attempts from unknown and known users are now grouped together. This change was made because a hacker could make many login attempts to a site and rotate the logins, so they would try with both existing and non existing user names, which would make the log flood with failed login attempts.
  • Changed: use "n similar events" instead of "n more", to more cleary mark that the grouped events are not necessary exactly the same kind.
  • Changed: Quick stats text changed, to also include other sources. Previous behavior was to only include events from WordPress users, but now also events from anonymous users and WordPress (like from WP-Cron) are included.
Download this release

Release Info

Developer eskapism
Plugin Icon 128x128 Simple History
Version 2.0.16
Comparing to
See all releases

Code changes from version 2.0.15 to 2.0.16

SimpleHistory.php CHANGED
@@ -6,7 +6,7 @@
6
  class SimpleHistory {
7
 
8
  const NAME = "Simple History";
9
- const VERSION = "2.0.15";
10
 
11
  /**
12
  * Capability required to view the history log
@@ -1649,13 +1649,14 @@ class SimpleHistory {
1649
  // subsequentOccasions = including the current one
1650
  $occasions_count = $oneLogRow->subsequentOccasions - 1;
1651
  $occasions_html = "";
 
1652
  if ($occasions_count > 0) {
1653
 
1654
  $occasions_html = '<div class="SimpleHistoryLogitem__occasions">';
1655
 
1656
  $occasions_html .= '<a href="#" class="SimpleHistoryLogitem__occasionsLink">';
1657
  $occasions_html .= sprintf(
1658
- __('+%1$s more', "simple-history"),
1659
  $occasions_count
1660
  );
1661
  $occasions_html .= '</a>';
@@ -2080,7 +2081,10 @@ class SimpleHistory {
2080
  "date_from" => strtotime("today")
2081
  ));
2082
 
 
2083
  $sql_loggers_in = $this->getLoggersThatUserCanRead(get_current_user_id(), "sql");
 
 
2084
  $sql_users_today = sprintf('
2085
  SELECT
2086
  DISTINCT(c.value) AS user_id
@@ -2100,6 +2104,44 @@ class SimpleHistory {
2100
  );
2101
 
2102
  $results_users_today = $wpdb->get_results($sql_users_today);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2103
 
2104
  ?>
2105
  <div class="SimpleHistoryQuickStats">
@@ -2108,6 +2150,69 @@ class SimpleHistory {
2108
 
2109
  $msg_tmpl = "";
2110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2111
  if ( $logResults["total_row_count"] == 0 ) {
2112
 
2113
  $msg_tmpl = __("No events today so far.", "simple-history");
@@ -2125,14 +2230,16 @@ class SimpleHistory {
2125
  $msg_tmpl = __('%1$d events today from one user.', "simple-history");
2126
 
2127
  }
 
2128
 
2129
  // only show stats if we have something to output
2130
  if ( $msg_tmpl ) {
2131
 
2132
  printf(
2133
  $msg_tmpl,
2134
- $logResults["total_row_count"],
2135
- sizeof( $results_users_today )
 
2136
  );
2137
 
2138
  // Space between texts
6
  class SimpleHistory {
7
 
8
  const NAME = "Simple History";
9
+ const VERSION = "2.0.16";
10
 
11
  /**
12
  * Capability required to view the history log
1649
  // subsequentOccasions = including the current one
1650
  $occasions_count = $oneLogRow->subsequentOccasions - 1;
1651
  $occasions_html = "";
1652
+
1653
  if ($occasions_count > 0) {
1654
 
1655
  $occasions_html = '<div class="SimpleHistoryLogitem__occasions">';
1656
 
1657
  $occasions_html .= '<a href="#" class="SimpleHistoryLogitem__occasionsLink">';
1658
  $occasions_html .= sprintf(
1659
+ _n('+%1$s similar event', '+%1$s similar events', $occasions_count, "simple-history"),
1660
  $occasions_count
1661
  );
1662
  $occasions_html .= '</a>';
2081
  "date_from" => strtotime("today")
2082
  ));
2083
 
2084
+ // Get sql query for where to read only loggers current user is allowed to read/view
2085
  $sql_loggers_in = $this->getLoggersThatUserCanRead(get_current_user_id(), "sql");
2086
+
2087
+ // Get number of users today, i.e. events with wp_user as initiator
2088
  $sql_users_today = sprintf('
2089
  SELECT
2090
  DISTINCT(c.value) AS user_id
2104
  );
2105
 
2106
  $results_users_today = $wpdb->get_results($sql_users_today);
2107
+ $count_users_today = sizeof( $results_users_today );
2108
+
2109
+ // Get number of other sources (not wp_user)
2110
+ $sql_other_sources_where = sprintf(
2111
+ '
2112
+ initiator <> "wp_user"
2113
+ AND logger IN %1$s
2114
+ AND date > "%2$s"
2115
+ ',
2116
+ $sql_loggers_in,
2117
+ date("Y-m-d H:i", strtotime("today")),
2118
+ $wpdb->prefix . SimpleHistory::DBTABLE,
2119
+ $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS
2120
+ );
2121
+
2122
+ $sql_other_sources_where = apply_filters("simple_history/quick_stats_where", $sql_other_sources_where);
2123
+
2124
+ $sql_other_sources = sprintf('
2125
+ SELECT
2126
+ DISTINCT(h.initiator) AS initiator
2127
+ FROM %3$s AS h
2128
+ WHERE
2129
+ %5$s
2130
+ ',
2131
+ $sql_loggers_in,
2132
+ date("Y-m-d H:i", strtotime("today")),
2133
+ $wpdb->prefix . SimpleHistory::DBTABLE,
2134
+ $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS,
2135
+ $sql_other_sources_where // 5
2136
+ );
2137
+ // sf_d($sql_other_sources, '$sql_other_sources');
2138
+
2139
+ $results_other_sources_today = $wpdb->get_results($sql_other_sources);
2140
+ $count_other_sources = sizeof( $results_other_sources_today );
2141
+
2142
+ #sf_d($logResults, '$logResults');
2143
+ #sf_d($results_users_today, '$sql_users_today');
2144
+ #sf_d($results_other_sources_today, '$results_other_sources_today');
2145
 
2146
  ?>
2147
  <div class="SimpleHistoryQuickStats">
2150
 
2151
  $msg_tmpl = "";
2152
 
2153
+ // No results today at all
2154
+ if ( $logResults["total_row_count"] == 0 ) {
2155
+
2156
+ $msg_tmpl = __("No events today so far.", "simple-history");
2157
+
2158
+ } else {
2159
+
2160
+ /*
2161
+ Type of results
2162
+ x1 event today from 1 user.
2163
+ x1 event today from 1 source.
2164
+ x2 events today from 2 users.
2165
+ x2 events today from 1 user and 1 other source.
2166
+ x3 events today from 2 users and 1 other source.
2167
+ x3 events today from 1 user and 2 other sources.
2168
+ x4 events today from 2 users and 2 other sources.
2169
+ */
2170
+
2171
+ // A single event existed and was from a user
2172
+ // 1 event today from 1 user.
2173
+ if ( $logResults["total_row_count"] == 1 && $count_users_today ) {
2174
+ $msg_tmpl .= __('One event today from one user.', "simple-history");
2175
+ }
2176
+
2177
+ // A single event existed and was from another source
2178
+ // 1 event today from 1 source.
2179
+ if ( $logResults["total_row_count"] == 1 && ! $count_users_today ) {
2180
+ $msg_tmpl .= __('One event today from one source.', "simple-history");
2181
+ }
2182
+
2183
+ // Multiple events from only users
2184
+ // 2 events today from 2 users.
2185
+ if ( $logResults["total_row_count"] && $count_users_today == $logResults["total_row_count"] ) {
2186
+ $msg_tmpl .= __('%1$d events today from %2$d users.', "simple-history");
2187
+ }
2188
+
2189
+ // Multiple events from 1 single user and 1 single other source
2190
+ // 2 events today from 1 user and 1 other source.
2191
+ if ( $logResults["total_row_count"] && 1 == $count_users_today && 1 == $count_other_sources ) {
2192
+ $msg_tmpl .= __('%1$d events today from one user and one other source.', "simple-history");
2193
+ }
2194
+
2195
+ // Multiple events from multple users but from only 1 single other source
2196
+ // 3 events today from 2 users and 1 other source.
2197
+ if ( $logResults["total_row_count"] > 1 && $count_users_today > 1 && $count_other_sources == 1 ) {
2198
+ $msg_tmpl .= __('%1$d events today from one user and one other source.', "simple-history");
2199
+ }
2200
+
2201
+ // Multiple events from 1 user but from multiple other source
2202
+ // 3 events today from 1 user and 2 other sources.
2203
+ if ( $logResults["total_row_count"] > 1 && 1 == $count_users_today && $count_other_sources > 1 ) {
2204
+ $msg_tmpl .= __('%1$d events today from one user and %3$d other sources.', "simple-history");
2205
+ }
2206
+
2207
+ // Multiple events from multiple user and from multiple other sources
2208
+ // 4 events today from 2 users and 2 other sources.
2209
+ if ( $logResults["total_row_count"] && 1 == $count_users_today && $count_other_sources > 1 ) {
2210
+ $msg_tmpl .= __('%1$s events today from %2$d users and %3$d other sources.', "simple-history");
2211
+ }
2212
+
2213
+ }
2214
+
2215
+ /*
2216
  if ( $logResults["total_row_count"] == 0 ) {
2217
 
2218
  $msg_tmpl = __("No events today so far.", "simple-history");
2230
  $msg_tmpl = __('%1$d events today from one user.', "simple-history");
2231
 
2232
  }
2233
+ */
2234
 
2235
  // only show stats if we have something to output
2236
  if ( $msg_tmpl ) {
2237
 
2238
  printf(
2239
  $msg_tmpl,
2240
+ $logResults["total_row_count"], // 1
2241
+ $count_users_today, // 2
2242
+ $count_other_sources // 3
2243
  );
2244
 
2245
  // Space between texts
dropins/SimpleHistoryFilterDropin.css CHANGED
@@ -1,13 +1,20 @@
1
 
2
- /*.SimpleHistory__filters {
3
 
4
- }*/
 
 
 
 
 
 
 
5
 
6
  .SimpleHistory__filters__form select {
7
  width: 100%;
8
  }
9
 
10
- .SimpleHistory__filters__form input[type=text],
11
  .SimpleHistory__filters__form input[type=search] {
12
  width: 100%;
13
  }
@@ -34,4 +41,3 @@
34
  .SimpleHistory__filters__userfilter__gravatar {
35
  margin-right: 10px;
36
  }
37
-
1
 
2
+ .SimpleHistory__filters {
3
 
4
+ float: right;
5
+ width: 300px;
6
+ margin-right: -340px;
7
+
8
+ /* hide by default while log is loading */
9
+ opacity: 0;
10
+
11
+ }
12
 
13
  .SimpleHistory__filters__form select {
14
  width: 100%;
15
  }
16
 
17
+ .SimpleHistory__filters__form input[type=text],
18
  .SimpleHistory__filters__form input[type=search] {
19
  width: 100%;
20
  }
41
  .SimpleHistory__filters__userfilter__gravatar {
42
  margin-right: 10px;
43
  }
 
index.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Simple History
4
  Plugin URI: http://simple-history.com
5
  Description: Plugin that logs various things that occur in WordPress and then presents those events in a very nice GUI.
6
- Version: 2.0.15
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
@@ -25,6 +25,10 @@ License: GPL2
25
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  */
27
 
 
 
 
 
28
  if ( version_compare( phpversion(), "5.3", ">=") ) {
29
 
30
  /** Load required files */
3
  Plugin Name: Simple History
4
  Plugin URI: http://simple-history.com
5
  Description: Plugin that logs various things that occur in WordPress and then presents those events in a very nice GUI.
6
+ Version: 2.0.16
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
25
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  */
27
 
28
+ if ( ! defined( 'WPINC' ) ) {
29
+ die;
30
+ }
31
+
32
  if ( version_compare( phpversion(), "5.3", ">=") ) {
33
 
34
  /** Load required files */
languages/simple-history-sv_SE.mo CHANGED
Binary file
languages/simple-history-sv_SE.po CHANGED
@@ -4,15 +4,15 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Simple History 2\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
- "POT-Creation-Date: 2015-01-06 18:26:23+00:00\n"
8
- "PO-Revision-Date: 2015-01-06 19:28+0100\n"
9
  "Last-Translator: Pär Thernström <par.thernstrom@gmail.com>\n"
10
  "Language-Team: \n"
11
  "Language: sv\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Poedit 1.7.1\n"
16
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
17
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
18
  "esc_html_x:1,2c\n"
@@ -115,41 +115,55 @@ msgstr "Händelser i databasen lagras för evigt."
115
  msgid "Clear log now"
116
  msgstr "Rensa loggen nu"
117
 
118
- #: SimpleHistory.php:1658
119
- msgid "+%1$s more"
120
- msgstr "+%1$s fler"
 
 
121
 
122
- #: SimpleHistory.php:1665
123
  msgid "Loading…"
124
  msgstr "Laddar historik..."
125
 
126
- #: SimpleHistory.php:1672
127
  msgid "Showing %1$s more"
128
  msgstr "+%1$s fler"
129
 
130
- #: SimpleHistory.php:1691
131
  msgid "Context data"
132
  msgstr "Kontextuell data"
133
 
134
- #: SimpleHistory.php:1692
135
  msgid "This is potentially useful meta data that a logger has saved."
136
  msgstr "Detta eventuellt användbar metadata som en logger har sparat."
137
 
138
- #: SimpleHistory.php:2113
139
  msgid "No events today so far."
140
  msgstr "Inga händelser idag ännu."
141
 
142
- #: SimpleHistory.php:2117
143
- msgid "%1$d event today from one user."
144
- msgstr "%1$d händelse idag från en användare."
145
 
146
- #: SimpleHistory.php:2121
 
 
 
 
147
  msgid "%1$d events today from %2$d users."
148
  msgstr "%1$d händelser idag från %2$d användare."
149
 
150
- #: SimpleHistory.php:2125
151
- msgid "%1$d events today from one user."
152
- msgstr "%1$d händelser idag från en användare."
 
 
 
 
 
 
 
 
153
 
154
  #: dropins/SimpleHistoryDonateDropin.php:36
155
  msgid "Donate"
@@ -167,6 +181,10 @@ msgstr ""
167
  msgid "Filter history"
168
  msgstr "Filtrera historik"
169
 
 
 
 
 
170
  #: dropins/SimpleHistoryFilterDropin.php:50
171
  msgid "All log levels"
172
  msgstr "Alla loggnivåer"
@@ -271,27 +289,27 @@ msgstr ""
271
  "Simple History är en rackarns bra plugin, men för att använda den måste din "
272
  "server ha minst PHP 5.3 installerat (du har version %s)."
273
 
274
- #: loggers/SimpleCommentsLogger.php:694
275
  msgid "Spam"
276
  msgstr "Skräp"
277
 
278
- #: loggers/SimpleCommentsLogger.php:696
279
  msgid "Approved"
280
  msgstr "Godkänd"
281
 
282
- #: loggers/SimpleCommentsLogger.php:698
283
  msgid "Pending"
284
  msgstr "Väntande"
285
 
286
- #: loggers/SimpleCommentsLogger.php:712
287
  msgid "Trackback"
288
  msgstr "Trackback"
289
 
290
- #: loggers/SimpleCommentsLogger.php:714
291
  msgid "Pingback"
292
  msgstr "Pingback"
293
 
294
- #: loggers/SimpleCommentsLogger.php:716
295
  msgid "Comment"
296
  msgstr "Kommentar"
297
 
@@ -643,82 +661,82 @@ msgctxt "history page headline"
643
  msgid "Simple History"
644
  msgstr "Simple History"
645
 
646
- #: SimpleHistory.php:1828
647
  msgctxt "Log level in gui"
648
  msgid "emergency"
649
  msgstr "kritiskt"
650
 
651
- #: SimpleHistory.php:1832
652
  msgctxt "Log level in gui"
653
  msgid "alert"
654
  msgstr "alert"
655
 
656
- #: SimpleHistory.php:1836
657
  msgctxt "Log level in gui"
658
  msgid "critical"
659
  msgstr "kritiskt"
660
 
661
- #: SimpleHistory.php:1840
662
  msgctxt "Log level in gui"
663
  msgid "error"
664
  msgstr "error"
665
 
666
- #: SimpleHistory.php:1844
667
  msgctxt "Log level in gui"
668
  msgid "warning"
669
  msgstr "warning"
670
 
671
- #: SimpleHistory.php:1848
672
  msgctxt "Log level in gui"
673
  msgid "notice"
674
  msgstr "notice"
675
 
676
- #: SimpleHistory.php:1852
677
  msgctxt "Log level in gui"
678
  msgid "info"
679
  msgstr "info"
680
 
681
- #: SimpleHistory.php:1856
682
  msgctxt "Log level in gui"
683
  msgid "debug"
684
  msgstr "debug"
685
 
686
- #: SimpleHistory.php:1861
687
  msgctxt "Log level in gui"
688
  msgid "Emergency"
689
  msgstr "Emergency"
690
 
691
- #: SimpleHistory.php:1865
692
  msgctxt "Log level in gui"
693
  msgid "Alert"
694
  msgstr "Alert"
695
 
696
- #: SimpleHistory.php:1869
697
  msgctxt "Log level in gui"
698
  msgid "Critical"
699
  msgstr "Critical"
700
 
701
- #: SimpleHistory.php:1873
702
  msgctxt "Log level in gui"
703
  msgid "Error"
704
  msgstr "Error"
705
 
706
- #: SimpleHistory.php:1877
707
  msgctxt "Log level in gui"
708
  msgid "Warning"
709
  msgstr "Warning"
710
 
711
- #: SimpleHistory.php:1881
712
  msgctxt "Log level in gui"
713
  msgid "Notice"
714
  msgstr "Notice"
715
 
716
- #: SimpleHistory.php:1885
717
  msgctxt "Log level in gui"
718
  msgid "Info"
719
  msgstr "Info"
720
 
721
- #: SimpleHistory.php:1889
722
  msgctxt "Log level in gui"
723
  msgid "Debug"
724
  msgstr "Debug"
@@ -779,19 +797,19 @@ msgctxt "rss settings headline"
779
  msgid "RSS feed"
780
  msgstr "RSS-flöde"
781
 
782
- #: loggers/SimpleCommentsLogger.php:94
783
  msgctxt "A comment was added to the database by a non-logged in internet user"
784
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
785
  msgstr ""
786
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
787
 
788
- #: loggers/SimpleCommentsLogger.php:100
789
  msgctxt "A comment was added to the database by a logged in user"
790
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
791
  msgstr ""
792
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
793
 
794
- #: loggers/SimpleCommentsLogger.php:106
795
  msgctxt "A comment was approved"
796
  msgid ""
797
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -800,7 +818,7 @@ msgstr ""
800
  "Godkände en kommentar till \"{comment_post_title}\" av {comment_author} "
801
  "({comment_author_email})"
802
 
803
- #: loggers/SimpleCommentsLogger.php:112
804
  msgctxt "A comment was was unapproved"
805
  msgid ""
806
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -809,12 +827,12 @@ msgstr ""
809
  "Godkände inte en kommentar till \"{comment_post_title}\" av {comment_author} "
810
  "({comment_author_email})"
811
 
812
- #: loggers/SimpleCommentsLogger.php:118
813
  msgctxt "A comment was marked as spam"
814
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
815
  msgstr "Markerade en kommentar till \"{comment_post_title}\" som spam"
816
 
817
- #: loggers/SimpleCommentsLogger.php:124
818
  msgctxt "A comment was marked moved to the trash"
819
  msgid ""
820
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
@@ -823,7 +841,7 @@ msgstr ""
823
  "Kastade en kommentar till \"{comment_post_title}\" av {comment_author} "
824
  "({comment_author_email}) i papperskorgen"
825
 
826
- #: loggers/SimpleCommentsLogger.php:130
827
  msgctxt "A comment was restored from the trash"
828
  msgid ""
829
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
@@ -832,7 +850,7 @@ msgstr ""
832
  "Återställde en kommentar till \"{comment_post_title}\" av {comment_author} "
833
  "({comment_author_email}) från papperskorgen"
834
 
835
- #: loggers/SimpleCommentsLogger.php:136
836
  msgctxt "A comment was deleted"
837
  msgid ""
838
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
@@ -841,7 +859,7 @@ msgstr ""
841
  "Raderade en kommentar kommentar till \"{comment_post_title}\" av "
842
  "{comment_author} ({comment_author_email})"
843
 
844
- #: loggers/SimpleCommentsLogger.php:142
845
  msgctxt "A comment was edited"
846
  msgid ""
847
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
@@ -850,24 +868,24 @@ msgstr ""
850
  "Redigerade en kommentar till \"{comment_post_title}\" av {comment_author} "
851
  "({comment_author_email})"
852
 
853
- #: loggers/SimpleCommentsLogger.php:149
854
  msgctxt "A trackback was added to the database by a non-logged in internet user"
855
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
856
  msgstr ""
857
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
858
 
859
- #: loggers/SimpleCommentsLogger.php:204
860
  msgctxt "A trackback was added to the database by a non-logged in internet user"
861
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
862
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
863
 
864
- #: loggers/SimpleCommentsLogger.php:155
865
  msgctxt "A trackback was added to the database by a logged in user"
866
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
867
  msgstr ""
868
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
869
 
870
- #: loggers/SimpleCommentsLogger.php:161
871
  msgctxt "A trackback was approved"
872
  msgid ""
873
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -876,7 +894,7 @@ msgstr ""
876
  "Godkände en trackback till \"{comment_post_title}\" av {comment_author} "
877
  "({comment_author_email})"
878
 
879
- #: loggers/SimpleCommentsLogger.php:167
880
  msgctxt "A trackback was was unapproved"
881
  msgid ""
882
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -885,12 +903,12 @@ msgstr ""
885
  "Godkände inte en trackback till \"{comment_post_title}\" av {comment_author} "
886
  "({comment_author_email})"
887
 
888
- #: loggers/SimpleCommentsLogger.php:173
889
  msgctxt "A trackback was marked as spam"
890
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
891
  msgstr "Markerade en trackback till \"{comment_post_title}\" som spam"
892
 
893
- #: loggers/SimpleCommentsLogger.php:179
894
  msgctxt "A trackback was marked moved to the trash"
895
  msgid ""
896
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -899,7 +917,7 @@ msgstr ""
899
  "Kastade en trackback till \"{comment_post_title}\" av {comment_author} "
900
  "({comment_author_email}) i papperskorgen"
901
 
902
- #: loggers/SimpleCommentsLogger.php:185
903
  msgctxt "A trackback was restored from the trash"
904
  msgid ""
905
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -908,7 +926,7 @@ msgstr ""
908
  "Återställde en trackback till \"{comment_post_title}\" av {comment_author} "
909
  "({comment_author_email}) från papperskorgen"
910
 
911
- #: loggers/SimpleCommentsLogger.php:191
912
  msgctxt "A trackback was deleted"
913
  msgid ""
914
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -917,7 +935,7 @@ msgstr ""
917
  "Raderade en trackback till \"{comment_post_title}\" av {comment_author} "
918
  "({comment_author_email})"
919
 
920
- #: loggers/SimpleCommentsLogger.php:197
921
  msgctxt "A trackback was edited"
922
  msgid ""
923
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -926,12 +944,12 @@ msgstr ""
926
  "Redigerade en trackback till \"{comment_post_title}\" av {comment_author} "
927
  "({comment_author_email})"
928
 
929
- #: loggers/SimpleCommentsLogger.php:210
930
  msgctxt "A pingback was added to the database by a logged in user"
931
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
932
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
933
 
934
- #: loggers/SimpleCommentsLogger.php:216
935
  msgctxt "A pingback was approved"
936
  msgid ""
937
  "Approved a pingback to \"{comment_post_title}\" by "
@@ -940,7 +958,7 @@ msgstr ""
940
  "Godkände en pingback till \"{comment_post_title}\" av {comment_author} "
941
  "({comment_author_email}) från papperskorgen"
942
 
943
- #: loggers/SimpleCommentsLogger.php:222
944
  msgctxt "A pingback was was unapproved"
945
  msgid ""
946
  "Unapproved a pingback to \"{comment_post_title}\" by "
@@ -949,12 +967,12 @@ msgstr ""
949
  "Ångrade godkännande av en pingack till \"{comment_post_title}\" av "
950
  "{comment_author} ({comment_author_email})"
951
 
952
- #: loggers/SimpleCommentsLogger.php:228
953
  msgctxt "A pingback was marked as spam"
954
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
955
  msgstr "Markerade en pingback till \"{comment_post_title}\" som spam"
956
 
957
- #: loggers/SimpleCommentsLogger.php:234
958
  msgctxt "A pingback was marked moved to the trash"
959
  msgid ""
960
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -963,7 +981,7 @@ msgstr ""
963
  "Kastade en pingback till \"{comment_post_title}\" av {comment_author} "
964
  "({comment_author_email}) i papperskorgen"
965
 
966
- #: loggers/SimpleCommentsLogger.php:240
967
  msgctxt "A pingback was restored from the trash"
968
  msgid ""
969
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -972,7 +990,7 @@ msgstr ""
972
  "Ångrade godkännandet av en kommentar till \"{comment_post_title}\" av "
973
  "{comment_author} ({comment_author_email})"
974
 
975
- #: loggers/SimpleCommentsLogger.php:246
976
  msgctxt "A pingback was deleted"
977
  msgid ""
978
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -981,7 +999,7 @@ msgstr ""
981
  "Raderade en pingback till \"{comment_post_title}\" av {comment_author} "
982
  "({comment_author_email})"
983
 
984
- #: loggers/SimpleCommentsLogger.php:252
985
  msgctxt "A pingback was edited"
986
  msgid ""
987
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -990,85 +1008,85 @@ msgstr ""
990
  "Redigerade en pingback till \"{comment_post_title}\" av {comment_author} "
991
  "({comment_author_email})"
992
 
993
- #: loggers/SimpleCommentsLogger.php:263
994
  msgctxt "Comments logger: search"
995
  msgid "Comments"
996
  msgstr "Kommentarer"
997
 
998
- #: loggers/SimpleCommentsLogger.php:264
999
  msgctxt "Comments logger: search"
1000
  msgid "All comments activity"
1001
  msgstr "Alla kommentarshändelser"
1002
 
1003
- #: loggers/SimpleCommentsLogger.php:266
1004
  msgctxt "Comments logger: search"
1005
  msgid "Added comments"
1006
  msgstr "Tillagda kommentarer"
1007
 
1008
- #: loggers/SimpleCommentsLogger.php:274
1009
  msgctxt "Comments logger: search"
1010
  msgid "Edited comments"
1011
  msgstr "Redigerade kommentarer"
1012
 
1013
- #: loggers/SimpleCommentsLogger.php:279
1014
  msgctxt "Comments logger: search"
1015
  msgid "Approved comments"
1016
  msgstr "Godkända kommentarer"
1017
 
1018
- #: loggers/SimpleCommentsLogger.php:284
1019
  msgctxt "Comments logger: search"
1020
  msgid "Held comments"
1021
  msgstr "Tillbakahållna kommentar"
1022
 
1023
- #: loggers/SimpleCommentsLogger.php:289
1024
  msgctxt "Comments logger: search"
1025
  msgid "Comments status changed to spam"
1026
  msgstr "Status på kommentar ändrad till spam"
1027
 
1028
- #: loggers/SimpleCommentsLogger.php:294
1029
  msgctxt "Comments logger: search"
1030
  msgid "Trashed comments"
1031
  msgstr "Kastade kommentarer"
1032
 
1033
- #: loggers/SimpleCommentsLogger.php:299
1034
  msgctxt "Comments logger: search"
1035
  msgid "Untrashed comments"
1036
  msgstr "Kommentarer tillbakatagna från papperskorgen"
1037
 
1038
- #: loggers/SimpleCommentsLogger.php:304
1039
  msgctxt "Comments logger: search"
1040
  msgid "Deleted comments"
1041
  msgstr "Borttagna kommentarer"
1042
 
1043
- #: loggers/SimpleCommentsLogger.php:611 loggers/SimpleCommentsLogger.php:624
1044
- #: loggers/SimpleCommentsLogger.php:638
1045
  msgctxt "comments logger - detailed output comment status"
1046
  msgid "Status"
1047
  msgstr "Status"
1048
 
1049
- #: loggers/SimpleCommentsLogger.php:613 loggers/SimpleCommentsLogger.php:626
1050
- #: loggers/SimpleCommentsLogger.php:640
1051
  msgctxt "comments logger - detailed output author"
1052
  msgid "Name"
1053
  msgstr "Namn"
1054
 
1055
- #: loggers/SimpleCommentsLogger.php:614 loggers/SimpleCommentsLogger.php:627
1056
- #: loggers/SimpleCommentsLogger.php:641
1057
  msgctxt "comments logger - detailed output email"
1058
  msgid "Email"
1059
  msgstr "E-post"
1060
 
1061
- #: loggers/SimpleCommentsLogger.php:615 loggers/SimpleCommentsLogger.php:628
1062
  msgctxt "comments logger - detailed output content"
1063
  msgid "Content"
1064
  msgstr "Innehåll"
1065
 
1066
- #: loggers/SimpleCommentsLogger.php:642
1067
  msgctxt "comments logger - detailed output content"
1068
  msgid "Comment"
1069
  msgstr "Kommentar"
1070
 
1071
- #: loggers/SimpleCommentsLogger.php:768
1072
  msgctxt "comments logger - edit comment"
1073
  msgid "View/Edit"
1074
  msgstr "Visa/Redigera"
@@ -1430,6 +1448,9 @@ msgctxt "stats: date in rows per day chart"
1430
  msgid "M j"
1431
  msgstr "M j"
1432
 
 
 
 
1433
  #~ msgid "History"
1434
  #~ msgstr "Historik"
1435
 
4
  msgstr ""
5
  "Project-Id-Version: Simple History 2\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
+ "POT-Creation-Date: 2015-01-11 15:18:18+00:00\n"
8
+ "PO-Revision-Date: 2015-01-11 16:18+0100\n"
9
  "Last-Translator: Pär Thernström <par.thernstrom@gmail.com>\n"
10
  "Language-Team: \n"
11
  "Language: sv\n"
12
  "MIME-Version: 1.0\n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Generator: Poedit 1.7.3\n"
16
  "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
17
  "_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
18
  "esc_html_x:1,2c\n"
115
  msgid "Clear log now"
116
  msgstr "Rensa loggen nu"
117
 
118
+ #: SimpleHistory.php:1659
119
+ msgid "+%1$s similar event"
120
+ msgid_plural "+%1$s similar events"
121
+ msgstr[0] "+%1$s liknande händelse"
122
+ msgstr[1] "+%1$s liknande händelser"
123
 
124
+ #: SimpleHistory.php:1666
125
  msgid "Loading…"
126
  msgstr "Laddar historik..."
127
 
128
+ #: SimpleHistory.php:1673
129
  msgid "Showing %1$s more"
130
  msgstr "+%1$s fler"
131
 
132
+ #: SimpleHistory.php:1692
133
  msgid "Context data"
134
  msgstr "Kontextuell data"
135
 
136
+ #: SimpleHistory.php:1693
137
  msgid "This is potentially useful meta data that a logger has saved."
138
  msgstr "Detta eventuellt användbar metadata som en logger har sparat."
139
 
140
+ #: SimpleHistory.php:2156
141
  msgid "No events today so far."
142
  msgstr "Inga händelser idag ännu."
143
 
144
+ #: SimpleHistory.php:2174
145
+ msgid "One event today from one user."
146
+ msgstr "En händelse idag från en användare."
147
 
148
+ #: SimpleHistory.php:2180
149
+ msgid "One event today from one source."
150
+ msgstr "En händelse idag från en källa."
151
+
152
+ #: SimpleHistory.php:2186
153
  msgid "%1$d events today from %2$d users."
154
  msgstr "%1$d händelser idag från %2$d användare."
155
 
156
+ #: SimpleHistory.php:2192 SimpleHistory.php:2198
157
+ msgid "%1$d events today from one user and one other source."
158
+ msgstr "%1$d händelser idag från en användare och från en annan källa."
159
+
160
+ #: SimpleHistory.php:2204
161
+ msgid "%1$d events today from one user and %3$d other sources."
162
+ msgstr "%1$d händelser idag från en användare och från %3$d andra källor."
163
+
164
+ #: SimpleHistory.php:2210
165
+ msgid "%1$s events today from %2$d users and %3$d other sources."
166
+ msgstr "%1$s händelser idag från %2$d användare och %3$d andra källor."
167
 
168
  #: dropins/SimpleHistoryDonateDropin.php:36
169
  msgid "Donate"
181
  msgid "Filter history"
182
  msgstr "Filtrera historik"
183
 
184
+ #: dropins/SimpleHistoryFilterDropin.php:46
185
+ msgid "Search"
186
+ msgstr "Sök"
187
+
188
  #: dropins/SimpleHistoryFilterDropin.php:50
189
  msgid "All log levels"
190
  msgstr "Alla loggnivåer"
289
  "Simple History är en rackarns bra plugin, men för att använda den måste din "
290
  "server ha minst PHP 5.3 installerat (du har version %s)."
291
 
292
+ #: loggers/SimpleCommentsLogger.php:695
293
  msgid "Spam"
294
  msgstr "Skräp"
295
 
296
+ #: loggers/SimpleCommentsLogger.php:697
297
  msgid "Approved"
298
  msgstr "Godkänd"
299
 
300
+ #: loggers/SimpleCommentsLogger.php:699
301
  msgid "Pending"
302
  msgstr "Väntande"
303
 
304
+ #: loggers/SimpleCommentsLogger.php:713
305
  msgid "Trackback"
306
  msgstr "Trackback"
307
 
308
+ #: loggers/SimpleCommentsLogger.php:715
309
  msgid "Pingback"
310
  msgstr "Pingback"
311
 
312
+ #: loggers/SimpleCommentsLogger.php:717
313
  msgid "Comment"
314
  msgstr "Kommentar"
315
 
661
  msgid "Simple History"
662
  msgstr "Simple History"
663
 
664
+ #: SimpleHistory.php:1829
665
  msgctxt "Log level in gui"
666
  msgid "emergency"
667
  msgstr "kritiskt"
668
 
669
+ #: SimpleHistory.php:1833
670
  msgctxt "Log level in gui"
671
  msgid "alert"
672
  msgstr "alert"
673
 
674
+ #: SimpleHistory.php:1837
675
  msgctxt "Log level in gui"
676
  msgid "critical"
677
  msgstr "kritiskt"
678
 
679
+ #: SimpleHistory.php:1841
680
  msgctxt "Log level in gui"
681
  msgid "error"
682
  msgstr "error"
683
 
684
+ #: SimpleHistory.php:1845
685
  msgctxt "Log level in gui"
686
  msgid "warning"
687
  msgstr "warning"
688
 
689
+ #: SimpleHistory.php:1849
690
  msgctxt "Log level in gui"
691
  msgid "notice"
692
  msgstr "notice"
693
 
694
+ #: SimpleHistory.php:1853
695
  msgctxt "Log level in gui"
696
  msgid "info"
697
  msgstr "info"
698
 
699
+ #: SimpleHistory.php:1857
700
  msgctxt "Log level in gui"
701
  msgid "debug"
702
  msgstr "debug"
703
 
704
+ #: SimpleHistory.php:1862
705
  msgctxt "Log level in gui"
706
  msgid "Emergency"
707
  msgstr "Emergency"
708
 
709
+ #: SimpleHistory.php:1866
710
  msgctxt "Log level in gui"
711
  msgid "Alert"
712
  msgstr "Alert"
713
 
714
+ #: SimpleHistory.php:1870
715
  msgctxt "Log level in gui"
716
  msgid "Critical"
717
  msgstr "Critical"
718
 
719
+ #: SimpleHistory.php:1874
720
  msgctxt "Log level in gui"
721
  msgid "Error"
722
  msgstr "Error"
723
 
724
+ #: SimpleHistory.php:1878
725
  msgctxt "Log level in gui"
726
  msgid "Warning"
727
  msgstr "Warning"
728
 
729
+ #: SimpleHistory.php:1882
730
  msgctxt "Log level in gui"
731
  msgid "Notice"
732
  msgstr "Notice"
733
 
734
+ #: SimpleHistory.php:1886
735
  msgctxt "Log level in gui"
736
  msgid "Info"
737
  msgstr "Info"
738
 
739
+ #: SimpleHistory.php:1890
740
  msgctxt "Log level in gui"
741
  msgid "Debug"
742
  msgstr "Debug"
797
  msgid "RSS feed"
798
  msgstr "RSS-flöde"
799
 
800
+ #: loggers/SimpleCommentsLogger.php:95
801
  msgctxt "A comment was added to the database by a non-logged in internet user"
802
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
803
  msgstr ""
804
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
805
 
806
+ #: loggers/SimpleCommentsLogger.php:101
807
  msgctxt "A comment was added to the database by a logged in user"
808
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
809
  msgstr ""
810
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
811
 
812
+ #: loggers/SimpleCommentsLogger.php:107
813
  msgctxt "A comment was approved"
814
  msgid ""
815
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
818
  "Godkände en kommentar till \"{comment_post_title}\" av {comment_author} "
819
  "({comment_author_email})"
820
 
821
+ #: loggers/SimpleCommentsLogger.php:113
822
  msgctxt "A comment was was unapproved"
823
  msgid ""
824
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
827
  "Godkände inte en kommentar till \"{comment_post_title}\" av {comment_author} "
828
  "({comment_author_email})"
829
 
830
+ #: loggers/SimpleCommentsLogger.php:119
831
  msgctxt "A comment was marked as spam"
832
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
833
  msgstr "Markerade en kommentar till \"{comment_post_title}\" som spam"
834
 
835
+ #: loggers/SimpleCommentsLogger.php:125
836
  msgctxt "A comment was marked moved to the trash"
837
  msgid ""
838
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
841
  "Kastade en kommentar till \"{comment_post_title}\" av {comment_author} "
842
  "({comment_author_email}) i papperskorgen"
843
 
844
+ #: loggers/SimpleCommentsLogger.php:131
845
  msgctxt "A comment was restored from the trash"
846
  msgid ""
847
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
850
  "Återställde en kommentar till \"{comment_post_title}\" av {comment_author} "
851
  "({comment_author_email}) från papperskorgen"
852
 
853
+ #: loggers/SimpleCommentsLogger.php:137
854
  msgctxt "A comment was deleted"
855
  msgid ""
856
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
859
  "Raderade en kommentar kommentar till \"{comment_post_title}\" av "
860
  "{comment_author} ({comment_author_email})"
861
 
862
+ #: loggers/SimpleCommentsLogger.php:143
863
  msgctxt "A comment was edited"
864
  msgid ""
865
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
868
  "Redigerade en kommentar till \"{comment_post_title}\" av {comment_author} "
869
  "({comment_author_email})"
870
 
871
+ #: loggers/SimpleCommentsLogger.php:150
872
  msgctxt "A trackback was added to the database by a non-logged in internet user"
873
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
874
  msgstr ""
875
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
876
 
877
+ #: loggers/SimpleCommentsLogger.php:205
878
  msgctxt "A trackback was added to the database by a non-logged in internet user"
879
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
880
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
881
 
882
+ #: loggers/SimpleCommentsLogger.php:156
883
  msgctxt "A trackback was added to the database by a logged in user"
884
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
885
  msgstr ""
886
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
887
 
888
+ #: loggers/SimpleCommentsLogger.php:162
889
  msgctxt "A trackback was approved"
890
  msgid ""
891
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
894
  "Godkände en trackback till \"{comment_post_title}\" av {comment_author} "
895
  "({comment_author_email})"
896
 
897
+ #: loggers/SimpleCommentsLogger.php:168
898
  msgctxt "A trackback was was unapproved"
899
  msgid ""
900
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
903
  "Godkände inte en trackback till \"{comment_post_title}\" av {comment_author} "
904
  "({comment_author_email})"
905
 
906
+ #: loggers/SimpleCommentsLogger.php:174
907
  msgctxt "A trackback was marked as spam"
908
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
909
  msgstr "Markerade en trackback till \"{comment_post_title}\" som spam"
910
 
911
+ #: loggers/SimpleCommentsLogger.php:180
912
  msgctxt "A trackback was marked moved to the trash"
913
  msgid ""
914
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
917
  "Kastade en trackback till \"{comment_post_title}\" av {comment_author} "
918
  "({comment_author_email}) i papperskorgen"
919
 
920
+ #: loggers/SimpleCommentsLogger.php:186
921
  msgctxt "A trackback was restored from the trash"
922
  msgid ""
923
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
926
  "Återställde en trackback till \"{comment_post_title}\" av {comment_author} "
927
  "({comment_author_email}) från papperskorgen"
928
 
929
+ #: loggers/SimpleCommentsLogger.php:192
930
  msgctxt "A trackback was deleted"
931
  msgid ""
932
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
935
  "Raderade en trackback till \"{comment_post_title}\" av {comment_author} "
936
  "({comment_author_email})"
937
 
938
+ #: loggers/SimpleCommentsLogger.php:198
939
  msgctxt "A trackback was edited"
940
  msgid ""
941
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
944
  "Redigerade en trackback till \"{comment_post_title}\" av {comment_author} "
945
  "({comment_author_email})"
946
 
947
+ #: loggers/SimpleCommentsLogger.php:211
948
  msgctxt "A pingback was added to the database by a logged in user"
949
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
950
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
951
 
952
+ #: loggers/SimpleCommentsLogger.php:217
953
  msgctxt "A pingback was approved"
954
  msgid ""
955
  "Approved a pingback to \"{comment_post_title}\" by "
958
  "Godkände en pingback till \"{comment_post_title}\" av {comment_author} "
959
  "({comment_author_email}) från papperskorgen"
960
 
961
+ #: loggers/SimpleCommentsLogger.php:223
962
  msgctxt "A pingback was was unapproved"
963
  msgid ""
964
  "Unapproved a pingback to \"{comment_post_title}\" by "
967
  "Ångrade godkännande av en pingack till \"{comment_post_title}\" av "
968
  "{comment_author} ({comment_author_email})"
969
 
970
+ #: loggers/SimpleCommentsLogger.php:229
971
  msgctxt "A pingback was marked as spam"
972
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
973
  msgstr "Markerade en pingback till \"{comment_post_title}\" som spam"
974
 
975
+ #: loggers/SimpleCommentsLogger.php:235
976
  msgctxt "A pingback was marked moved to the trash"
977
  msgid ""
978
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
981
  "Kastade en pingback till \"{comment_post_title}\" av {comment_author} "
982
  "({comment_author_email}) i papperskorgen"
983
 
984
+ #: loggers/SimpleCommentsLogger.php:241
985
  msgctxt "A pingback was restored from the trash"
986
  msgid ""
987
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
990
  "Ångrade godkännandet av en kommentar till \"{comment_post_title}\" av "
991
  "{comment_author} ({comment_author_email})"
992
 
993
+ #: loggers/SimpleCommentsLogger.php:247
994
  msgctxt "A pingback was deleted"
995
  msgid ""
996
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
999
  "Raderade en pingback till \"{comment_post_title}\" av {comment_author} "
1000
  "({comment_author_email})"
1001
 
1002
+ #: loggers/SimpleCommentsLogger.php:253
1003
  msgctxt "A pingback was edited"
1004
  msgid ""
1005
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1008
  "Redigerade en pingback till \"{comment_post_title}\" av {comment_author} "
1009
  "({comment_author_email})"
1010
 
1011
+ #: loggers/SimpleCommentsLogger.php:264
1012
  msgctxt "Comments logger: search"
1013
  msgid "Comments"
1014
  msgstr "Kommentarer"
1015
 
1016
+ #: loggers/SimpleCommentsLogger.php:265
1017
  msgctxt "Comments logger: search"
1018
  msgid "All comments activity"
1019
  msgstr "Alla kommentarshändelser"
1020
 
1021
+ #: loggers/SimpleCommentsLogger.php:267
1022
  msgctxt "Comments logger: search"
1023
  msgid "Added comments"
1024
  msgstr "Tillagda kommentarer"
1025
 
1026
+ #: loggers/SimpleCommentsLogger.php:275
1027
  msgctxt "Comments logger: search"
1028
  msgid "Edited comments"
1029
  msgstr "Redigerade kommentarer"
1030
 
1031
+ #: loggers/SimpleCommentsLogger.php:280
1032
  msgctxt "Comments logger: search"
1033
  msgid "Approved comments"
1034
  msgstr "Godkända kommentarer"
1035
 
1036
+ #: loggers/SimpleCommentsLogger.php:285
1037
  msgctxt "Comments logger: search"
1038
  msgid "Held comments"
1039
  msgstr "Tillbakahållna kommentar"
1040
 
1041
+ #: loggers/SimpleCommentsLogger.php:290
1042
  msgctxt "Comments logger: search"
1043
  msgid "Comments status changed to spam"
1044
  msgstr "Status på kommentar ändrad till spam"
1045
 
1046
+ #: loggers/SimpleCommentsLogger.php:295
1047
  msgctxt "Comments logger: search"
1048
  msgid "Trashed comments"
1049
  msgstr "Kastade kommentarer"
1050
 
1051
+ #: loggers/SimpleCommentsLogger.php:300
1052
  msgctxt "Comments logger: search"
1053
  msgid "Untrashed comments"
1054
  msgstr "Kommentarer tillbakatagna från papperskorgen"
1055
 
1056
+ #: loggers/SimpleCommentsLogger.php:305
1057
  msgctxt "Comments logger: search"
1058
  msgid "Deleted comments"
1059
  msgstr "Borttagna kommentarer"
1060
 
1061
+ #: loggers/SimpleCommentsLogger.php:612 loggers/SimpleCommentsLogger.php:625
1062
+ #: loggers/SimpleCommentsLogger.php:639
1063
  msgctxt "comments logger - detailed output comment status"
1064
  msgid "Status"
1065
  msgstr "Status"
1066
 
1067
+ #: loggers/SimpleCommentsLogger.php:614 loggers/SimpleCommentsLogger.php:627
1068
+ #: loggers/SimpleCommentsLogger.php:641
1069
  msgctxt "comments logger - detailed output author"
1070
  msgid "Name"
1071
  msgstr "Namn"
1072
 
1073
+ #: loggers/SimpleCommentsLogger.php:615 loggers/SimpleCommentsLogger.php:628
1074
+ #: loggers/SimpleCommentsLogger.php:642
1075
  msgctxt "comments logger - detailed output email"
1076
  msgid "Email"
1077
  msgstr "E-post"
1078
 
1079
+ #: loggers/SimpleCommentsLogger.php:616 loggers/SimpleCommentsLogger.php:629
1080
  msgctxt "comments logger - detailed output content"
1081
  msgid "Content"
1082
  msgstr "Innehåll"
1083
 
1084
+ #: loggers/SimpleCommentsLogger.php:643
1085
  msgctxt "comments logger - detailed output content"
1086
  msgid "Comment"
1087
  msgstr "Kommentar"
1088
 
1089
+ #: loggers/SimpleCommentsLogger.php:769
1090
  msgctxt "comments logger - edit comment"
1091
  msgid "View/Edit"
1092
  msgstr "Visa/Redigera"
1448
  msgid "M j"
1449
  msgstr "M j"
1450
 
1451
+ #~ msgid "%1$d events today from one user and %3$d other source."
1452
+ #~ msgstr "%1$d händelser idag från en användare och från en annan källa."
1453
+
1454
  #~ msgid "History"
1455
  #~ msgstr "Historik"
1456
 
languages/simple-history.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Simple History package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Simple History 2.0.13\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
- "POT-Creation-Date: 2015-01-06 18:26:23+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -37,7 +37,7 @@ msgid "Styles example (debug)"
37
  msgstr ""
38
 
39
  #: SimpleHistory.php:711
40
- #. #-#-#-#-# Simple-History.pot (Simple History 2.0.13) #-#-#-#-#
41
  #. Plugin Name of the plugin/theme
42
  msgid "Simple History"
43
  msgstr ""
@@ -118,40 +118,54 @@ msgstr ""
118
  msgid "Clear log now"
119
  msgstr ""
120
 
121
- #: SimpleHistory.php:1658
122
- msgid "+%1$s more"
123
- msgstr ""
 
 
124
 
125
- #: SimpleHistory.php:1665
126
  msgid "Loading…"
127
  msgstr ""
128
 
129
- #: SimpleHistory.php:1672
130
  msgid "Showing %1$s more"
131
  msgstr ""
132
 
133
- #: SimpleHistory.php:1691
134
  msgid "Context data"
135
  msgstr ""
136
 
137
- #: SimpleHistory.php:1692
138
  msgid "This is potentially useful meta data that a logger has saved."
139
  msgstr ""
140
 
141
- #: SimpleHistory.php:2113
142
  msgid "No events today so far."
143
  msgstr ""
144
 
145
- #: SimpleHistory.php:2117
146
- msgid "%1$d event today from one user."
 
 
 
 
147
  msgstr ""
148
 
149
- #: SimpleHistory.php:2121
150
  msgid "%1$d events today from %2$d users."
151
  msgstr ""
152
 
153
- #: SimpleHistory.php:2125
154
- msgid "%1$d events today from one user."
 
 
 
 
 
 
 
 
155
  msgstr ""
156
 
157
  #: dropins/SimpleHistoryDonateDropin.php:36
@@ -168,6 +182,10 @@ msgstr ""
168
  msgid "Filter history"
169
  msgstr ""
170
 
 
 
 
 
171
  #: dropins/SimpleHistoryFilterDropin.php:50
172
  msgid "All log levels"
173
  msgstr ""
@@ -257,33 +275,33 @@ msgstr ""
257
  msgid "Stats"
258
  msgstr ""
259
 
260
- #: index.php:55
261
  msgid ""
262
  "Simple History is a great plugin, but to use it your server must have at "
263
  "least PHP 5.3 installed (you have version %s)."
264
  msgstr ""
265
 
266
- #: loggers/SimpleCommentsLogger.php:694
267
  msgid "Spam"
268
  msgstr ""
269
 
270
- #: loggers/SimpleCommentsLogger.php:696
271
  msgid "Approved"
272
  msgstr ""
273
 
274
- #: loggers/SimpleCommentsLogger.php:698
275
  msgid "Pending"
276
  msgstr ""
277
 
278
- #: loggers/SimpleCommentsLogger.php:712
279
  msgid "Trackback"
280
  msgstr ""
281
 
282
- #: loggers/SimpleCommentsLogger.php:714
283
  msgid "Pingback"
284
  msgstr ""
285
 
286
- #: loggers/SimpleCommentsLogger.php:716
287
  msgid "Comment"
288
  msgstr ""
289
 
@@ -615,82 +633,82 @@ msgctxt "history page headline"
615
  msgid "Simple History"
616
  msgstr ""
617
 
618
- #: SimpleHistory.php:1828
619
  msgctxt "Log level in gui"
620
  msgid "emergency"
621
  msgstr ""
622
 
623
- #: SimpleHistory.php:1832
624
  msgctxt "Log level in gui"
625
  msgid "alert"
626
  msgstr ""
627
 
628
- #: SimpleHistory.php:1836
629
  msgctxt "Log level in gui"
630
  msgid "critical"
631
  msgstr ""
632
 
633
- #: SimpleHistory.php:1840
634
  msgctxt "Log level in gui"
635
  msgid "error"
636
  msgstr ""
637
 
638
- #: SimpleHistory.php:1844
639
  msgctxt "Log level in gui"
640
  msgid "warning"
641
  msgstr ""
642
 
643
- #: SimpleHistory.php:1848
644
  msgctxt "Log level in gui"
645
  msgid "notice"
646
  msgstr ""
647
 
648
- #: SimpleHistory.php:1852
649
  msgctxt "Log level in gui"
650
  msgid "info"
651
  msgstr ""
652
 
653
- #: SimpleHistory.php:1856
654
  msgctxt "Log level in gui"
655
  msgid "debug"
656
  msgstr ""
657
 
658
- #: SimpleHistory.php:1861
659
  msgctxt "Log level in gui"
660
  msgid "Emergency"
661
  msgstr ""
662
 
663
- #: SimpleHistory.php:1865
664
  msgctxt "Log level in gui"
665
  msgid "Alert"
666
  msgstr ""
667
 
668
- #: SimpleHistory.php:1869
669
  msgctxt "Log level in gui"
670
  msgid "Critical"
671
  msgstr ""
672
 
673
- #: SimpleHistory.php:1873
674
  msgctxt "Log level in gui"
675
  msgid "Error"
676
  msgstr ""
677
 
678
- #: SimpleHistory.php:1877
679
  msgctxt "Log level in gui"
680
  msgid "Warning"
681
  msgstr ""
682
 
683
- #: SimpleHistory.php:1881
684
  msgctxt "Log level in gui"
685
  msgid "Notice"
686
  msgstr ""
687
 
688
- #: SimpleHistory.php:1885
689
  msgctxt "Log level in gui"
690
  msgid "Info"
691
  msgstr ""
692
 
693
- #: SimpleHistory.php:1889
694
  msgctxt "Log level in gui"
695
  msgid "Debug"
696
  msgstr ""
@@ -751,256 +769,256 @@ msgctxt "rss settings headline"
751
  msgid "RSS feed"
752
  msgstr ""
753
 
754
- #: loggers/SimpleCommentsLogger.php:94
755
  msgctxt "A comment was added to the database by a non-logged in internet user"
756
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
757
  msgstr ""
758
 
759
- #: loggers/SimpleCommentsLogger.php:100
760
  msgctxt "A comment was added to the database by a logged in user"
761
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
762
  msgstr ""
763
 
764
- #: loggers/SimpleCommentsLogger.php:106
765
  msgctxt "A comment was approved"
766
  msgid ""
767
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
768
  "({comment_author_email})"
769
  msgstr ""
770
 
771
- #: loggers/SimpleCommentsLogger.php:112
772
  msgctxt "A comment was was unapproved"
773
  msgid ""
774
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
775
  "({comment_author_email})"
776
  msgstr ""
777
 
778
- #: loggers/SimpleCommentsLogger.php:118
779
  msgctxt "A comment was marked as spam"
780
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
781
  msgstr ""
782
 
783
- #: loggers/SimpleCommentsLogger.php:124
784
  msgctxt "A comment was marked moved to the trash"
785
  msgid ""
786
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
787
  "({comment_author_email})"
788
  msgstr ""
789
 
790
- #: loggers/SimpleCommentsLogger.php:130
791
  msgctxt "A comment was restored from the trash"
792
  msgid ""
793
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
794
  "({comment_author_email}) from the trash"
795
  msgstr ""
796
 
797
- #: loggers/SimpleCommentsLogger.php:136
798
  msgctxt "A comment was deleted"
799
  msgid ""
800
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
801
  "({comment_author_email})"
802
  msgstr ""
803
 
804
- #: loggers/SimpleCommentsLogger.php:142
805
  msgctxt "A comment was edited"
806
  msgid ""
807
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
808
  "({comment_author_email})"
809
  msgstr ""
810
 
811
- #: loggers/SimpleCommentsLogger.php:149
812
  msgctxt "A trackback was added to the database by a non-logged in internet user"
813
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
814
  msgstr ""
815
 
816
- #: loggers/SimpleCommentsLogger.php:204
817
  msgctxt "A trackback was added to the database by a non-logged in internet user"
818
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
819
  msgstr ""
820
 
821
- #: loggers/SimpleCommentsLogger.php:155
822
  msgctxt "A trackback was added to the database by a logged in user"
823
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
824
  msgstr ""
825
 
826
- #: loggers/SimpleCommentsLogger.php:161
827
  msgctxt "A trackback was approved"
828
  msgid ""
829
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
830
  "({comment_author_email})"
831
  msgstr ""
832
 
833
- #: loggers/SimpleCommentsLogger.php:167
834
  msgctxt "A trackback was was unapproved"
835
  msgid ""
836
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
837
  "({comment_author_email})"
838
  msgstr ""
839
 
840
- #: loggers/SimpleCommentsLogger.php:173
841
  msgctxt "A trackback was marked as spam"
842
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
843
  msgstr ""
844
 
845
- #: loggers/SimpleCommentsLogger.php:179
846
  msgctxt "A trackback was marked moved to the trash"
847
  msgid ""
848
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
849
  "({comment_author_email})"
850
  msgstr ""
851
 
852
- #: loggers/SimpleCommentsLogger.php:185
853
  msgctxt "A trackback was restored from the trash"
854
  msgid ""
855
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
856
  "({comment_author_email}) from the trash"
857
  msgstr ""
858
 
859
- #: loggers/SimpleCommentsLogger.php:191
860
  msgctxt "A trackback was deleted"
861
  msgid ""
862
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
863
  "({comment_author_email})"
864
  msgstr ""
865
 
866
- #: loggers/SimpleCommentsLogger.php:197
867
  msgctxt "A trackback was edited"
868
  msgid ""
869
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
870
  "({comment_author_email})"
871
  msgstr ""
872
 
873
- #: loggers/SimpleCommentsLogger.php:210
874
  msgctxt "A pingback was added to the database by a logged in user"
875
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
876
  msgstr ""
877
 
878
- #: loggers/SimpleCommentsLogger.php:216
879
  msgctxt "A pingback was approved"
880
  msgid ""
881
  "Approved a pingback to \"{comment_post_title}\" by \"{comment_author}\"\" "
882
  "({comment_author_email})"
883
  msgstr ""
884
 
885
- #: loggers/SimpleCommentsLogger.php:222
886
  msgctxt "A pingback was was unapproved"
887
  msgid ""
888
  "Unapproved a pingback to \"{comment_post_title}\" by \"{comment_author}\" "
889
  "({comment_author_email})"
890
  msgstr ""
891
 
892
- #: loggers/SimpleCommentsLogger.php:228
893
  msgctxt "A pingback was marked as spam"
894
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
895
  msgstr ""
896
 
897
- #: loggers/SimpleCommentsLogger.php:234
898
  msgctxt "A pingback was marked moved to the trash"
899
  msgid ""
900
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
901
  "({comment_author_email})"
902
  msgstr ""
903
 
904
- #: loggers/SimpleCommentsLogger.php:240
905
  msgctxt "A pingback was restored from the trash"
906
  msgid ""
907
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
908
  "({comment_author_email}) from the trash"
909
  msgstr ""
910
 
911
- #: loggers/SimpleCommentsLogger.php:246
912
  msgctxt "A pingback was deleted"
913
  msgid ""
914
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
915
  "({comment_author_email})"
916
  msgstr ""
917
 
918
- #: loggers/SimpleCommentsLogger.php:252
919
  msgctxt "A pingback was edited"
920
  msgid ""
921
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
922
  "({comment_author_email})"
923
  msgstr ""
924
 
925
- #: loggers/SimpleCommentsLogger.php:263
926
  msgctxt "Comments logger: search"
927
  msgid "Comments"
928
  msgstr ""
929
 
930
- #: loggers/SimpleCommentsLogger.php:264
931
  msgctxt "Comments logger: search"
932
  msgid "All comments activity"
933
  msgstr ""
934
 
935
- #: loggers/SimpleCommentsLogger.php:266
936
  msgctxt "Comments logger: search"
937
  msgid "Added comments"
938
  msgstr ""
939
 
940
- #: loggers/SimpleCommentsLogger.php:274
941
  msgctxt "Comments logger: search"
942
  msgid "Edited comments"
943
  msgstr ""
944
 
945
- #: loggers/SimpleCommentsLogger.php:279
946
  msgctxt "Comments logger: search"
947
  msgid "Approved comments"
948
  msgstr ""
949
 
950
- #: loggers/SimpleCommentsLogger.php:284
951
  msgctxt "Comments logger: search"
952
  msgid "Held comments"
953
  msgstr ""
954
 
955
- #: loggers/SimpleCommentsLogger.php:289
956
  msgctxt "Comments logger: search"
957
  msgid "Comments status changed to spam"
958
  msgstr ""
959
 
960
- #: loggers/SimpleCommentsLogger.php:294
961
  msgctxt "Comments logger: search"
962
  msgid "Trashed comments"
963
  msgstr ""
964
 
965
- #: loggers/SimpleCommentsLogger.php:299
966
  msgctxt "Comments logger: search"
967
  msgid "Untrashed comments"
968
  msgstr ""
969
 
970
- #: loggers/SimpleCommentsLogger.php:304
971
  msgctxt "Comments logger: search"
972
  msgid "Deleted comments"
973
  msgstr ""
974
 
975
- #: loggers/SimpleCommentsLogger.php:611 loggers/SimpleCommentsLogger.php:624
976
- #: loggers/SimpleCommentsLogger.php:638
977
  msgctxt "comments logger - detailed output comment status"
978
  msgid "Status"
979
  msgstr ""
980
 
981
- #: loggers/SimpleCommentsLogger.php:613 loggers/SimpleCommentsLogger.php:626
982
- #: loggers/SimpleCommentsLogger.php:640
983
  msgctxt "comments logger - detailed output author"
984
  msgid "Name"
985
  msgstr ""
986
 
987
- #: loggers/SimpleCommentsLogger.php:614 loggers/SimpleCommentsLogger.php:627
988
- #: loggers/SimpleCommentsLogger.php:641
989
  msgctxt "comments logger - detailed output email"
990
  msgid "Email"
991
  msgstr ""
992
 
993
- #: loggers/SimpleCommentsLogger.php:615 loggers/SimpleCommentsLogger.php:628
994
  msgctxt "comments logger - detailed output content"
995
  msgid "Content"
996
  msgstr ""
997
 
998
- #: loggers/SimpleCommentsLogger.php:642
999
  msgctxt "comments logger - detailed output content"
1000
  msgid "Comment"
1001
  msgstr ""
1002
 
1003
- #: loggers/SimpleCommentsLogger.php:768
1004
  msgctxt "comments logger - edit comment"
1005
  msgid "View/Edit"
1006
  msgstr ""
2
  # This file is distributed under the same license as the Simple History package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Simple History 2.0.15\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
+ "POT-Creation-Date: 2015-01-14 20:50:40+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
37
  msgstr ""
38
 
39
  #: SimpleHistory.php:711
40
+ #. #-#-#-#-# Simple-History.pot (Simple History 2.0.15) #-#-#-#-#
41
  #. Plugin Name of the plugin/theme
42
  msgid "Simple History"
43
  msgstr ""
118
  msgid "Clear log now"
119
  msgstr ""
120
 
121
+ #: SimpleHistory.php:1659
122
+ msgid "+%1$s similar event"
123
+ msgid_plural "+%1$s similar events"
124
+ msgstr[0] ""
125
+ msgstr[1] ""
126
 
127
+ #: SimpleHistory.php:1666
128
  msgid "Loading…"
129
  msgstr ""
130
 
131
+ #: SimpleHistory.php:1673
132
  msgid "Showing %1$s more"
133
  msgstr ""
134
 
135
+ #: SimpleHistory.php:1692
136
  msgid "Context data"
137
  msgstr ""
138
 
139
+ #: SimpleHistory.php:1693
140
  msgid "This is potentially useful meta data that a logger has saved."
141
  msgstr ""
142
 
143
+ #: SimpleHistory.php:2156
144
  msgid "No events today so far."
145
  msgstr ""
146
 
147
+ #: SimpleHistory.php:2174
148
+ msgid "One event today from one user."
149
+ msgstr ""
150
+
151
+ #: SimpleHistory.php:2180
152
+ msgid "One event today from one source."
153
  msgstr ""
154
 
155
+ #: SimpleHistory.php:2186
156
  msgid "%1$d events today from %2$d users."
157
  msgstr ""
158
 
159
+ #: SimpleHistory.php:2192 SimpleHistory.php:2198
160
+ msgid "%1$d events today from one user and one other source."
161
+ msgstr ""
162
+
163
+ #: SimpleHistory.php:2204
164
+ msgid "%1$d events today from one user and %3$d other sources."
165
+ msgstr ""
166
+
167
+ #: SimpleHistory.php:2210
168
+ msgid "%1$s events today from %2$d users and %3$d other sources."
169
  msgstr ""
170
 
171
  #: dropins/SimpleHistoryDonateDropin.php:36
182
  msgid "Filter history"
183
  msgstr ""
184
 
185
+ #: dropins/SimpleHistoryFilterDropin.php:46
186
+ msgid "Search"
187
+ msgstr ""
188
+
189
  #: dropins/SimpleHistoryFilterDropin.php:50
190
  msgid "All log levels"
191
  msgstr ""
275
  msgid "Stats"
276
  msgstr ""
277
 
278
+ #: index.php:59
279
  msgid ""
280
  "Simple History is a great plugin, but to use it your server must have at "
281
  "least PHP 5.3 installed (you have version %s)."
282
  msgstr ""
283
 
284
+ #: loggers/SimpleCommentsLogger.php:695
285
  msgid "Spam"
286
  msgstr ""
287
 
288
+ #: loggers/SimpleCommentsLogger.php:697
289
  msgid "Approved"
290
  msgstr ""
291
 
292
+ #: loggers/SimpleCommentsLogger.php:699
293
  msgid "Pending"
294
  msgstr ""
295
 
296
+ #: loggers/SimpleCommentsLogger.php:713
297
  msgid "Trackback"
298
  msgstr ""
299
 
300
+ #: loggers/SimpleCommentsLogger.php:715
301
  msgid "Pingback"
302
  msgstr ""
303
 
304
+ #: loggers/SimpleCommentsLogger.php:717
305
  msgid "Comment"
306
  msgstr ""
307
 
633
  msgid "Simple History"
634
  msgstr ""
635
 
636
+ #: SimpleHistory.php:1829
637
  msgctxt "Log level in gui"
638
  msgid "emergency"
639
  msgstr ""
640
 
641
+ #: SimpleHistory.php:1833
642
  msgctxt "Log level in gui"
643
  msgid "alert"
644
  msgstr ""
645
 
646
+ #: SimpleHistory.php:1837
647
  msgctxt "Log level in gui"
648
  msgid "critical"
649
  msgstr ""
650
 
651
+ #: SimpleHistory.php:1841
652
  msgctxt "Log level in gui"
653
  msgid "error"
654
  msgstr ""
655
 
656
+ #: SimpleHistory.php:1845
657
  msgctxt "Log level in gui"
658
  msgid "warning"
659
  msgstr ""
660
 
661
+ #: SimpleHistory.php:1849
662
  msgctxt "Log level in gui"
663
  msgid "notice"
664
  msgstr ""
665
 
666
+ #: SimpleHistory.php:1853
667
  msgctxt "Log level in gui"
668
  msgid "info"
669
  msgstr ""
670
 
671
+ #: SimpleHistory.php:1857
672
  msgctxt "Log level in gui"
673
  msgid "debug"
674
  msgstr ""
675
 
676
+ #: SimpleHistory.php:1862
677
  msgctxt "Log level in gui"
678
  msgid "Emergency"
679
  msgstr ""
680
 
681
+ #: SimpleHistory.php:1866
682
  msgctxt "Log level in gui"
683
  msgid "Alert"
684
  msgstr ""
685
 
686
+ #: SimpleHistory.php:1870
687
  msgctxt "Log level in gui"
688
  msgid "Critical"
689
  msgstr ""
690
 
691
+ #: SimpleHistory.php:1874
692
  msgctxt "Log level in gui"
693
  msgid "Error"
694
  msgstr ""
695
 
696
+ #: SimpleHistory.php:1878
697
  msgctxt "Log level in gui"
698
  msgid "Warning"
699
  msgstr ""
700
 
701
+ #: SimpleHistory.php:1882
702
  msgctxt "Log level in gui"
703
  msgid "Notice"
704
  msgstr ""
705
 
706
+ #: SimpleHistory.php:1886
707
  msgctxt "Log level in gui"
708
  msgid "Info"
709
  msgstr ""
710
 
711
+ #: SimpleHistory.php:1890
712
  msgctxt "Log level in gui"
713
  msgid "Debug"
714
  msgstr ""
769
  msgid "RSS feed"
770
  msgstr ""
771
 
772
+ #: loggers/SimpleCommentsLogger.php:95
773
  msgctxt "A comment was added to the database by a non-logged in internet user"
774
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
775
  msgstr ""
776
 
777
+ #: loggers/SimpleCommentsLogger.php:101
778
  msgctxt "A comment was added to the database by a logged in user"
779
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
780
  msgstr ""
781
 
782
+ #: loggers/SimpleCommentsLogger.php:107
783
  msgctxt "A comment was approved"
784
  msgid ""
785
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
786
  "({comment_author_email})"
787
  msgstr ""
788
 
789
+ #: loggers/SimpleCommentsLogger.php:113
790
  msgctxt "A comment was was unapproved"
791
  msgid ""
792
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
793
  "({comment_author_email})"
794
  msgstr ""
795
 
796
+ #: loggers/SimpleCommentsLogger.php:119
797
  msgctxt "A comment was marked as spam"
798
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
799
  msgstr ""
800
 
801
+ #: loggers/SimpleCommentsLogger.php:125
802
  msgctxt "A comment was marked moved to the trash"
803
  msgid ""
804
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
805
  "({comment_author_email})"
806
  msgstr ""
807
 
808
+ #: loggers/SimpleCommentsLogger.php:131
809
  msgctxt "A comment was restored from the trash"
810
  msgid ""
811
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
812
  "({comment_author_email}) from the trash"
813
  msgstr ""
814
 
815
+ #: loggers/SimpleCommentsLogger.php:137
816
  msgctxt "A comment was deleted"
817
  msgid ""
818
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
819
  "({comment_author_email})"
820
  msgstr ""
821
 
822
+ #: loggers/SimpleCommentsLogger.php:143
823
  msgctxt "A comment was edited"
824
  msgid ""
825
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
826
  "({comment_author_email})"
827
  msgstr ""
828
 
829
+ #: loggers/SimpleCommentsLogger.php:150
830
  msgctxt "A trackback was added to the database by a non-logged in internet user"
831
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
832
  msgstr ""
833
 
834
+ #: loggers/SimpleCommentsLogger.php:205
835
  msgctxt "A trackback was added to the database by a non-logged in internet user"
836
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
837
  msgstr ""
838
 
839
+ #: loggers/SimpleCommentsLogger.php:156
840
  msgctxt "A trackback was added to the database by a logged in user"
841
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
842
  msgstr ""
843
 
844
+ #: loggers/SimpleCommentsLogger.php:162
845
  msgctxt "A trackback was approved"
846
  msgid ""
847
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
848
  "({comment_author_email})"
849
  msgstr ""
850
 
851
+ #: loggers/SimpleCommentsLogger.php:168
852
  msgctxt "A trackback was was unapproved"
853
  msgid ""
854
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
855
  "({comment_author_email})"
856
  msgstr ""
857
 
858
+ #: loggers/SimpleCommentsLogger.php:174
859
  msgctxt "A trackback was marked as spam"
860
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
861
  msgstr ""
862
 
863
+ #: loggers/SimpleCommentsLogger.php:180
864
  msgctxt "A trackback was marked moved to the trash"
865
  msgid ""
866
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
867
  "({comment_author_email})"
868
  msgstr ""
869
 
870
+ #: loggers/SimpleCommentsLogger.php:186
871
  msgctxt "A trackback was restored from the trash"
872
  msgid ""
873
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
874
  "({comment_author_email}) from the trash"
875
  msgstr ""
876
 
877
+ #: loggers/SimpleCommentsLogger.php:192
878
  msgctxt "A trackback was deleted"
879
  msgid ""
880
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
881
  "({comment_author_email})"
882
  msgstr ""
883
 
884
+ #: loggers/SimpleCommentsLogger.php:198
885
  msgctxt "A trackback was edited"
886
  msgid ""
887
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
888
  "({comment_author_email})"
889
  msgstr ""
890
 
891
+ #: loggers/SimpleCommentsLogger.php:211
892
  msgctxt "A pingback was added to the database by a logged in user"
893
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
894
  msgstr ""
895
 
896
+ #: loggers/SimpleCommentsLogger.php:217
897
  msgctxt "A pingback was approved"
898
  msgid ""
899
  "Approved a pingback to \"{comment_post_title}\" by \"{comment_author}\"\" "
900
  "({comment_author_email})"
901
  msgstr ""
902
 
903
+ #: loggers/SimpleCommentsLogger.php:223
904
  msgctxt "A pingback was was unapproved"
905
  msgid ""
906
  "Unapproved a pingback to \"{comment_post_title}\" by \"{comment_author}\" "
907
  "({comment_author_email})"
908
  msgstr ""
909
 
910
+ #: loggers/SimpleCommentsLogger.php:229
911
  msgctxt "A pingback was marked as spam"
912
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
913
  msgstr ""
914
 
915
+ #: loggers/SimpleCommentsLogger.php:235
916
  msgctxt "A pingback was marked moved to the trash"
917
  msgid ""
918
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
919
  "({comment_author_email})"
920
  msgstr ""
921
 
922
+ #: loggers/SimpleCommentsLogger.php:241
923
  msgctxt "A pingback was restored from the trash"
924
  msgid ""
925
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
926
  "({comment_author_email}) from the trash"
927
  msgstr ""
928
 
929
+ #: loggers/SimpleCommentsLogger.php:247
930
  msgctxt "A pingback was deleted"
931
  msgid ""
932
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
933
  "({comment_author_email})"
934
  msgstr ""
935
 
936
+ #: loggers/SimpleCommentsLogger.php:253
937
  msgctxt "A pingback was edited"
938
  msgid ""
939
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
940
  "({comment_author_email})"
941
  msgstr ""
942
 
943
+ #: loggers/SimpleCommentsLogger.php:264
944
  msgctxt "Comments logger: search"
945
  msgid "Comments"
946
  msgstr ""
947
 
948
+ #: loggers/SimpleCommentsLogger.php:265
949
  msgctxt "Comments logger: search"
950
  msgid "All comments activity"
951
  msgstr ""
952
 
953
+ #: loggers/SimpleCommentsLogger.php:267
954
  msgctxt "Comments logger: search"
955
  msgid "Added comments"
956
  msgstr ""
957
 
958
+ #: loggers/SimpleCommentsLogger.php:275
959
  msgctxt "Comments logger: search"
960
  msgid "Edited comments"
961
  msgstr ""
962
 
963
+ #: loggers/SimpleCommentsLogger.php:280
964
  msgctxt "Comments logger: search"
965
  msgid "Approved comments"
966
  msgstr ""
967
 
968
+ #: loggers/SimpleCommentsLogger.php:285
969
  msgctxt "Comments logger: search"
970
  msgid "Held comments"
971
  msgstr ""
972
 
973
+ #: loggers/SimpleCommentsLogger.php:290
974
  msgctxt "Comments logger: search"
975
  msgid "Comments status changed to spam"
976
  msgstr ""
977
 
978
+ #: loggers/SimpleCommentsLogger.php:295
979
  msgctxt "Comments logger: search"
980
  msgid "Trashed comments"
981
  msgstr ""
982
 
983
+ #: loggers/SimpleCommentsLogger.php:300
984
  msgctxt "Comments logger: search"
985
  msgid "Untrashed comments"
986
  msgstr ""
987
 
988
+ #: loggers/SimpleCommentsLogger.php:305
989
  msgctxt "Comments logger: search"
990
  msgid "Deleted comments"
991
  msgstr ""
992
 
993
+ #: loggers/SimpleCommentsLogger.php:612 loggers/SimpleCommentsLogger.php:625
994
+ #: loggers/SimpleCommentsLogger.php:639
995
  msgctxt "comments logger - detailed output comment status"
996
  msgid "Status"
997
  msgstr ""
998
 
999
+ #: loggers/SimpleCommentsLogger.php:614 loggers/SimpleCommentsLogger.php:627
1000
+ #: loggers/SimpleCommentsLogger.php:641
1001
  msgctxt "comments logger - detailed output author"
1002
  msgid "Name"
1003
  msgstr ""
1004
 
1005
+ #: loggers/SimpleCommentsLogger.php:615 loggers/SimpleCommentsLogger.php:628
1006
+ #: loggers/SimpleCommentsLogger.php:642
1007
  msgctxt "comments logger - detailed output email"
1008
  msgid "Email"
1009
  msgstr ""
1010
 
1011
+ #: loggers/SimpleCommentsLogger.php:616 loggers/SimpleCommentsLogger.php:629
1012
  msgctxt "comments logger - detailed output content"
1013
  msgid "Content"
1014
  msgstr ""
1015
 
1016
+ #: loggers/SimpleCommentsLogger.php:643
1017
  msgctxt "comments logger - detailed output content"
1018
  msgid "Comment"
1019
  msgstr ""
1020
 
1021
+ #: loggers/SimpleCommentsLogger.php:769
1022
  msgctxt "comments logger - edit comment"
1023
  msgid "View/Edit"
1024
  msgstr ""
loggers/SimpleCommentsLogger.php CHANGED
@@ -15,6 +15,7 @@ class SimpleCommentsLogger extends SimpleLogger
15
  // Add option to not show spam comments, because to much things getting logged
16
  #add_filter("simple_history/log_query_sql_where", array($this, "maybe_modify_log_query_sql_where"));
17
  add_filter("simple_history/log_query_inner_where", array($this, "maybe_modify_log_query_sql_where"));
 
18
 
19
  }
20
 
@@ -24,9 +25,9 @@ class SimpleCommentsLogger extends SimpleLogger
24
  * @param string $where sql query where
25
  */
26
  function maybe_modify_log_query_sql_where($where) {
27
-
28
  $include_spam = false;
29
-
30
  /**
31
  * Filter option to include spam or not in the gui
32
  * By default spam is not included, because it can fill the log
@@ -44,29 +45,29 @@ class SimpleCommentsLogger extends SimpleLogger
44
 
45
  $where .= sprintf('
46
  AND id NOT IN (
47
-
48
  SELECT id
49
- # , c1.history_id, c2.history_id
50
  FROM %1$s AS h
51
 
52
- INNER JOIN %2$s AS c1
53
- ON c1.history_id = h.id
54
- AND c1.key = "_message_key"
55
  AND c1.value IN (
56
- "comment_deleted",
57
- "pingback_deleted",
58
  "trackback_deleted",
59
- "anon_comment_added",
60
- "anon_pingback_added",
61
  "anon_trackback_added"
62
  )
63
 
64
- INNER JOIN %2$s AS c2
65
- ON c2.history_id = h.id
66
- AND c2.key = "comment_approved"
67
  AND c2.value = "spam"
68
 
69
- WHERE logger = "%3$s"
70
 
71
  )
72
  ', $this->db_table, $this->db_table_contexts, $this->slug);
@@ -79,12 +80,12 @@ class SimpleCommentsLogger extends SimpleLogger
79
 
80
  /**
81
  * Get array with information about this logger
82
- *
83
  * @return array
84
  */
85
  function getInfo() {
86
 
87
- $arr_info = array(
88
  "name" => "Comments Logger",
89
  "description" => "Logs comments, and modifications to them",
90
  "capability" => "moderate_comments",
@@ -98,49 +99,49 @@ class SimpleCommentsLogger extends SimpleLogger
98
  ),
99
 
100
  'user_comment_added' => _x(
101
- 'Added a comment to {comment_post_type} "{comment_post_title}"',
102
  'A comment was added to the database by a logged in user',
103
  'simple-history'
104
  ),
105
 
106
  'comment_status_approve' => _x(
107
- 'Approved a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
108
  'A comment was approved',
109
  'simple-history'
110
  ),
111
 
112
  'comment_status_hold' => _x(
113
- 'Unapproved a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
114
  'A comment was was unapproved',
115
  'simple-history'
116
  ),
117
 
118
  'comment_status_spam' => _x(
119
- 'Marked a comment to post "{comment_post_title}" as spam',
120
  'A comment was marked as spam',
121
  'simple-history'
122
  ),
123
 
124
  'comment_status_trash' => _x(
125
- 'Trashed a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
126
  'A comment was marked moved to the trash',
127
  'simple-history'
128
  ),
129
 
130
  'comment_untrashed' => _x(
131
- 'Restored a comment to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
132
  'A comment was restored from the trash',
133
  'simple-history'
134
  ),
135
 
136
  'comment_deleted' => _x(
137
- 'Deleted a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
138
  'A comment was deleted',
139
  'simple-history'
140
  ),
141
 
142
  'comment_edited' => _x(
143
- 'Edited a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
144
  'A comment was edited',
145
  'simple-history'
146
  ),
@@ -153,49 +154,49 @@ class SimpleCommentsLogger extends SimpleLogger
153
  ),
154
 
155
  'user_trackback_added' => _x(
156
- 'Added a trackback to {comment_post_type} "{comment_post_title}"',
157
  'A trackback was added to the database by a logged in user',
158
  'simple-history'
159
  ),
160
 
161
  'trackback_status_approve' => _x(
162
- 'Approved a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
163
  'A trackback was approved',
164
  'simple-history'
165
  ),
166
 
167
  'trackback_status_hold' => _x(
168
- 'Unapproved a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
169
  'A trackback was was unapproved',
170
  'simple-history'
171
  ),
172
 
173
  'trackback_status_spam' => _x(
174
- 'Marked a trackback to post "{comment_post_title}" as spam',
175
  'A trackback was marked as spam',
176
  'simple-history'
177
  ),
178
 
179
  'trackback_status_trash' => _x(
180
- 'Trashed a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
181
  'A trackback was marked moved to the trash',
182
  'simple-history'
183
  ),
184
 
185
  'trackback_untrashed' => _x(
186
- 'Restored a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
187
  'A trackback was restored from the trash',
188
  'simple-history'
189
  ),
190
 
191
  'trackback_deleted' => _x(
192
- 'Deleted a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
193
  'A trackback was deleted',
194
  'simple-history'
195
  ),
196
 
197
  'trackback_edited' => _x(
198
- 'Edited a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
199
  'A trackback was edited',
200
  'simple-history'
201
  ),
@@ -208,49 +209,49 @@ class SimpleCommentsLogger extends SimpleLogger
208
  ),
209
 
210
  'user_pingback_added' => _x(
211
- 'Added a pingback to {comment_post_type} "{comment_post_title}"',
212
  'A pingback was added to the database by a logged in user',
213
  'simple-history'
214
  ),
215
 
216
  'pingback_status_approve' => _x(
217
- 'Approved a pingback to "{comment_post_title}" by "{comment_author}"" ({comment_author_email})',
218
  'A pingback was approved',
219
  'simple-history'
220
  ),
221
 
222
  'pingback_status_hold' => _x(
223
- 'Unapproved a pingback to "{comment_post_title}" by "{comment_author}" ({comment_author_email})',
224
  'A pingback was was unapproved',
225
  'simple-history'
226
  ),
227
 
228
  'pingback_status_spam' => _x(
229
- 'Marked a pingback to post "{comment_post_title}" as spam',
230
  'A pingback was marked as spam',
231
  'simple-history'
232
  ),
233
 
234
  'pingback_status_trash' => _x(
235
- 'Trashed a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
236
  'A pingback was marked moved to the trash',
237
  'simple-history'
238
  ),
239
 
240
  'pingback_untrashed' => _x(
241
- 'Restored a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
242
  'A pingback was restored from the trash',
243
  'simple-history'
244
  ),
245
 
246
  'pingback_deleted' => _x(
247
- 'Deleted a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
248
  'A pingback was deleted',
249
  'simple-history'
250
  ),
251
 
252
  'pingback_edited' => _x(
253
- 'Edited a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
254
  'A pingback was edited',
255
  'simple-history'
256
  ),
@@ -312,7 +313,7 @@ class SimpleCommentsLogger extends SimpleLogger
312
  ) // labels
313
 
314
  );
315
-
316
  return $arr_info;
317
 
318
  }
@@ -346,12 +347,12 @@ class SimpleCommentsLogger extends SimpleLogger
346
  */
347
  add_action( "edit_comment", array( $this, 'on_edit_comment'), 10, 1 );
348
 
349
-
350
  }
351
 
352
  /**
353
  * Get comments context
354
- *
355
  * @param int $comment_ID
356
  * @return mixed array with context if comment found, false if comment not found
357
  */
@@ -402,7 +403,7 @@ class SimpleCommentsLogger extends SimpleLogger
402
  $this->infoMessage(
403
  "{$context["comment_type"]}_edited",
404
  $context
405
- );
406
 
407
  }
408
 
@@ -426,7 +427,7 @@ class SimpleCommentsLogger extends SimpleLogger
426
  $this->infoMessage(
427
  "{$context["comment_type"]}_deleted",
428
  $context
429
- );
430
 
431
  }
432
 
@@ -440,7 +441,7 @@ class SimpleCommentsLogger extends SimpleLogger
440
  $this->infoMessage(
441
  "{$context["comment_type"]}_untrashed",
442
  $context
443
- );
444
 
445
  }
446
 
@@ -451,7 +452,7 @@ class SimpleCommentsLogger extends SimpleLogger
451
  * @param string|bool $comment_status The comment status. Possible values include 'hold',
452
  * 'approve', 'spam', 'trash', or false.
453
  * do_action( 'wp_set_comment_status', $comment_id, $comment_status );
454
- */
455
  public function on_wp_set_comment_status($comment_ID, $comment_status) {
456
 
457
  $context = $this->get_context_for_comment($comment_ID);
@@ -496,12 +497,12 @@ class SimpleCommentsLogger extends SimpleLogger
496
  $message = "";
497
 
498
  if ( $comment_data->user_id ) {
499
-
500
  // comment was from a logged in user
501
  $message = "user_{$context["comment_type"]}_added";
502
 
503
  } else {
504
-
505
  // comment was from a non-logged in user
506
  $message = "anon_{$context["comment_type"]}_added";
507
  $context["_initiator"] = SimpleLoggerLogInitiators::WEB_USER;
@@ -518,8 +519,8 @@ class SimpleCommentsLogger extends SimpleLogger
518
  // OR: different messages for different comment types?
519
  /*
520
  if ( isset( $comment_data["comment_type"] ) ) {
521
-
522
- $comment_type = $comment_data["comment_type"];
523
 
524
  }
525
  */
@@ -537,7 +538,7 @@ class SimpleCommentsLogger extends SimpleLogger
537
  * and link to comment
538
  */
539
  public function getLogRowPlainTextOutput($row) {
540
-
541
  $message = $row->message;
542
  $context = $row->context;
543
  $message_key = $context["_message_key"];
@@ -555,7 +556,7 @@ class SimpleCommentsLogger extends SimpleLogger
555
  $edit_post_link = get_edit_post_link( $comment_post_ID );
556
 
557
  if ( $edit_post_link ) {
558
-
559
  $message = str_replace(
560
  '"{comment_post_title}"',
561
  "<a href='{$edit_post_link}'>\"{comment_post_title}\"</a>",
@@ -563,7 +564,7 @@ class SimpleCommentsLogger extends SimpleLogger
563
  );
564
 
565
  }
566
-
567
  }
568
 
569
 
@@ -581,7 +582,7 @@ class SimpleCommentsLogger extends SimpleLogger
581
  $message_key = $context["_message_key"];
582
  $output = "";
583
  #print_r($row);exit;
584
- /*
585
  if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
586
  if ( '0' == $commentdata['comment_approved'] ) { // comment not spam, but not auto-approved
587
  wp_notify_moderator( $comment_ID );
@@ -598,7 +599,7 @@ class SimpleCommentsLogger extends SimpleLogger
598
  $comment_text = wp_trim_words( $comment_text, 20 );
599
  $comment_text = wpautop( $comment_text );
600
  }
601
-
602
  // Keys to show
603
  $arr_plugin_keys = array();
604
  $comment_type = isset( $context["comment_type"] ) ? $context["comment_type"] : "";
@@ -633,7 +634,7 @@ class SimpleCommentsLogger extends SimpleLogger
633
 
634
  case "comment";
635
  default;
636
-
637
  $arr_plugin_keys = array(
638
  "comment_status" => _x("Status", "comments logger - detailed output comment status", "simple-history"),
639
  #"comment_type" => _x("Comment type", "comments logger - detailed output comment type", "simple-history"),
@@ -655,7 +656,7 @@ class SimpleCommentsLogger extends SimpleLogger
655
  $output .= "<table class='SimpleHistoryLogitem__keyValueTable'>";
656
 
657
  foreach ( $arr_plugin_keys as $key => $desc ) {
658
-
659
  switch ( $key ) {
660
 
661
  case "comment_content":
@@ -667,18 +668,18 @@ class SimpleCommentsLogger extends SimpleLogger
667
  case "comment_author":
668
  case "trackback_author":
669
  case "pingback_author":
670
-
671
  $desc_output = "";
672
 
673
  $desc_output .= esc_html( $context[ $key ] );
674
 
675
  /*
676
  if ( isset( $context["comment_author_email"] ) ) {
677
-
678
  $gravatar_email = $context["comment_author_email"];
679
  $avatar = $this->simpleHistory->get_avatar( $gravatar_email, 14, "blank" );
680
  $desc_output .= "<span class='SimpleCommentsLogger__gravatar'>{$avatar}</span>";
681
-
682
  }
683
  */
684
 
@@ -747,17 +748,17 @@ class SimpleCommentsLogger extends SimpleLogger
747
 
748
  // Add link to edit comment
749
  $comment_ID = isset( $context["comment_ID"] ) && is_numeric( $context["comment_ID"] ) ? (int) $context["comment_ID"] : false;
750
-
751
  if ( $comment_ID ) {
752
-
753
  // http://site.local/wp/wp-admin/comment.php?action=editcomment&c=
754
  $edit_comment_link = get_edit_comment_link( $comment_ID );
755
-
756
  // Edit link sometimes does not contain comment ID
757
  // Probably because comment has been removed or something
758
  // So only continue if link does not end with "=""
759
  if ( $edit_comment_link && $edit_comment_link[strlen($edit_comment_link)-1] !== "=" ) {
760
-
761
  $output .= sprintf(
762
  '
763
  <tr>
15
  // Add option to not show spam comments, because to much things getting logged
16
  #add_filter("simple_history/log_query_sql_where", array($this, "maybe_modify_log_query_sql_where"));
17
  add_filter("simple_history/log_query_inner_where", array($this, "maybe_modify_log_query_sql_where"));
18
+ add_filter("simple_history/quick_stats_where", array($this, "maybe_modify_log_query_sql_where"));
19
 
20
  }
21
 
25
  * @param string $where sql query where
26
  */
27
  function maybe_modify_log_query_sql_where($where) {
28
+
29
  $include_spam = false;
30
+
31
  /**
32
  * Filter option to include spam or not in the gui
33
  * By default spam is not included, because it can fill the log
45
 
46
  $where .= sprintf('
47
  AND id NOT IN (
48
+
49
  SELECT id
50
+ # , c1.history_id, c2.history_id
51
  FROM %1$s AS h
52
 
53
+ INNER JOIN %2$s AS c1
54
+ ON c1.history_id = h.id
55
+ AND c1.key = "_message_key"
56
  AND c1.value IN (
57
+ "comment_deleted",
58
+ "pingback_deleted",
59
  "trackback_deleted",
60
+ "anon_comment_added",
61
+ "anon_pingback_added",
62
  "anon_trackback_added"
63
  )
64
 
65
+ INNER JOIN %2$s AS c2
66
+ ON c2.history_id = h.id
67
+ AND c2.key = "comment_approved"
68
  AND c2.value = "spam"
69
 
70
+ WHERE logger = "%3$s"
71
 
72
  )
73
  ', $this->db_table, $this->db_table_contexts, $this->slug);
80
 
81
  /**
82
  * Get array with information about this logger
83
+ *
84
  * @return array
85
  */
86
  function getInfo() {
87
 
88
+ $arr_info = array(
89
  "name" => "Comments Logger",
90
  "description" => "Logs comments, and modifications to them",
91
  "capability" => "moderate_comments",
99
  ),
100
 
101
  'user_comment_added' => _x(
102
+ 'Added a comment to {comment_post_type} "{comment_post_title}"',
103
  'A comment was added to the database by a logged in user',
104
  'simple-history'
105
  ),
106
 
107
  'comment_status_approve' => _x(
108
+ 'Approved a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
109
  'A comment was approved',
110
  'simple-history'
111
  ),
112
 
113
  'comment_status_hold' => _x(
114
+ 'Unapproved a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
115
  'A comment was was unapproved',
116
  'simple-history'
117
  ),
118
 
119
  'comment_status_spam' => _x(
120
+ 'Marked a comment to post "{comment_post_title}" as spam',
121
  'A comment was marked as spam',
122
  'simple-history'
123
  ),
124
 
125
  'comment_status_trash' => _x(
126
+ 'Trashed a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
127
  'A comment was marked moved to the trash',
128
  'simple-history'
129
  ),
130
 
131
  'comment_untrashed' => _x(
132
+ 'Restored a comment to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
133
  'A comment was restored from the trash',
134
  'simple-history'
135
  ),
136
 
137
  'comment_deleted' => _x(
138
+ 'Deleted a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
139
  'A comment was deleted',
140
  'simple-history'
141
  ),
142
 
143
  'comment_edited' => _x(
144
+ 'Edited a comment to "{comment_post_title}" by {comment_author} ({comment_author_email})',
145
  'A comment was edited',
146
  'simple-history'
147
  ),
154
  ),
155
 
156
  'user_trackback_added' => _x(
157
+ 'Added a trackback to {comment_post_type} "{comment_post_title}"',
158
  'A trackback was added to the database by a logged in user',
159
  'simple-history'
160
  ),
161
 
162
  'trackback_status_approve' => _x(
163
+ 'Approved a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
164
  'A trackback was approved',
165
  'simple-history'
166
  ),
167
 
168
  'trackback_status_hold' => _x(
169
+ 'Unapproved a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
170
  'A trackback was was unapproved',
171
  'simple-history'
172
  ),
173
 
174
  'trackback_status_spam' => _x(
175
+ 'Marked a trackback to post "{comment_post_title}" as spam',
176
  'A trackback was marked as spam',
177
  'simple-history'
178
  ),
179
 
180
  'trackback_status_trash' => _x(
181
+ 'Trashed a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
182
  'A trackback was marked moved to the trash',
183
  'simple-history'
184
  ),
185
 
186
  'trackback_untrashed' => _x(
187
+ 'Restored a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
188
  'A trackback was restored from the trash',
189
  'simple-history'
190
  ),
191
 
192
  'trackback_deleted' => _x(
193
+ 'Deleted a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
194
  'A trackback was deleted',
195
  'simple-history'
196
  ),
197
 
198
  'trackback_edited' => _x(
199
+ 'Edited a trackback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
200
  'A trackback was edited',
201
  'simple-history'
202
  ),
209
  ),
210
 
211
  'user_pingback_added' => _x(
212
+ 'Added a pingback to {comment_post_type} "{comment_post_title}"',
213
  'A pingback was added to the database by a logged in user',
214
  'simple-history'
215
  ),
216
 
217
  'pingback_status_approve' => _x(
218
+ 'Approved a pingback to "{comment_post_title}" by "{comment_author}"" ({comment_author_email})',
219
  'A pingback was approved',
220
  'simple-history'
221
  ),
222
 
223
  'pingback_status_hold' => _x(
224
+ 'Unapproved a pingback to "{comment_post_title}" by "{comment_author}" ({comment_author_email})',
225
  'A pingback was was unapproved',
226
  'simple-history'
227
  ),
228
 
229
  'pingback_status_spam' => _x(
230
+ 'Marked a pingback to post "{comment_post_title}" as spam',
231
  'A pingback was marked as spam',
232
  'simple-history'
233
  ),
234
 
235
  'pingback_status_trash' => _x(
236
+ 'Trashed a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
237
  'A pingback was marked moved to the trash',
238
  'simple-history'
239
  ),
240
 
241
  'pingback_untrashed' => _x(
242
+ 'Restored a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email}) from the trash',
243
  'A pingback was restored from the trash',
244
  'simple-history'
245
  ),
246
 
247
  'pingback_deleted' => _x(
248
+ 'Deleted a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
249
  'A pingback was deleted',
250
  'simple-history'
251
  ),
252
 
253
  'pingback_edited' => _x(
254
+ 'Edited a pingback to "{comment_post_title}" by {comment_author} ({comment_author_email})',
255
  'A pingback was edited',
256
  'simple-history'
257
  ),
313
  ) // labels
314
 
315
  );
316
+
317
  return $arr_info;
318
 
319
  }
347
  */
348
  add_action( "edit_comment", array( $this, 'on_edit_comment'), 10, 1 );
349
 
350
+
351
  }
352
 
353
  /**
354
  * Get comments context
355
+ *
356
  * @param int $comment_ID
357
  * @return mixed array with context if comment found, false if comment not found
358
  */
403
  $this->infoMessage(
404
  "{$context["comment_type"]}_edited",
405
  $context
406
+ );
407
 
408
  }
409
 
427
  $this->infoMessage(
428
  "{$context["comment_type"]}_deleted",
429
  $context
430
+ );
431
 
432
  }
433
 
441
  $this->infoMessage(
442
  "{$context["comment_type"]}_untrashed",
443
  $context
444
+ );
445
 
446
  }
447
 
452
  * @param string|bool $comment_status The comment status. Possible values include 'hold',
453
  * 'approve', 'spam', 'trash', or false.
454
  * do_action( 'wp_set_comment_status', $comment_id, $comment_status );
455
+ */
456
  public function on_wp_set_comment_status($comment_ID, $comment_status) {
457
 
458
  $context = $this->get_context_for_comment($comment_ID);
497
  $message = "";
498
 
499
  if ( $comment_data->user_id ) {
500
+
501
  // comment was from a logged in user
502
  $message = "user_{$context["comment_type"]}_added";
503
 
504
  } else {
505
+
506
  // comment was from a non-logged in user
507
  $message = "anon_{$context["comment_type"]}_added";
508
  $context["_initiator"] = SimpleLoggerLogInitiators::WEB_USER;
519
  // OR: different messages for different comment types?
520
  /*
521
  if ( isset( $comment_data["comment_type"] ) ) {
522
+
523
+ $comment_type = $comment_data["comment_type"];
524
 
525
  }
526
  */
538
  * and link to comment
539
  */
540
  public function getLogRowPlainTextOutput($row) {
541
+
542
  $message = $row->message;
543
  $context = $row->context;
544
  $message_key = $context["_message_key"];
556
  $edit_post_link = get_edit_post_link( $comment_post_ID );
557
 
558
  if ( $edit_post_link ) {
559
+
560
  $message = str_replace(
561
  '"{comment_post_title}"',
562
  "<a href='{$edit_post_link}'>\"{comment_post_title}\"</a>",
564
  );
565
 
566
  }
567
+
568
  }
569
 
570
 
582
  $message_key = $context["_message_key"];
583
  $output = "";
584
  #print_r($row);exit;
585
+ /*
586
  if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
587
  if ( '0' == $commentdata['comment_approved'] ) { // comment not spam, but not auto-approved
588
  wp_notify_moderator( $comment_ID );
599
  $comment_text = wp_trim_words( $comment_text, 20 );
600
  $comment_text = wpautop( $comment_text );
601
  }
602
+
603
  // Keys to show
604
  $arr_plugin_keys = array();
605
  $comment_type = isset( $context["comment_type"] ) ? $context["comment_type"] : "";
634
 
635
  case "comment";
636
  default;
637
+
638
  $arr_plugin_keys = array(
639
  "comment_status" => _x("Status", "comments logger - detailed output comment status", "simple-history"),
640
  #"comment_type" => _x("Comment type", "comments logger - detailed output comment type", "simple-history"),
656
  $output .= "<table class='SimpleHistoryLogitem__keyValueTable'>";
657
 
658
  foreach ( $arr_plugin_keys as $key => $desc ) {
659
+
660
  switch ( $key ) {
661
 
662
  case "comment_content":
668
  case "comment_author":
669
  case "trackback_author":
670
  case "pingback_author":
671
+
672
  $desc_output = "";
673
 
674
  $desc_output .= esc_html( $context[ $key ] );
675
 
676
  /*
677
  if ( isset( $context["comment_author_email"] ) ) {
678
+
679
  $gravatar_email = $context["comment_author_email"];
680
  $avatar = $this->simpleHistory->get_avatar( $gravatar_email, 14, "blank" );
681
  $desc_output .= "<span class='SimpleCommentsLogger__gravatar'>{$avatar}</span>";
682
+
683
  }
684
  */
685
 
748
 
749
  // Add link to edit comment
750
  $comment_ID = isset( $context["comment_ID"] ) && is_numeric( $context["comment_ID"] ) ? (int) $context["comment_ID"] : false;
751
+
752
  if ( $comment_ID ) {
753
+
754
  // http://site.local/wp/wp-admin/comment.php?action=editcomment&c=
755
  $edit_comment_link = get_edit_comment_link( $comment_ID );
756
+
757
  // Edit link sometimes does not contain comment ID
758
  // Probably because comment has been removed or something
759
  // So only continue if link does not end with "=""
760
  if ( $edit_comment_link && $edit_comment_link[strlen($edit_comment_link)-1] !== "=" ) {
761
+
762
  $output .= sprintf(
763
  '
764
  <tr>
loggers/SimpleLogger.php CHANGED
@@ -46,10 +46,10 @@ class SimpleLogger
46
  public function __construct($simpleHistory) {
47
 
48
  global $wpdb;
49
-
50
  $this->db_table = $wpdb->prefix . SimpleHistory::DBTABLE;
51
  $this->db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
52
-
53
  $this->simpleHistory = $simpleHistory;
54
 
55
  }
@@ -64,13 +64,13 @@ class SimpleLogger
64
 
65
  /**
66
  * Get array with information about this logger
67
- *
68
  * @return array
69
  */
70
  function getInfo() {
71
 
72
  $arr_info = array(
73
-
74
  // The logger slug. Defaulting to the class name is nice and logical I think
75
  "slug" => __CLASS__,
76
 
@@ -78,7 +78,7 @@ class SimpleLogger
78
  // an admin what your logger is used for
79
  "name" => "SimpleLogger",
80
  "description" => "The built in logger for Simple History",
81
-
82
  // Capability required to view log entries from this logger
83
  "capability" => "edit_pages",
84
  "messages" => array(
@@ -133,10 +133,10 @@ class SimpleLogger
133
  * @return string HTML
134
  */
135
  function getLogRowHeaderOutput($row) {
136
-
137
  // HTML for initiator
138
  $initiator_html = "";
139
-
140
  $initiator = $row->initiator;
141
  $context = $row->context;
142
 
@@ -179,7 +179,7 @@ class SimpleLogger
179
  *
180
  * @since 2.0
181
  *
182
- * @param string $format.
183
  */
184
  $$tmpl_initiator_html = apply_filters("simple_history/header_initiator_html_existing_user", $tmpl_initiator_html);
185
 
@@ -193,15 +193,15 @@ class SimpleLogger
193
  );
194
 
195
  } else if ($user_id > 0) {
196
-
197
  // Sender was a user, but user is deleted now
198
  // output all info we have
199
  // _user_id
200
  // _username
201
  // _user_login
202
  // _user_email
203
- $initiator_html .= sprintf(
204
- '<strong class="SimpleHistoryLogitem__inlineDivided">' .
205
  __('Deleted user (had id %1$s, email %2$s, login %3$s)', "simple-history") .
206
  '</strong>',
207
  esc_html( $context["_user_id"] ),
@@ -224,8 +224,8 @@ class SimpleLogger
224
  $iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr( $context["_server_remote_addr"] ));
225
 
226
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__anonUserWithIp'>";
227
- $initiator_html .= sprintf(
228
- __('Anonymous user from %1$s', "simple-history"),
229
  "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_attr( $context["_server_remote_addr"] ) . "</a>"
230
  );
231
  $initiator_html .= "</strong> ";
@@ -260,7 +260,7 @@ class SimpleLogger
260
  *
261
  * @param string $initiator_html
262
  * @param object $row Log row
263
- */
264
  $initiator_html = apply_filters("simple_history/row_header_initiator_output", $initiator_html, $row);
265
 
266
 
@@ -270,7 +270,7 @@ class SimpleLogger
270
  $date_html = "";
271
  $str_when = "";
272
  $date_datetime = new DateTime($row->date);
273
-
274
  /**
275
  * Filter how many seconds as most that can pass since an
276
  * event occured to show "nn minutes ago" (human diff time-format) instead of exact date
@@ -278,7 +278,7 @@ class SimpleLogger
278
  * @since 2.0
279
  *
280
  * @param int $time_ago_max_time Seconds
281
- */
282
  $time_ago_max_time = DAY_IN_SECONDS * 2;
283
  $time_ago_max_time = apply_filters("simple_history/header_time_ago_max_time", $time_ago_max_time);
284
 
@@ -289,7 +289,7 @@ class SimpleLogger
289
  * @since 2.0
290
  *
291
  * @param int $time_ago_max_time Seconds
292
- */
293
  $time_ago_just_now_max_time = 30;
294
  $time_ago_just_now_max_time = apply_filters("simple_history/header_just_now_max_time", $time_ago_just_now_max_time);
295
 
@@ -299,13 +299,13 @@ class SimpleLogger
299
  $str_when = __("Just now", "simple-history");
300
 
301
  } else if ( time() - $date_datetime->getTimestamp() > $time_ago_max_time ) {
302
-
303
  /* translators: Date format for log row header, see http://php.net/date */
304
  $datef = __( 'M j, Y \a\t G:i', "simple-history" );
305
  $str_when = date_i18n( $datef, $date_datetime->getTimestamp() );
306
 
307
  } else {
308
-
309
  // Show "nn minutes ago" when event is xx seconds ago or earlier
310
  $date_human_time_diff = human_time_diff( $date_datetime->getTimestamp(), time() );
311
  /* translators: 1: last modified date and time in human time diff-format */
@@ -355,7 +355,7 @@ class SimpleLogger
355
  *
356
  * @param string $html
357
  * @param object $row Log row
358
- */
359
  $html = apply_filters("simple_history/row_header_output", $html, $row);
360
 
361
  return $html;
@@ -379,7 +379,7 @@ class SimpleLogger
379
  * Jessie James: Edited post "About the company"
380
  */
381
  public function getLogRowPlainTextOutput($row) {
382
-
383
  $message = $row->message;
384
  $message_key = $row->context["_message_key"];
385
 
@@ -393,12 +393,12 @@ class SimpleLogger
393
  } else {
394
 
395
  $message = $this->messages[ $message_key ]["translated_text"];
396
-
397
  }
398
-
399
  $html = $this->interpolate( $message, $row->context );
400
 
401
- // All messages are escaped by default.
402
  // If you need unescaped output override this method
403
  // in your own logger
404
  $html = esc_html($html);
@@ -410,7 +410,7 @@ class SimpleLogger
410
  *
411
  * @param string $html
412
  * @param object $row Log row
413
- */
414
  $html = apply_filters("simple_history/row_plain_text_output", $html, $row);
415
 
416
  return $html;
@@ -442,15 +442,15 @@ class SimpleLogger
442
  $sender_image_html = $this->simpleHistory->get_avatar( $user->user_email, $sender_image_size );
443
 
444
  } else if ($user_id > 0) {
445
-
446
  // Sender was a user, but user is deleted now
447
- $sender_image_html = $this->simpleHistory->get_avatar( "", $sender_image_size );
448
 
449
  } else {
450
 
451
- $sender_image_html = $this->simpleHistory->get_avatar( "", $sender_image_size );
452
 
453
- }
454
 
455
  break;
456
 
@@ -462,7 +462,7 @@ class SimpleLogger
462
  *
463
  * @param string $sender_image_html
464
  * @param object $row Log row
465
- */
466
  $sender_image_html = apply_filters("simple_history/row_sender_image_output", $sender_image_html, $row);
467
 
468
  return $sender_image_html;
@@ -474,7 +474,7 @@ class SimpleLogger
474
  * Example usage is if a user has uploaded an image then a
475
  * thumbnail of that image can bo outputed here
476
  *
477
- * @param object $row
478
  * @return string HTML-formatted output
479
  */
480
  public function getLogRowDetailsOutput($row) {
@@ -488,7 +488,7 @@ class SimpleLogger
488
  *
489
  * @param string $html
490
  * @param object $row Log row
491
- */
492
  $html = apply_filters("simple_history/row_details_output", $html, $row);
493
 
494
  return $html;
@@ -509,7 +509,7 @@ class SimpleLogger
509
  return $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
510
 
511
  }
512
-
513
  /**
514
  * System is unusable.
515
  *
@@ -528,7 +528,7 @@ class SimpleLogger
528
  $message = $this->messages[ $message ]["untranslated_text"];
529
 
530
  $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
531
-
532
  }
533
 
534
 
@@ -542,7 +542,7 @@ class SimpleLogger
542
  public static function alert($message, array $context = array())
543
  {
544
  return $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
545
-
546
  }
547
 
548
  /**
@@ -563,10 +563,10 @@ class SimpleLogger
563
  $message = $this->messages[ $message ]["untranslated_text"];
564
 
565
  $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
566
-
567
  }
568
 
569
-
570
  /**
571
  * Critical conditions.
572
  *
@@ -601,7 +601,7 @@ class SimpleLogger
601
  $message = $this->messages[ $message ]["untranslated_text"];
602
 
603
  $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
604
-
605
  }
606
 
607
 
@@ -617,7 +617,7 @@ class SimpleLogger
617
  {
618
 
619
  return $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
620
-
621
  }
622
 
623
  /**
@@ -639,10 +639,10 @@ class SimpleLogger
639
  $message = $this->messages[ $message ]["untranslated_text"];
640
 
641
  $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
642
-
643
  }
644
 
645
-
646
  /**
647
  * Exceptional occurrences that are not errors.
648
  *
@@ -655,11 +655,11 @@ class SimpleLogger
655
  */
656
  public function warning($message, array $context = array())
657
  {
658
-
659
  return $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
660
 
661
  }
662
-
663
  /**
664
  * Exceptional occurrences that are not errors.
665
  *
@@ -678,7 +678,7 @@ class SimpleLogger
678
  $message = $this->messages[ $message ]["untranslated_text"];
679
 
680
  $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
681
-
682
  }
683
 
684
 
@@ -695,7 +695,7 @@ class SimpleLogger
695
  return $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
696
 
697
  }
698
-
699
  /**
700
  * Normal but significant events.
701
  *
@@ -714,7 +714,7 @@ class SimpleLogger
714
  $message = $this->messages[ $message ]["untranslated_text"];
715
 
716
  $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
717
-
718
  }
719
 
720
 
@@ -731,7 +731,7 @@ class SimpleLogger
731
  {
732
 
733
  return $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
734
-
735
  }
736
 
737
  /**
@@ -754,9 +754,9 @@ class SimpleLogger
754
  $message = $this->messages[ $message ]["untranslated_text"];
755
 
756
  $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
757
-
758
  }
759
-
760
  /**
761
  * Detailed debug information.
762
  *
@@ -768,7 +768,7 @@ class SimpleLogger
768
  {
769
 
770
  return $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
771
-
772
  }
773
 
774
  /**
@@ -789,9 +789,9 @@ class SimpleLogger
789
  $message = $this->messages[ $message ]["untranslated_text"];
790
 
791
  $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
792
-
793
  }
794
-
795
  /**
796
  * Logs with an arbitrary level.
797
  *
@@ -802,7 +802,7 @@ class SimpleLogger
802
  */
803
  public function log($level, $message, array $context = array())
804
  {
805
-
806
  global $wpdb;
807
 
808
  /**
@@ -813,7 +813,7 @@ class SimpleLogger
813
  * @param string $level
814
  * @param string $message
815
  * @param array $context
816
- */
817
  apply_filters("simple_history/log_arguments", $level, $message, $context);
818
 
819
  /* Store date at utc or local time?
@@ -822,7 +822,7 @@ class SimpleLogger
822
  * UNIX timestamp = no timezone = UTC
823
  * anything is better than now() anyway!
824
  * WP seems to use the local time, so I will go with that too I think
825
- * GMT/UTC-time is: date_i18n($timezone_format, false, 'gmt'));
826
  * local time is: date_i18n($timezone_format));
827
  */
828
  $localtime = current_time("mysql", 1);
@@ -835,9 +835,9 @@ class SimpleLogger
835
  * @since 2.0
836
  *
837
  * @param string $db_table
838
- */
839
  $db_table = apply_filters("simple_history/db_table", $db_table);
840
-
841
  $data = array(
842
  "logger" => $this->slug,
843
  "level" => $level,
@@ -853,7 +853,7 @@ class SimpleLogger
853
  }
854
 
855
  // Add occasions id
856
- $occasions_id = null;
857
  if ( isset( $context["_occasionsID"] ) ) {
858
 
859
  // Minimize risk of similar loggers logging same messages and such and resulting in same occasions id
@@ -896,13 +896,13 @@ class SimpleLogger
896
  // Manually set in context
897
  $data["initiator"] = $context["_initiator"];
898
  unset( $context["_initiator"] );
899
-
900
  } else {
901
-
902
  // No initiator set.
903
 
904
  $data["initiator"] = SimpleLoggerLogInitiators::OTHER;
905
-
906
  // Check if user is responsible.
907
  if ( function_exists("wp_get_current_user") ) {
908
 
@@ -936,7 +936,7 @@ class SimpleLogger
936
  * @since 2.0
937
  *
938
  * @param array $data
939
- */
940
  $data = apply_filters("simple_history/log_insert_data", $data);
941
 
942
  // Insert data into db
@@ -949,8 +949,8 @@ class SimpleLogger
949
  $history_inserted_id = null;
950
 
951
  } else {
952
-
953
- $history_inserted_id = $wpdb->insert_id;
954
 
955
  $db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
956
 
@@ -960,7 +960,7 @@ class SimpleLogger
960
  * @since 2.0
961
  *
962
  * @param string $db_table_contexts
963
- */
964
  $db_table_contexts = apply_filters("simple_history/logger_db_table_contexts", $db_table_contexts);
965
 
966
  if ( ! is_array($context) ) {
@@ -969,7 +969,7 @@ class SimpleLogger
969
 
970
  // Append user id to context, if not already added
971
  if ( ! isset( $context["_user_id"] ) ) {
972
-
973
  // wp_get_current_user is ont available early
974
  // http://codex.wordpress.org/Function_Reference/wp_get_current_user
975
  // https://core.trac.wordpress.org/ticket/14024
@@ -986,11 +986,28 @@ class SimpleLogger
986
  }
987
 
988
  }
989
-
990
- // Append remote addr to context
991
  // Good to always have
992
  if ( ! isset( $context["_server_remote_addr"] ) ) {
993
- $context["_server_remote_addr"] = $_SERVER["REMOTE_ADDR"];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
994
  }
995
 
996
  // Append http referer
@@ -1013,7 +1030,7 @@ class SimpleLogger
1013
  }
1014
 
1015
  }
1016
-
1017
  $this->lastInsertID = $history_inserted_id;
1018
 
1019
  // Return $this so we can chain methods
@@ -1023,7 +1040,7 @@ class SimpleLogger
1023
 
1024
  /**
1025
  * Override this to add CSS in <head> for your logger.
1026
- * The CSS that you output will only be outputed
1027
  * on pages where Simple History is used.
1028
  */
1029
  function adminCSS() {
@@ -1040,7 +1057,7 @@ class SimpleLogger
1040
 
1041
  /**
1042
  * Override this to add JavaScript in the footer for your logger.
1043
- * The JS that you output will only be outputed
1044
  * on pages where Simple History is used.
1045
  */
1046
  function adminJS() {
@@ -1052,7 +1069,7 @@ class SimpleLogger
1052
  <?php
1053
  */
1054
  }
1055
-
1056
  }
1057
 
1058
  /**
@@ -1060,7 +1077,7 @@ class SimpleLogger
1060
  */
1061
  class SimpleLoggerLogInitiators
1062
  {
1063
-
1064
  // A wordpress user that at the log event created did exist in the wp database
1065
  // May have been deleted when the log is viewed
1066
  const WP_USER = 'wp_user';
@@ -1108,4 +1125,3 @@ class SimpleLoggerLogLevels
1108
  const INFO = 'info';
1109
  const DEBUG = 'debug';
1110
  }
1111
-
46
  public function __construct($simpleHistory) {
47
 
48
  global $wpdb;
49
+
50
  $this->db_table = $wpdb->prefix . SimpleHistory::DBTABLE;
51
  $this->db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
52
+
53
  $this->simpleHistory = $simpleHistory;
54
 
55
  }
64
 
65
  /**
66
  * Get array with information about this logger
67
+ *
68
  * @return array
69
  */
70
  function getInfo() {
71
 
72
  $arr_info = array(
73
+
74
  // The logger slug. Defaulting to the class name is nice and logical I think
75
  "slug" => __CLASS__,
76
 
78
  // an admin what your logger is used for
79
  "name" => "SimpleLogger",
80
  "description" => "The built in logger for Simple History",
81
+
82
  // Capability required to view log entries from this logger
83
  "capability" => "edit_pages",
84
  "messages" => array(
133
  * @return string HTML
134
  */
135
  function getLogRowHeaderOutput($row) {
136
+
137
  // HTML for initiator
138
  $initiator_html = "";
139
+
140
  $initiator = $row->initiator;
141
  $context = $row->context;
142
 
179
  *
180
  * @since 2.0
181
  *
182
+ * @param string $format.
183
  */
184
  $$tmpl_initiator_html = apply_filters("simple_history/header_initiator_html_existing_user", $tmpl_initiator_html);
185
 
193
  );
194
 
195
  } else if ($user_id > 0) {
196
+
197
  // Sender was a user, but user is deleted now
198
  // output all info we have
199
  // _user_id
200
  // _username
201
  // _user_login
202
  // _user_email
203
+ $initiator_html .= sprintf(
204
+ '<strong class="SimpleHistoryLogitem__inlineDivided">' .
205
  __('Deleted user (had id %1$s, email %2$s, login %3$s)', "simple-history") .
206
  '</strong>',
207
  esc_html( $context["_user_id"] ),
224
  $iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr( $context["_server_remote_addr"] ));
225
 
226
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__anonUserWithIp'>";
227
+ $initiator_html .= sprintf(
228
+ __('Anonymous user from %1$s', "simple-history"),
229
  "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_attr( $context["_server_remote_addr"] ) . "</a>"
230
  );
231
  $initiator_html .= "</strong> ";
260
  *
261
  * @param string $initiator_html
262
  * @param object $row Log row
263
+ */
264
  $initiator_html = apply_filters("simple_history/row_header_initiator_output", $initiator_html, $row);
265
 
266
 
270
  $date_html = "";
271
  $str_when = "";
272
  $date_datetime = new DateTime($row->date);
273
+
274
  /**
275
  * Filter how many seconds as most that can pass since an
276
  * event occured to show "nn minutes ago" (human diff time-format) instead of exact date
278
  * @since 2.0
279
  *
280
  * @param int $time_ago_max_time Seconds
281
+ */
282
  $time_ago_max_time = DAY_IN_SECONDS * 2;
283
  $time_ago_max_time = apply_filters("simple_history/header_time_ago_max_time", $time_ago_max_time);
284
 
289
  * @since 2.0
290
  *
291
  * @param int $time_ago_max_time Seconds
292
+ */
293
  $time_ago_just_now_max_time = 30;
294
  $time_ago_just_now_max_time = apply_filters("simple_history/header_just_now_max_time", $time_ago_just_now_max_time);
295
 
299
  $str_when = __("Just now", "simple-history");
300
 
301
  } else if ( time() - $date_datetime->getTimestamp() > $time_ago_max_time ) {
302
+
303
  /* translators: Date format for log row header, see http://php.net/date */
304
  $datef = __( 'M j, Y \a\t G:i', "simple-history" );
305
  $str_when = date_i18n( $datef, $date_datetime->getTimestamp() );
306
 
307
  } else {
308
+
309
  // Show "nn minutes ago" when event is xx seconds ago or earlier
310
  $date_human_time_diff = human_time_diff( $date_datetime->getTimestamp(), time() );
311
  /* translators: 1: last modified date and time in human time diff-format */
355
  *
356
  * @param string $html
357
  * @param object $row Log row
358
+ */
359
  $html = apply_filters("simple_history/row_header_output", $html, $row);
360
 
361
  return $html;
379
  * Jessie James: Edited post "About the company"
380
  */
381
  public function getLogRowPlainTextOutput($row) {
382
+
383
  $message = $row->message;
384
  $message_key = $row->context["_message_key"];
385
 
393
  } else {
394
 
395
  $message = $this->messages[ $message_key ]["translated_text"];
396
+
397
  }
398
+
399
  $html = $this->interpolate( $message, $row->context );
400
 
401
+ // All messages are escaped by default.
402
  // If you need unescaped output override this method
403
  // in your own logger
404
  $html = esc_html($html);
410
  *
411
  * @param string $html
412
  * @param object $row Log row
413
+ */
414
  $html = apply_filters("simple_history/row_plain_text_output", $html, $row);
415
 
416
  return $html;
442
  $sender_image_html = $this->simpleHistory->get_avatar( $user->user_email, $sender_image_size );
443
 
444
  } else if ($user_id > 0) {
445
+
446
  // Sender was a user, but user is deleted now
447
+ $sender_image_html = $this->simpleHistory->get_avatar( "", $sender_image_size );
448
 
449
  } else {
450
 
451
+ $sender_image_html = $this->simpleHistory->get_avatar( "", $sender_image_size );
452
 
453
+ }
454
 
455
  break;
456
 
462
  *
463
  * @param string $sender_image_html
464
  * @param object $row Log row
465
+ */
466
  $sender_image_html = apply_filters("simple_history/row_sender_image_output", $sender_image_html, $row);
467
 
468
  return $sender_image_html;
474
  * Example usage is if a user has uploaded an image then a
475
  * thumbnail of that image can bo outputed here
476
  *
477
+ * @param object $row
478
  * @return string HTML-formatted output
479
  */
480
  public function getLogRowDetailsOutput($row) {
488
  *
489
  * @param string $html
490
  * @param object $row Log row
491
+ */
492
  $html = apply_filters("simple_history/row_details_output", $html, $row);
493
 
494
  return $html;
509
  return $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
510
 
511
  }
512
+
513
  /**
514
  * System is unusable.
515
  *
528
  $message = $this->messages[ $message ]["untranslated_text"];
529
 
530
  $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
531
+
532
  }
533
 
534
 
542
  public static function alert($message, array $context = array())
543
  {
544
  return $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
545
+
546
  }
547
 
548
  /**
563
  $message = $this->messages[ $message ]["untranslated_text"];
564
 
565
  $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
566
+
567
  }
568
 
569
+
570
  /**
571
  * Critical conditions.
572
  *
601
  $message = $this->messages[ $message ]["untranslated_text"];
602
 
603
  $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
604
+
605
  }
606
 
607
 
617
  {
618
 
619
  return $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
620
+
621
  }
622
 
623
  /**
639
  $message = $this->messages[ $message ]["untranslated_text"];
640
 
641
  $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
642
+
643
  }
644
 
645
+
646
  /**
647
  * Exceptional occurrences that are not errors.
648
  *
655
  */
656
  public function warning($message, array $context = array())
657
  {
658
+
659
  return $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
660
 
661
  }
662
+
663
  /**
664
  * Exceptional occurrences that are not errors.
665
  *
678
  $message = $this->messages[ $message ]["untranslated_text"];
679
 
680
  $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
681
+
682
  }
683
 
684
 
695
  return $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
696
 
697
  }
698
+
699
  /**
700
  * Normal but significant events.
701
  *
714
  $message = $this->messages[ $message ]["untranslated_text"];
715
 
716
  $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
717
+
718
  }
719
 
720
 
731
  {
732
 
733
  return $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
734
+
735
  }
736
 
737
  /**
754
  $message = $this->messages[ $message ]["untranslated_text"];
755
 
756
  $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
757
+
758
  }
759
+
760
  /**
761
  * Detailed debug information.
762
  *
768
  {
769
 
770
  return $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
771
+
772
  }
773
 
774
  /**
789
  $message = $this->messages[ $message ]["untranslated_text"];
790
 
791
  $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
792
+
793
  }
794
+
795
  /**
796
  * Logs with an arbitrary level.
797
  *
802
  */
803
  public function log($level, $message, array $context = array())
804
  {
805
+
806
  global $wpdb;
807
 
808
  /**
813
  * @param string $level
814
  * @param string $message
815
  * @param array $context
816
+ */
817
  apply_filters("simple_history/log_arguments", $level, $message, $context);
818
 
819
  /* Store date at utc or local time?
822
  * UNIX timestamp = no timezone = UTC
823
  * anything is better than now() anyway!
824
  * WP seems to use the local time, so I will go with that too I think
825
+ * GMT/UTC-time is: date_i18n($timezone_format, false, 'gmt'));
826
  * local time is: date_i18n($timezone_format));
827
  */
828
  $localtime = current_time("mysql", 1);
835
  * @since 2.0
836
  *
837
  * @param string $db_table
838
+ */
839
  $db_table = apply_filters("simple_history/db_table", $db_table);
840
+
841
  $data = array(
842
  "logger" => $this->slug,
843
  "level" => $level,
853
  }
854
 
855
  // Add occasions id
856
+ $occasions_id = null;
857
  if ( isset( $context["_occasionsID"] ) ) {
858
 
859
  // Minimize risk of similar loggers logging same messages and such and resulting in same occasions id
896
  // Manually set in context
897
  $data["initiator"] = $context["_initiator"];
898
  unset( $context["_initiator"] );
899
+
900
  } else {
901
+
902
  // No initiator set.
903
 
904
  $data["initiator"] = SimpleLoggerLogInitiators::OTHER;
905
+
906
  // Check if user is responsible.
907
  if ( function_exists("wp_get_current_user") ) {
908
 
936
  * @since 2.0
937
  *
938
  * @param array $data
939
+ */
940
  $data = apply_filters("simple_history/log_insert_data", $data);
941
 
942
  // Insert data into db
949
  $history_inserted_id = null;
950
 
951
  } else {
952
+
953
+ $history_inserted_id = $wpdb->insert_id;
954
 
955
  $db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
956
 
960
  * @since 2.0
961
  *
962
  * @param string $db_table_contexts
963
+ */
964
  $db_table_contexts = apply_filters("simple_history/logger_db_table_contexts", $db_table_contexts);
965
 
966
  if ( ! is_array($context) ) {
969
 
970
  // Append user id to context, if not already added
971
  if ( ! isset( $context["_user_id"] ) ) {
972
+
973
  // wp_get_current_user is ont available early
974
  // http://codex.wordpress.org/Function_Reference/wp_get_current_user
975
  // https://core.trac.wordpress.org/ticket/14024
986
  }
987
 
988
  }
989
+
990
+ // Add remote addr to context
991
  // Good to always have
992
  if ( ! isset( $context["_server_remote_addr"] ) ) {
993
+
994
+ // If web server is behind a load balancer then the ip address will always be the same
995
+ // apache_request_headers
996
+ // See bug report: https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr?replies=1#post-6422981
997
+ if ( function_exists("getallheaders") ) {
998
+
999
+ $all_headers = getallheaders();
1000
+ if ( ! empty( $all_headers["X-Forwarded-For"] ) ) {
1001
+ $context["_server_remote_addr"] = $all_headers["X-Forwarded-For"];
1002
+ }
1003
+
1004
+ }
1005
+
1006
+ // Still no remote addr? Then simply add remote addr
1007
+ if ( empty( $context["_server_remote_addr"] ) ) {
1008
+ $context["_server_remote_addr"] = $_SERVER["REMOTE_ADDR"];
1009
+ }
1010
+
1011
  }
1012
 
1013
  // Append http referer
1030
  }
1031
 
1032
  }
1033
+
1034
  $this->lastInsertID = $history_inserted_id;
1035
 
1036
  // Return $this so we can chain methods
1040
 
1041
  /**
1042
  * Override this to add CSS in <head> for your logger.
1043
+ * The CSS that you output will only be outputed
1044
  * on pages where Simple History is used.
1045
  */
1046
  function adminCSS() {
1057
 
1058
  /**
1059
  * Override this to add JavaScript in the footer for your logger.
1060
+ * The JS that you output will only be outputed
1061
  * on pages where Simple History is used.
1062
  */
1063
  function adminJS() {
1069
  <?php
1070
  */
1071
  }
1072
+
1073
  }
1074
 
1075
  /**
1077
  */
1078
  class SimpleLoggerLogInitiators
1079
  {
1080
+
1081
  // A wordpress user that at the log event created did exist in the wp database
1082
  // May have been deleted when the log is viewed
1083
  const WP_USER = 'wp_user';
1125
  const INFO = 'info';
1126
  const DEBUG = 'debug';
1127
  }
 
loggers/SimpleUserLogger.php CHANGED
@@ -385,7 +385,8 @@ class SimpleUserLogger extends SimpleLogger
385
  "login_user_email" => $user->user_email,
386
  "login_user_login" => $user->user_login,
387
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
388
- "_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
 
389
  );
390
 
391
  /**
@@ -410,7 +411,7 @@ class SimpleUserLogger extends SimpleLogger
410
 
411
  }
412
 
413
-
414
  /**
415
  * Attempt to login to user that does not exist
416
  */
@@ -433,7 +434,11 @@ class SimpleUserLogger extends SimpleLogger
433
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
434
  // count all failed logins to unknown users as the same occasions,
435
  // to prevent log being flooded with login/hack attempts
436
- "_occasionsID" => __CLASS__ . '/' . __FUNCTION__
 
 
 
 
437
  );
438
 
439
  /**
@@ -456,7 +461,6 @@ class SimpleUserLogger extends SimpleLogger
456
 
457
  return $user;
458
 
459
-
460
  }
461
 
462
  }
385
  "login_user_email" => $user->user_email,
386
  "login_user_login" => $user->user_login,
387
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
388
+ //"_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
389
+ "_occasionsID" => __CLASS__ . '/failed_user_login'
390
  );
391
 
392
  /**
411
 
412
  }
413
 
414
+
415
  /**
416
  * Attempt to login to user that does not exist
417
  */
434
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
435
  // count all failed logins to unknown users as the same occasions,
436
  // to prevent log being flooded with login/hack attempts
437
+ // "_occasionsID" => __CLASS__ . '/' . __FUNCTION__
438
+ // Use same occasionsID as for failed login attempts to existing users,
439
+ // because log can flood otherwise if hacker is rotating existing and non-existing usernames
440
+ //"_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
441
+ "_occasionsID" => __CLASS__ . '/failed_user_login'
442
  );
443
 
444
  /**
461
 
462
  return $user;
463
 
 
464
  }
465
 
466
  }
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://eskapism.se/sida/donate/
4
  Tags: history, log, changes, changelog, audit, trail, pages, attachments, users, cms, dashboard, admin, syslog, feed, activity, stream
5
  Requires at least: 3.6.0
6
  Tested up to: 4.1
7
- Stable tag: 2.0.15
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
@@ -110,6 +110,13 @@ initiated by a specific user.
110
 
111
  == Changelog ==
112
 
 
 
 
 
 
 
 
113
  = 2.0.15 (January 2015) =
114
 
115
  - Fixed: Widget changes where not always translated.
4
  Tags: history, log, changes, changelog, audit, trail, pages, attachments, users, cms, dashboard, admin, syslog, feed, activity, stream
5
  Requires at least: 3.6.0
6
  Tested up to: 4.1
7
+ Stable tag: 2.0.16
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
110
 
111
  == Changelog ==
112
 
113
+ = 2.0.16 (January 2015) =
114
+
115
+ - Fixed: Use the [X-Forwarded-For header](http://en.wikipedia.org/wiki/X-Forwarded-For), if it is set, to determine remote IP address. Should now correctly store IP addresses for servers behind load balancers or for clients going through proxies. Fixes https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr.
116
+ - Changed: Failed login attempts from unknown and known users are now grouped together. This change was made because a hacker could make many login attempts to a site and rotate the logins, so they would try with both existing and non existing user names, which would make the log flood with failed login attempts.
117
+ - Changed: use "n similar events" instead of "n more", to more cleary mark that the grouped events are not necessary exactly the same kind.
118
+ - Changed: Quick stats text changed, to also include other sources. Previous behavior was to only include events from WordPress users, but now also events from anonymous users and WordPress (like from WP-Cron) are included.
119
+
120
  = 2.0.15 (January 2015) =
121
 
122
  - Fixed: Widget changes where not always translated.